Logo Lanfrica

Kihega/PayPark

Domaine:

digital infrastructure

Type de record:

software
Créateur:
Kih
Hôte:
This is a mobile application for smart and fair fee collection in goverment car parkin areas in Tanzania # ParkiPay Government parking management system for Tanzania. Field attendants issue digital parking bills against a vehicle's number plate; supervisors manage officers, locations, and the vehicle registry. ## Stack | Layer | Technology | |------------|-----------------------------------------------| | Mobile app | React Native (Expo) + TypeScript | | Backend | Node.js + Express | | ORM | Prisma | | Database | PostgreSQL (Supabase) | | Cache | Redis (Upstash) | | SMS | Twilio (active) / Africa's Talking (legacy) | | Email | Resend | | Deploy | Render (backend) · EAS / Expo Go (mobile) | ## Repository layout ``` backend/ Express API, Prisma schema + migrations, seed data, tests mobile/ Expo app (attendant + supervisor screens) ``` ## Domain conventions - **Attendant** employee IDs: `TZ-XXXX` (e.g. `TZ-0001`) - **Supervisor** employee IDs: `SUP-XXXX` (e.g. `SUP-0001`) - **Vehicle plates** (Tanzania format): `T` + 3 digits + 3 letters (e.g. `T123ABC`) - **Officer roles** (`OfficerRole` enum): `ATTENDANT`, `SUPERVISOR` — these are the only two valid values. Earlier drafts of this project used `ADMIN` / `FIELD_OFFICER`; that enum was collapsed and those values no longer exist anywhere in the schema, routes, or mobile client. ## Authentication Login is **employee-ID only** — there is currently no password check on `POST /api/auth/login/`. The officer just needs to exist, be active, and match the employee ID sent from the app. This is a known, intentional simplification for the current phase; see `backend/src/routes/auth.js` for the exact contract before changing it. ## Getting started ### 1. Backend ```bash cd backend npm install cp .env.example .env # fill in DATABASE_URL, SECRET_KEY, etc. npm run d …