Flutter App

This commit is contained in:
2025-12-14 21:53:46 -05:00
parent 383e2e07bd
commit 7ed7a2470d
108 changed files with 7077 additions and 130 deletions

View File

@@ -18,17 +18,20 @@ This is a monorepo-style project with separate backend and frontend applications
│ ├── Dockerfile
│ └── package.json
├── electron-app/ # Electron + React frontend
│ ├── src/
│ │ ├── main/ # Electron main process
│ │ ├── renderer/ # React UI components
│ │ │ ├── components/
│ │ │ ├── pages/
│ │ │ ├── hooks/
│ │ │ └── store/ # Zustand/Recoil state
│ └── shared/ # IPC types & shared code
│ ├── tests/
│ └── package.json
├── flutter_app/ # Flutter cross-platform app
│ ├── lib/
│ │ ├── models/ # Data models (PriceData, PriceAlert)
│ │ ├── providers/ # State management (Provider)
│ │ ├── services/ # API, WebSocket, Storage services
│ │ ├── screens/ # UI screens (HomeScreen)
│ │ ├── widgets/ # Reusable UI components
│ │ └── main.dart # App entry point
├── assets/ # Images, fonts, etc.
│ ├── .env # Environment configuration
│ └── pubspec.yaml # Dependencies
├── electron-app/ # Legacy Electron app (deprecated)
│ └── ... # Kept for reference
├── shared/ # Shared TypeScript types/interfaces
│ └── types/
@@ -47,10 +50,11 @@ This is a monorepo-style project with separate backend and frontend applications
- API layer is stateless for horizontal scaling
- TimescaleDB handles time-series data efficiently
- **Frontend**: Component-based React architecture
- Sandboxed renderer process for security
- Secure IPC messaging between main and renderer
- **Frontend**: Flutter widget-based architecture
- Provider pattern for state management
- Service layer for API/WebSocket communication
- Client-side alert evaluation logic
- Cross-platform: Windows, macOS, Linux, Android, iOS
- **Database Schema**: Three main tables
- `raw_vendor_prices`: Individual vendor listings
@@ -59,8 +63,9 @@ This is a monorepo-style project with separate backend and frontend applications
## Key Conventions
- All code in TypeScript with strict type checking
- Backend: TypeScript with strict type checking
- Frontend: Dart with null safety
- Scrapers include retry logic (3 attempts) and error handling
- WebSocket auto-reconnect logic in Electron app
- WebSocket auto-reconnect logic in Flutter app
- Signed binaries for all platform distributions
- No remote code evaluation in Electron (security)
- Flutter: No eval or dynamic code execution (security)