A modern, responsive React-based GUI for the BitQuan cryptocurrency mining and wallet management application.
- Dashboard: Real-time mining statistics and balance overview
- Block Progress: Visual representation of mining progress
- Rigs Management: Monitor and control mining rigs/nodes
- Wallet: PQC (Post-Quantum Cryptography) secure wallet interface
- Statistics: Detailed mining performance analytics
- Alerts: Real-time notifications and alerts
- Settings: Network configuration and appearance customization
- Frontend: React 18 with TypeScript
- Styling: Tailwind CSS with dark mode support
- Build Tool: Vite
- Desktop App: Tauri (Rust backend)
- Icons: Custom SVG icon components
- Node.js 16+
- npm or yarn
- Rust (for Tauri backend)
- Install dependencies:
npm install- Run development server:
npm run dev- For Tauri development:
npm run tauri devnpm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run typecheck- Run TypeScript type checkingnpm run tauri dev- Run Tauri app in development modenpm run tauri build- Build Tauri app for production
bitquan-gui/
├── components/ # Reusable React components
│ ├── icons/ # SVG icon components
│ ├── Card.tsx # Card container component
│ └── ToggleSwitch.tsx # Toggle switch component
├── pages/ # Main application pages
│ ├── DashboardPage.tsx
│ ├── HalvingPage.tsx
│ ├── RigsPage.tsx
│ ├── SettingsPage.tsx
│ ├── StatisticsPage.tsx
│ └── AlertsPage.tsx
├── src/
│ ├── api/ # API layer for Tauri commands
│ └── pages/ # Wallet-specific components
├── src-tauri/ # Rust backend code
├── App.tsx # Main application component
├── types.ts # TypeScript type definitions
└── index.css # Global styles and Tailwind imports
The application is fully responsive and optimized for:
- Mobile devices (320px+)
- Tablets (768px+)
- Desktop screens (1024px+)
Key responsive features:
- Adaptive navigation (horizontal on mobile, vertical on desktop)
- Flexible grid layouts
- Touch-friendly interactions
- Optimized tables with horizontal scrolling
The application supports both light and dark themes:
- Toggle via Settings page
- System preference detection
- Persistent theme selection
- Smooth transitions between themes
A versatile container component with:
- Consistent padding and spacing
- Hover effects and shadows
- Dark mode support
- Customizable className prop
Accessible toggle switch with:
- Smooth animations
- Keyboard navigation
- ARIA labels
- Hover and focus states
Custom SVG icons for:
- Dashboard navigation
- Status indicators
- Action buttons
- All icons are optimized for different sizes
The application uses React's built-in state management:
useStatefor local component stateuseEffectfor side effects and data fetching- Context API for global theme state
The frontend communicates with the Rust backend via Tauri's invoke system:
- Type-safe API calls
- Error handling
- Loading states
- Async/await patterns
- Code splitting with dynamic imports
- Memoized components with React.memo
- Optimized re-renders
- Efficient event handlers
- Lazy loading where appropriate
- Semantic HTML elements
- ARIA labels and roles
- Keyboard navigation support
- Focus management
- Screen reader compatibility
- High contrast ratios
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Mobile browsers (iOS Safari, Android Chrome)
- Follow the existing code style
- Use TypeScript for all new code
- Ensure responsive design
- Test on multiple screen sizes
- Check accessibility
- Run type checking before commits
- Use the
dev.shscript for quick setup - Run
npm run typecheckfrequently - Test dark mode changes
- Check mobile responsiveness
- Use React DevTools for debugging
- Test Tauri commands separately