Files
rmtPocketWatcher/.kiro/steering/structure.md
2025-12-14 21:53:46 -05:00

2.7 KiB

Project Structure

This is a monorepo-style project with separate backend and frontend applications.

Expected Organization

/
├── backend/                 # TypeScript backend server
│   ├── src/
│   │   ├── scrapers/       # Playwright scraping modules
│   │   ├── api/            # REST endpoints
│   │   ├── websocket/      # WebSocket handlers
│   │   ├── database/       # Prisma/Drizzle schema & migrations
│   │   ├── services/       # Business logic (price index calculation)
│   │   └── utils/          # Shared utilities
│   ├── tests/
│   ├── Dockerfile
│   └── 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/
│
├── .kiro/                  # Kiro AI assistant configuration
│   └── steering/           # Project guidance documents
│
├── PRD.md                  # Product Requirements Document
└── README.md

Architecture Patterns

  • Backend: Modular service-oriented architecture

    • Scrapers are isolated, containerized services
    • API layer is stateless for horizontal scaling
    • TimescaleDB handles time-series data efficiently
  • 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
    • price_index: Computed median index values
    • scrape_log: Monitoring and debugging

Key Conventions

  • 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 Flutter app
  • Signed binaries for all platform distributions
  • Flutter: No eval or dynamic code execution (security)