How nus-mtechse-hawkerflow/hawkerflow-service-hawker works
HawkerFlow’s Hawker service is a FastAPI API for registering hawkers and stalls, publishing stall menus, and looking up a hawker’s stall. Requests enter through the registered routes, pass through the service layer, and reach the repository and shared database; startup configures that runtime and creates the tables. The graph preserves the documented PostgreSQL/SQLite driver options and health endpoint. Some driver selection and health-route internals were not excerpted, so uncertain links are omitted.
Main entry points: lifespan.py Startup lifecycle · hawker_repository.py Hawker repository · hawker_routes.py Hawker routes · hawker_service.py Hawker service
Components 21
API runtime
- FastAPI app
src/main.py - Hawker routes
src/endpoints/hawker_routes.py - Health route
src/endpoints/health_routes.py
Hawker domain
- Hawker request model
src/models/hawker_details.py - Hawker service
src/hawker_service/hawker_service.py
Persistence
- Hawker repository
src/repository/hawker_repository.py - Stalls table
src/entities/stalls.py - Stall menu table
src/entities/stall_menu.py - Stall owner table
src/entities/stall_owner.py - DB session
src/session/db_session.py - Database factory
src/factory/database_factory.py - Driver factory
src/factory/driver_factory.py - Database driver base
src/drivers/driver.py - PostgreSQL driver
src/drivers/postgres_driver.py - SQLite driver
src/drivers/sqlite_driver.py
Configuration and startup
- App configuration
src/configurations/app_config.py - Service settings
resources/config.yml - Startup lifecycle
src/lifecycle/lifespan.py
Other components
- Hawker owner
- Diner
- Shared hawkerflow database
Connections 28
- FastAPI app → Hawker routes: registers
src/main.py - FastAPI app → Health route: registers
src/main.py - FastAPI app → Startup lifecycle: configures startup
src/main.py - Hawker owner → Hawker routes: submits requests
README.md - Diner → Hawker routes: lists stalls
README.md - Hawker routes → Hawker request model: accepts payload
src/endpoints/hawker_routes.py - Hawker routes → Hawker service: calls
src/endpoints/hawker_routes.py - Startup lifecycle → App configuration: loads
src/lifecycle/lifespan.py - App configuration → Service settings: reads settings
README.md - Startup lifecycle → DB session: creates
src/lifecycle/lifespan.py - Startup lifecycle → Hawker repository: creates
src/lifecycle/lifespan.py - Startup lifecycle → Hawker service: creates
src/lifecycle/lifespan.py - Startup lifecycle → Stalls table: creates tables
src/lifecycle/lifespan.py - Startup lifecycle → Stall menu table: creates tables
src/lifecycle/lifespan.py - Startup lifecycle → Stall owner table: creates tables
src/lifecycle/lifespan.py - Hawker service → Hawker repository: delegates
src/hawker_service/hawker_service.py - Hawker service → Hawker request model: uses input
src/hawker_service/hawker_service.py - Hawker repository → Stalls table: reads and writes
src/repository/hawker_repository.py - Hawker repository → Stall menu table: reads and writes
src/repository/hawker_repository.py - Hawker repository → Stall owner table: reads and writes
src/repository/hawker_repository.py - Hawker repository → Hawker request model: maps input
src/repository/hawker_repository.py - Hawker repository → Shared hawkerflow database: persists records
README.md - DB session → Database factory: requests driver
src/session/db_session.py - Database factory → Driver factory: inherits
src/factory/database_factory.py - PostgreSQL driver → Database driver base: implements
src/drivers/postgres_driver.py - SQLite driver → Database driver base: implements
src/drivers/sqlite_driver.py - PostgreSQL driver → App configuration: uses settings
src/drivers/postgres_driver.py - SQLite driver → App configuration: uses settings
src/drivers/sqlite_driver.py