A full-stack workshop management system designed for panel beating businesses to manage jobs, invoices, customers, vehicles, and staff roles through a structured digital workflow.
Built as an Honours-level Advanced Database Systems project using modern web technologies.
This system digitises workshop operations:
- Customer management
- Vehicle registration per customer
- Job card lifecycle tracking
- Invoice generation and payment tracking
- Role-based access control (Admin / Reception / Technician)
Group 14 β University of Limpopo
Module: Advanced Database Systems (Honours)
Year: 2026
Team Members:
- TP Sekwadi
- Mugeri R
- Ravhutulu M
- Next.js 16 (Full-stack framework)
- PostgreSQL (Relational database)
- Prisma ORM
- Tailwind CSS
- Framer Motion
| Role | Description |
|---|---|
| ADMIN | Full system control (users, jobs, invoices) |
| RECEPTION | Customers, vehicles, jobs, invoices |
| TECHNICIAN | Assigned jobs only (status updates) |
- Create and assign jobs
- Track progress (New β In Progress β Completed β Invoiced β Closed)
- Create invoices from jobs
- Itemised billing (parts, labour, VAT)
- Send, edit, void, mark as paid
- Customer profiles
- Vehicle tracking with full history
- Admin-controlled staff accounts
- Role-based access system
This project follows structured engineering principles:
- Software Development Life Cycle (SDLC)
- Database Development Life Cycle (DBLC)
- ERD, Use Case, and Flow Diagrams (see
/docs)
All API routes are located under /app/api
Handles authentication using NextAuth.
Fetch all customers
Create new customer
Get single customer
Update customer
Delete customer
Fetch all vehicles
Create vehicle
Get vehicle details
Update vehicle
Delete vehicle
Fetch all jobs
Create job
Get job details
Update job
Delete job
Fetch all invoices
Create invoice from job
Get invoice details
Update invoice (edit / mark paid / void)
Send invoice to customer (email simulation or SMTP)
Fetch all users
Create user (Admin only)
Get user details
Update user
Delete user
npm installEdit .env.local and set:
DATABASE_URLβ your PostgreSQL connection stringNEXTAUTH_SECRETβ any random string (at least 32 characters)NEXTAUTH_URLβhttp://localhost:3000for developmentSEED_ADMIN_PASSWORD=add_your_own_passwordSEED_RECEPTION_PASSWORD=add_your_own_passwordSEED_TECH_PASSWORD=add_your_own_password
npx prisma db pushnode scripts/seed.jsnpm run devVisit http://localhost:3000
| Role | Password | |
|---|---|---|
| Admin | admin@mangena.co.za | add_your_own_password |
| Reception | reception@mangena.co.za | add_your_own_password |
| Technician | tech@mangena.co.za | add_your_own_password |
- Job created
- Assigned to technician
- Job completed
- Invoice generated
- Sent to customer
- Payment marked as paid
- Job closed
To integrate real email sending, add your SMTP/API credentials to
.env.localand replace the simulation block inapp/api/invoices/[id]/send/route.js
π’ Production-ready academic system (Honours submission completed)






