How bkuroko/parkfinder2 works
ParkFinder’s main flow detects parking-slot occupancy from video, ingests updates through FastAPI, stores facility and occupancy state in PostgreSQL, and presents availability to drivers and administrators. Admin workflows also cover authentication, metrics, logs, reports, and parking-lot submissions. The README documents an optional Appwrite-backed API migration. Some UI and route relationships are documented rather than shown in excerpts; those links cite the README, and the Appwrite integration is kept separate.
Main entry points: ingest.py AI ingestion · api/client.js Mobile API client · main.py FastAPI entry · api/client.js Admin API client
Components 26
Video detection
- Slot detector
ai_processing/detector.py
API and domain
- FastAPI entry
backend/app/main.py - Public facilities
backend/app/api/routes/public.py - Admin auth
backend/app/api/routes/auth.py - Admin operations
backend/app/api/routes/admin.py - AI ingestion
backend/app/api/routes/ingest.py - Access control
backend/app/api/deps.py - JWT security
backend/app/core/security.py - Occupancy services
backend/app/services.py - API schemas
backend/app/schemas.py - Appwrite function
appwrite/functions/parkfinder-api/src/main.py
Parking data
- Parking models
backend/app/models.py - PostgreSQL
- Appwrite TablesDB
Driver app
- Mobile navigation
mobile/App.js - Facility search
mobile/src/screens/FacilitySearchScreen.js - Facility map
mobile/src/screens/FacilityMapScreen.js - Facility details
mobile/src/screens/FacilityDetailsScreen.js - Location map
mobile/src/screens/FacilityLocationScreen.js - Mobile API client
mobile/src/api/client.js
Admin dashboard
- Admin app
web-admin/src/App.jsx - Admin login
web-admin/src/pages/LoginPage.jsx - Admin dashboard
web-admin/src/pages/DashboardPage.jsx - Admin API client
web-admin/src/api/client.js
Other components
- Parking video
- AI processor
Connections 31
- Parking video → Slot detector: provides footage
- Slot detector → AI processor: detects slots
- AI processor → AI ingestion: posts updates
- FastAPI entry → Public facilities: registers routes
backend/app/main.py - FastAPI entry → Admin auth: registers routes
backend/app/main.py - FastAPI entry → Admin operations: registers routes
backend/app/main.py - FastAPI entry → AI ingestion: registers routes
backend/app/main.py - AI ingestion → Access control: checks ingest key
backend/app/api/routes/ingest.py - Admin auth → Access control: requires admin
backend/app/api/routes/auth.py - Access control → JWT security: validates JWT
backend/app/api/deps.py - AI ingestion → Occupancy services: updates occupancy
backend/app/api/routes/ingest.py - Public facilities → Occupancy services: builds facility views
backend/app/api/routes/public.py - Admin operations → Occupancy services: builds metrics
backend/app/api/routes/admin.py - AI ingestion → Parking models: records slot state
backend/app/api/routes/ingest.py - Occupancy services → Parking models: queries parking data
backend/app/services.py - Parking models → PostgreSQL: persists records
backend/app/models.py - Mobile navigation → Facility map: opens map
mobile/App.js - Mobile navigation → Facility details: opens facility
mobile/App.js - Mobile navigation → Location map: opens location
mobile/App.js - Facility search → Mobile API client: requests facilities
mobile/src/screens/FacilitySearchScreen.js - Facility map → Mobile API client: loads facilities
mobile/src/screens/FacilityMapScreen.js - Facility details → Mobile API client: loads details
mobile/src/screens/FacilityDetailsScreen.js - Location map → Mobile API client: loads location data
mobile/src/screens/FacilityLocationScreen.js - Mobile API client → Public facilities: calls public API
- Admin app → Admin login: shows unauthenticated
web-admin/src/App.jsx - Admin app → Admin dashboard: shows authenticated
web-admin/src/App.jsx - Admin login → Admin API client: submits credentials
web-admin/src/pages/LoginPage.jsx - Admin dashboard → Admin API client: loads admin data
web-admin/src/pages/DashboardPage.jsx - Admin API client → Admin auth: calls login and profile
- Admin API client → Admin operations: calls admin endpoints
- Appwrite function → Appwrite TablesDB: stores API data