The Vehicle Registration System enables citizens to register their vehicles online and allows government officials to approve or reject registration requests. This system supports SDG 9 (Industry, Innovation, and Infrastructure) by digitizing vehicle registration processes and reducing bureaucratic delays.
- User Registration & Login: Secure account creation for citizens and admins.
- Vehicle Registration Submission: Easy submission of vehicle details (plate number, make, model, owner info).
- Admin Approval Workflow: Admins can review, approve, or reject pending registrations.
- Status Tracking: Citizens can track the status of their registration requests in real-time.
This project follows a modern, scalable architecture:
- Frontend: Next.js (React framework) with Ant Design for UI.
- Backend: NestJS (Node.js framework) for a robust REST API.
- Database: PostgreSQL with Prisma ORM.
- Containerization: Docker & Docker Compose.
- Next.js Frontend: Handles user forms and dashboards.
- NestJS REST API: Manages requests, validation, and business logic.
- Prisma ORM: Interacts with the database.
- PostgreSQL: Stores persistent data.
Data Flow Example:
User submits form -> POST /api/registrations -> NestJS Service validates -> Prisma creates record -> Response returned with ID.
- User: Stores accounts (Citizens, Admins).
- VehicleRegistration: Tracks registration requests and status.
- Vehicle: Stores physical vehicle details.
- Owner: Stores owner personal information.
User(1) ↔ (N)VehicleRegistrationVehicleRegistration(1) ↔ (1)VehicleVehicleRegistration(1) ↔ (1)Owner
- Node.js & npm
- Docker & Docker Compose
-
Start the Database:
docker-compose up -d
-
Backend Setup:
cd backend npm install # Ensure your .env file is configured with DATABASE_URL npx prisma migrate dev npm run start:dev
-
Frontend Setup:
cd frontend npm install npm run dev
The frontend will typically run on http://localhost:3000 and the backend on http://localhost:3000 (or configured port).
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/auth/register |
Register new user | Public |
POST |
/auth/login |
Login user | Public |
POST |
/registrations |
Submit vehicle registration | Citizen |
GET |
/registrations |
List registrations | Citizen/Admin |
GET |
/registrations/:id |
Get registration details | Citizen/Admin |
PATCH |
/registrations/:id/status |
Approve/reject registration | Admin |
This project implementation is divided into three main phases:
- Day 1: Foundation, Database Setup, and Prisma Configuration.
- Day 2: Backend API Development (Auth, Registration, Validation).
- Day 3: Frontend Development, Integration, and Deployment.