EALPR_FLASK / Apis DOCS /FLUTTER_INTEGRATION_GUIDE.md
Pant0x's picture
Final synced deploy v2 - Fix session and timeouts
cd01269
|
Raw
History Blame Contribute Delete
4.23 kB

Flutter Integration Guide

Goal

Connect Flutter app to Ain El Aql backend to produce a complete parking product:

  1. camera-based ANPR detection
  2. parking session and payment lifecycle
  3. occupancy and location-aware pricing dashboards

Responsibility Split

Backend + AI team (already implemented)

  1. AI inference pipeline
  2. Session/event persistence in Supabase
  3. Dynamic pricing and capacity logic
  4. Gate decision logic
  5. Payment endpoints (Paymob + manual cash)
  6. Role-aware history/feed APIs

Flutter team

  1. Backend auth screens and token management
  2. API client layer and request retries
  3. UI for user/admin/security experiences
  4. Detection screens and result rendering
  5. Payment/gate operation UI flow
  6. Dashboard and reporting screens

Integration Steps

  1. Configure API base URL in Flutter.
  2. Register/Login through backend auth endpoints and keep access token.
  3. Send token as Authorization: Bearer ... to protected endpoints.
  4. Use POST /predict for main camera action.
  5. Use /parking/locations and /parking/occupancy for location cards and dashboard.
  6. Use feeds/history endpoints for timeline and operational views.

Current Cloud Base URL

  • https://pant0x-ealpr-ocr.hf.space

Sanity checks:

  1. GET /
  2. GET /health
  3. GET /supabase/health

Current deployment mode is SUPABASE_ENFORCE_AUTH=false to unblock integration. Before production launch, switch to true and ensure token headers are sent on protected calls.

Recommended Flutter Screens

  1. Auth (login/register/reset)
  2. Home/scan screen
  3. Detection result screen
  4. Inside/entered/left monitoring screens
  5. Parking history screen
  6. Location pricing + occupancy screen
  7. Payment and gate validation screen
  8. Admin/security operations panel

Request/Response Mapping

POST /auth/register

Flutter sends:

  1. first_name (recommended)
  2. last_name (recommended)
  3. username (required)
  4. phone (required)
  5. password (required)
  6. email (optional)
  7. nid (optional)
  8. optional vehicle payload:
    • plate_letters_ar, plate_numbers_ar
    • plate_letters_en, plate_numbers_en
    • car_model, car_color

Flutter reads:

  1. user.role and user.is_staff
  2. session.access_token
  3. vehicle (if provided during registration)

POST /auth/login

Flutter sends:

  1. identifier (username OR phone OR email OR nid)
  2. password

Flutter reads:

  1. user.role and user.is_staff
  2. session.access_token
  3. session.refresh_token

POST /predict

Flutter sends:

  1. image file
  2. event_type (entry/exit/ocr_scan)
  3. parking_location (named value like OPERA)

Flutter reads:

  1. plate_info / plate
  2. pricing
  3. payment_status
  4. gate_decision
  5. user_page.split_image_base64
  6. admin_page.annotated_image_base64

Occupancy dashboards

Use:

  1. GET /parking/locations
  2. GET /parking/occupancy

Render:

  1. garage.display (X/total)
  2. each location pricing mode/rates
  3. each location occupancy display and left capacity

Role-based UI Recommendations

  1. user
    • own history/feeds
    • pricing and availability
  2. admin
    • all-user operations, analytics, payment controls
  3. security
    • gate operations and live occupancy monitoring

Role source is backend user.role from the profiles table.

End-to-End Product Pipeline

  1. Driver arrives and selects location in app.
  2. Camera scan sends image to /predict with event_type=entry.
  3. Backend detects plate, creates/updates session, calculates pricing context.
  4. Driver views status and fee preview.
  5. On exit, app sends /predict with event_type=exit.
  6. Backend validates payment state and returns gate decision.
  7. Staff can use payment endpoints when required.
  8. Dashboards reflect occupancy in near-real-time from open sessions.

Launch Checklist

  1. Cloud host /, /health, and /supabase/health pass.
  2. Supabase tables/buckets configured and secure.
  3. Auth enforced in production (SUPABASE_ENFORCE_AUTH=true).
  4. Pricing/capacity env values loaded in deployment.
  5. Flutter role routing and token flow tested.
  6. Entry/exit/manual payment QA completed.
  7. Security key rotation completed for exposed secrets.