A complete SNES launcher developed with React, Electron, and Node.js, offering a modern interface to manage and play Super Nintendo ROMs.
A modern launcher to relive the nostalgia of SNES games!
- Intuitive Dashboard: Modern interface with statistics and quick access to games
- Game Library: Complete ROM collection management
- ROM Upload: Drag-and-drop system to easily add games
- Complete Metadata: Name, description, images, and game information
- Favorites System: Mark your favorite games
- Filters and Search: Quickly find games
- Integrated Emulator: Play directly in the application using EmulatorJS
- Advanced Settings: Customize your experience
- Responsive design with gradients and glassmorphism
- Smooth animations with Framer Motion
- Elegant dark theme
- Reusable and modular components
- Collapsible sidebar
- Interactive game cards
- Frontend: React 18, Styled Components, Framer Motion, Electron
- Backend: Node.js, Express, SQLite
- Upload: Multer, React Dropzone
- Icons: React Icons
- Notifications: React Hot Toast
- Emulation: EmulatorJS
- Node.js 16+
- npm or yarn
# Clone the repository
git clone <your-repository>
cd snes-launcher
# Install all dependencies
npm run install-all
# Start development
npm run devcd backend
npm install
npm run devcd frontend
npm install
npm run electron-devsnes-launcher/
├── backend/ # Node.js API + SQLite
│ ├── server.js # Express server
│ ├── database.js # SQLite configuration
│ ├── package.json # Backend dependencies
│ └── uploads/ # ROMs and images
│ ├── roms/ # SNES ROMs
│ └── images/ # Game images
├── frontend/ # React + Electron
│ ├── public/ # Public files
│ │ ├── electron.js # Electron main process
│ │ └── preload.js # Preload script
│ ├── src/ # React code
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Application pages
│ │ ├── services/ # API calls
│ │ └── App.js # Main component
│ └── package.json # Frontend dependencies
├── package.json # Main scripts
└── README.md # This file
- View your game statistics
- Access recent and favorite games
- Quickly add new games
- Click "Add Game"
- Drag ROMs (.smc, .sfc, .fig) or click to select
- Add optional images
- Fill in name and description
- Save the game
- View all your games
- Use filters (All, Favorites, Recent, Most Played)
- Sort by title, date, etc.
- Search by name or description
- Toggle between grid or list view
- Click any game to open the emulator
- Use on-screen controls or keyboard
- Configure volume and screen ratio
- Save and load states
- Adjust emulator settings
- Customize the interface
- Manage file folders
- Export/import settings
- Arrow Keys: Move character
- Z: Jump
- X: Run/Secondary action
- Enter: Pause/Unpause
- Esc: Settings menu
- Space: Play/Pause
- Click: Interact with elements
- Drag & Drop: Add ROMs and images
- Scroll: Navigate the library
- Hover: View additional information
- Core: Snes9x or bsnes
- Volume: 0-100%
- Aspect Ratio: 4:3, 16:9, or Stretch
- Auto Save: Enable/Disable
- Language: Portuguese, English, Spanish
- Theme: Dark (default)
- Animations: Enable/Disable
- FPS: Show/Hide
- ROMs Folder: Customize location
- Screenshots: Screenshot folder
- Updates: Automatic
- Minimize: To system tray
# Full development
npm run dev
# Backend only
npm run backend
# Frontend only
cd frontend && npm run electron-dev
# Production build
npm run build
# Install all dependencies
npm run install-allGET /api/games- List all gamesGET /api/games/:id- Get game by IDPOST /api/games- Create new gamePUT /api/games/:id- Update gameDELETE /api/games/:id- Delete gamePOST /api/games/:id/play- Increment play counterPOST /api/games/:id/favorite- Toggle favorite
GET /api/roms/:filename- Serve ROM for emulatorGET /uploads/images/:filename- Serve images
- Achievement system
- Multiplayer mode
- Cloud save
- Customizable themes
- Fork the project
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for more details.
- EmulatorJS - Web emulator
- React - UI library
- Electron - Desktop framework
- Styled Components - CSS-in-JS
- Framer Motion - Animations
Developed with ❤️ by Breno Ribeiro



