Smart Park – Intelligent Parking Management System
A full-stack parking management system with separate dashboards for users , drivers , managers , and admins .
Feature
Description
🔐 JWT Auth
Secure login with access + refresh tokens
🅿️ Lot Management
Create and manage parking lots with slot auto-generation
📋 Booking System
Real-time slot booking with conflict prevention
🚗 Valet Assignments
Manager assigns drivers to bookings
⚙️ Admin Controls
User management, driver approvals, system analytics
📱 Responsive UI
Mobile-first dark-mode design
Frontend : React 18, Vite, Tailwind CSS, React Router v6, Axios
Backend : Node.js, Express, Mongoose
Database : MongoDB (Atlas)
Auth : JWT (access + refresh tokens stored in localStorage)
Node.js 18+
MongoDB Atlas account (or local MongoDB)
cd backend
npm install
cp .env.example .env # Fill in your MONGO_URI and JWT secrets
npm run dev # Starts on http://localhost:5000
cd frontend
npm install
cp .env.example .env # Set VITE_API_URL=http://localhost:5000/api
npm run dev # Starts on http://localhost:5173
Method
Endpoint
Auth
Description
POST
/api/auth/register
Public
Register user
POST
/api/auth/login
Public
Login + get tokens
POST
/api/auth/refresh
Public
Refresh access token
GET
/api/auth/me
Any
Get current user
GET
/api/lots
Any
List parking lots
POST
/api/lots
Admin
Create parking lot
POST
/api/bookings
User
Create booking
GET
/api/bookings/my
User
Get my bookings
PUT
/api/bookings/:id/cancel
User
Cancel booking
GET
/api/drivers
Manager/Admin
List drivers
PUT
/api/drivers/assign/:bookingId
Manager
Assign driver
GET
/api/admin/analytics
Admin
System stats
PUT
/api/admin/drivers/:id/approve
Admin
Approve driver
User submits email + password + role on login page
Backend validates and returns token (15min) + refreshToken (7d)
Both stored in localStorage under sp_token / sp_refresh
Axios interceptor attaches Authorization: Bearer <token> to all requests
On 401, interceptor auto-calls /api/auth/refresh and retries the original request
On logout, tokens are cleared and user is redirected to /login
Role
Email
Password
User
user@demo.com
User@123
Manager
manager@demo.com
Manager@123
Admin
admin@demo.com
Admin@123
Backend (Render / Vercel)
Set environment variables from .env.example
Set NODE_ENV=production
Build command: npm install · Start command: node src/server.js
Frontend (Vercel / Netlify)
Set VITE_API_URL to your deployed backend URL
Build command: npm run build · Publish directory: dist
Smart-Park/
├── backend/
│ ├── src/
│ │ ├── config/ # DB connection
│ │ ├── controllers/ # Business logic
│ │ ├── middleware/ # Auth, RBAC, validation, errors
│ │ ├── models/ # Mongoose schemas
│ │ ├── routes/ # Express routers
│ │ └── utils/ # JWT helpers, response helpers
│ └── tests/ # Jest + Supertest
└── frontend/
└── src/
├── api/ # Axios service layer
├── components/ # Shared UI components
├── context/ # AuthContext
└── pages/ # Role-based dashboard pages
MIT © 2026 Smart Park