A full-stack ERP system for managing service requests, users, assignments, billing, and operations with role-based access.
This project is a modern ERP (Enterprise Resource Planning) system designed to manage:
- Service Requests
- User Management
- Assignments & Operations
- Billing & Invoices
- Audit Trails
It provides Admin and Customer dashboards with a clean, responsive UI and real-time operations.
- Create users (Admin)
- Update user profiles
- Profile image upload (Cloudinary)
- Role-based access (Admin / Customer)
- Create and manage requests
- View request details
- Status updates (pending, approved, rejected)
- Request timeline tracking
- Assign/reassign jobs
- Track assignment history
- Operation logs (audit trail)
- Invoice creation
- Payment tracking
- Billing history
- Track all system actions:
- Request approvals
- Assignments
- Invoice creation
- Payments
- Profile updates
- Upload profile image (Cloudinary)
- Image preview + progress bar
- Replace image (auto delete old)
- Remove profile image (with confirmation)
- Responsive dashboard (mobile + desktop)
- Collapsible sidebar
- Mobile drawer navigation
- Toast notifications
- Skeleton loaders
- Next.js (App Router)
- React
- Tailwind CSS
- lucide-react (icons)
- react-hot-toast
- Framer Motion
- Node.js + Express
- PostgreSQL
- Prisma ORM
- Cloudinary β Image uploads
- JWT β Authentication
ββββββββββββββββββββββββββββββ
β Frontend β
β (Next.js App Router) β
β β
β - Dashboard UI β
β - Profile Management β
β - Requests / Billing β
β - Sidebar / Navigation β
ββββββββββββββ¬ββββββββββββββββ
β
β HTTP (REST API)
β
ββββββββββββββΌββββββββββββββββ
β Backend β
β (Node.js + Express) β
β β
β - Authentication (JWT) β
β - User Management β
β - Request Services β
β - Assignment Logic β
β - Billing & Payments β
β - Audit Trail System β
βββββββββ¬ββββββββββ¬βββββββββββ
β β
β β
β β
βββββββββΌββββ ββββΌβββββββββββββββ
β PostgreSQLβ β Cloudinary β
β Database β β (Image Storage) β
β β β β
β - Users β β - Profile imgs β
β - Requestsβ β - Upload API β
β - Billing β β β
β - Audit β βββββββββββββββββββ
βββββββββββββ
Service-Request-and-Operations-Management-ERP-System/
β
βββ frontend/ # Next.js frontend application
βββ backend/ # Node.js + Express backend
βββ README.md
βββ .gitignore
frontend/
β
βββ app/ # App Router (Next.js)
β βββ dashboard/
β β βββ page.tsx # Dashboard home
β β βββ layout.tsx # Dashboard layout
β β β
β β βββ profile/
β β β βββ page.tsx # Profile page
β β β
β β βββ requests/
β β β βββ page.tsx
β β β βββ create/
β β β βββ my/
β β β βββ [id]/ # Dynamic request details
β β β βββ page.tsx
β β β
β β βββ billing/
β β β βββ my-invoices/
β β β βββ page.tsx
β β β
β β βββ users/
β β β βββ create/
β β β βββ page.tsx
β β β
β β βββ audit/
β β βββ page.tsx
β β
β βββ login/
β βββ register/
β βββ layout.tsx
β βββ globals.css
β
βββ components/ # Reusable UI components
β β
β βββ layout/ # Layout components
β β βββ Sidebar.tsx
β β βββ MobileSidebar.tsx
β β βββ DashboardTopbar.tsx
β β βββ UserMenu.tsx
β β βββ UserAvatar.tsx
β β
β βββ ui/ # Generic UI elements
β β βββ Button.tsx
β β βββ Input.tsx
β β βββ Table.tsx
β β βββ Modal.tsx
β β βββ ConfirmDialog.tsx
β β βββ SectionCard.tsx
β β βββ StatusBadge.tsx
β β
β βββ profile/ # Profile-related components
β β βββ ImageDropzone.tsx
β β
β βββ requests/ # Request-related components
β β βββ RequestOverviewCard.tsx
β β βββ CustomerDetailsCard.tsx
β β βββ AssignmentHistoryCard.tsx
β β βββ BillingHistoryCard.tsx
β β βββ StatusTimelineCard.tsx
β β
β βββ charts/ # Dashboard charts
β βββ RequestsStatusChart.tsx
β βββ InvoiceStatusChart.tsx
β βββ AssignmentsStatusChart.tsx
β
βββ context/
β βββ AuthContext.tsx # Authentication context
β
βββ hooks/
β βββ useMediaQuery.ts
β βββ useDebounce.ts
β βββ usePagination.ts
β
βββ services/ # API layer
β βββ api.ts
β βββ profile.ts
β βββ upload.ts
β βββ profile-image.ts
β βββ request.ts
β βββ billing.ts
β βββ assignment.ts
β βββ audit.ts
β
βββ lib/ # Utilities
β βββ navigation.ts
β βββ formatDate.ts
β βββ formatCurrency.ts
β βββ exportCsv.ts
β
βββ types/ # TypeScript types
β
βββ public/ # Static assets
β
βββ next.config.ts
βββ package.json
βββ tsconfig.json
backend/
β
βββ src/
β β
β βββ controllers/ # Request handlers
β β βββ auth.controller.ts
β β βββ user.controller.ts
β β βββ request.controller.ts
β β βββ assignment.controller.ts
β β βββ billing.controller.ts
β β βββ audit.controller.ts
β β
β βββ services/ # Business logic
β β βββ user.service.ts
β β βββ request.service.ts
β β βββ assignment.service.ts
β β βββ billing.service.ts
β β βββ audit.service.ts
β β
β βββ routes/ # API routes
β β βββ auth.routes.ts
β β βββ user.routes.ts
β β βββ request.routes.ts
β β βββ assignment.routes.ts
β β βββ billing.routes.ts
β β βββ audit.routes.ts
β β
β βββ middleware/ # Middleware
β β βββ auth.middleware.ts
β β βββ role.middleware.ts
β β βββ error.middleware.ts
β β βββ upload.middleware.ts
β β
β βββ config/ # Configurations
β β βββ prisma.ts
β β βββ cloudinary.ts
β β
β βββ utils/ # Helper functions
β β
β βββ server.ts # Entry point
β
βββ prisma/
β βββ schema.prisma
β βββ migrations/
β
βββ package.json
βββ tsconfig.json
git clone https://github.com/supunakalanka76/Service-Request-and-Operations-Management-ERP-System.gitcd frontend
npm installcd backend
npm installDATABASE_URL=postgresql://user:password@localhost:5432/erp_db
JWT_SECRET=your_secret_key
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_key
CLOUDINARY_API_SECRET=your_secret
NEXT_PUBLIC_API_URL=http://localhost:5000/apicd backend
npm startcd frontend
npm start| Module | Description |
|---|---|
| Users | Manage system users |
| Requests | Handle service requests |
| Assignments | Job assignment tracking |
| Billing | Invoices & payments |
| Audit | Activity logs |
| Profile | User profile management |
- π Role permissions (fine-grained RBAC)
- π Advanced analytics dashboard
- π§ Email notifications
- π± Mobile app (React Native)
- π Real-time updates (WebSockets)
- π§ͺ Unit & integration testing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your feature branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m 'Add some AmazingFeature' - Push to the branch
git push origin feature/AmazingFeature
- Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
For support, questions, or feedback:
- Email:
- Personal: supunakalanka76@gmail.com
- GitHub Issues: Create an issue