A modern, theme-able dashboard application for Raspberry Pi built with React and Vite. Mainframe Dash provides a comprehensive interface for system monitoring, media control, network management, and more with multiple retro and modern theme options.
- System Stats - Real-time CPU, memory, and disk usage monitoring
- System Time - Current time display with timezone support
- System Control - Execute system commands and manage system operations
- Network Radar - Visualize connected devices and network topology
- Bluetooth Manager - Manage Bluetooth connections and devices
- Local Devices - Discover and interact with local network devices
- Weather - Real-time weather information and forecasts
- Global News - News feeds from various sources
- Orbital Tracking - Track satellites and orbital mechanics (ISS, etc.)
- Media Deck - Media player and multimedia management
- Agenda Sync - Calendar and schedule synchronization
- Shortcuts - Quick access to frequently used actions
- Data Vault - Secure data storage and management interface
Switch between multiple retro and modern themes:
- 🪟 Windows 95 - Classic Windows 95 aesthetic
- 🌐 Cyberpunk - Futuristic cyberpunk interface
- 🎮 RobCo Terminal - Fallout series inspired design
- 🎨 Material You - Modern Material Design
- Node.js (v16 or higher)
- npm or yarn package manager
- A backend API server (default configured for Raspberry Pi at
192.168.51.178:5000)
- Clone the repository:
git clone <repository-url>
cd mainframe-dash- Install dependencies:
npm install- Start the development server:
npm run devThe application will be available at http://localhost:5173 by default.
src/
├── components/ # Dashboard component modules
│ ├── AgendaSync.jsx
│ ├── BluetoothManager.jsx
│ ├── DataVault.jsx
│ ├── GlobalNews.jsx
│ ├── LocalDevices.jsx
│ ├── MediaDeck.jsx
│ ├── NetworkRadar.jsx
│ ├── OrbitalTracking.jsx
│ ├── Shortcuts.jsx
│ ├── SysStats.jsx
│ ├── SystemControl.jsx
│ ├── SysTime.jsx
│ └── Weather.jsx
├── App.jsx # Main application component
├── App.css # Application styles
├── ThemeContext.jsx # Theme provider and context
├── main.jsx # Entry point
└── index.css # Global styles
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint to check code quality
The application is configured to proxy API requests to a backend server. Edit vite.config.js to change the backend URL:
proxy: {
'/api': {
target: 'http://YOUR_PI_IP:5000',
changeOrigin: true,
secure: false,
}
}The development server is configured to be accessible from other devices on your network. Access it using your machine's IP address instead of localhost.
The application uses React Context for theme management. Themes can be switched at runtime using the theme selector dropdown in the top-right corner of the dashboard.
To customize or add new themes, edit ThemeContext.jsx and update the corresponding CSS in App.css.
All components are designed to work with a backend API server. API endpoints should be prefixed with /api/ to take advantage of the Vite proxy configuration.
The dashboard is designed to work on various screen sizes, from tablets to large desktop displays, making it perfect for different Pi-based installations.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- This project is configured for Raspberry Pi deployment
- Backend API integration required for full functionality
- Ensure the backend server is running before launching the dashboard
- Theme selection is persisted in the UI but may need backend support for persistence
Backend connection issues:
- Verify the backend server is running on the configured IP and port
- Check network connectivity between your device and the Pi
- Review browser console for CORS-related errors
Theme not loading:
- Clear browser cache and reload the page
- Check that CSS files are properly bundled in the build
Component data not showing:
- Ensure backend API endpoints match component expectations
- Check browser network tab for failed API requests
- Verify API response format matches component requirements