Modern minimalist web companion for the NOTCH Arduino console. Connect via USB, manage settings, install games, and view statistics.
- USB Connection: Web Serial API for direct browser-to-console communication
- Settings Management: Adjust joystick sensitivity, LCD brightness, and buzzer volume
- Console Info: View firmware version, memory usage, and device details
- Statistics: Track play time and game statistics
- Game Installation: Install games via bytecode (coming in Phase 3)
The Web Serial API is only available in:
- Google Chrome (version 89+)
- Microsoft Edge (version 89+)
Note: Firefox and Safari do not currently support Web Serial API.
cd the-companion-app
npm installnpm run devThis will start the Vite development server at http://localhost:3000
- Upload the NOTCH firmware to your Arduino Uno
- Connect the Arduino via USB
- Open the companion app in Chrome/Edge
- Click "Connect Console"
- Select the correct serial port (usually something like "USB Serial Device")
- Wait for the handshake to complete
the-companion-app/
├── src/
│ ├── core/ # Core functionality
│ │ ├── SerialManager.js # Web Serial API wrapper
│ │ ├── ProtocolHandler.js # NOTCH protocol commands
│ │ └── StateManager.js # Application state
│ ├── components/ # UI components
│ │ ├── ConnectionPanel.js # USB connection UI
│ │ ├── Dashboard.js # Main dashboard
│ │ └── SettingsPanel.js # Settings management
│ ├── games/ # Game definitions
│ ├── style.css # Styling
│ └── main.js # Application entry point
├── public/ # Static assets
├── index.html # Main HTML
├── vite.config.js # Vite configuration
└── package.json # Dependencies
The app communicates with NOTCH using a simple text-based protocol:
COMMAND [PAYLOAD]\n
OK [DATA]\n
ERROR [MESSAGE]\n
HANDSHAKE- Initial connection handshakeGET_INFO- Get firmware and device informationPING- Test connection (responds with PONG)GET_SETTINGS- Get current console settingsSET_JOY_SENS [value]- Set joystick sensitivitySET_LCD_BRIGHTNESS [value]- Set LCD brightnessSET_BUZZER_VOLUME [value]- Set buzzer volumeSAVE_SETTINGS- Save settings to EEPROMGET_STATS- Get console statisticsGET_MEMORY- Get memory usage information
npm run buildThis creates a dist/ folder with optimized static files ready for deployment.
- Push code to GitHub
- Import project in Vercel
- Deploy automatically
- Configure custom domain:
the-companion.app
The built dist/ folder can be deployed to:
- Netlify
- GitHub Pages
- Any static file hosting service
- Serial communication working
- Connection UI complete
- Settings sync functional
- Dashboard displaying console info
- Bytecode encoder
- Game installer component
- EEPROM game storage
- Menu system on Arduino
- Additional games
- Statistics tracking
- Improved UI/UX
- Documentation
- Make sure you're using Chrome or Edge browser (version 89+)
- Web Serial API requires HTTPS (development on localhost is OK)
- Check that Arduino is properly connected via USB
- Make sure correct firmware is uploaded
- Try a different USB port
- Check serial port isn't already open in another program
- Arduino may need time to reset after USB connection
- Wait 2-3 seconds after connecting before clicking "Connect"
- Try disconnecting and reconnecting the USB cable
MIT License - Created by _dev for NOTCH project
Made with I w I