A full-stack internal platform for managing user access requests, approval workflows, role assignments, and audit trails.
This system simulates a real enterprise security/admin workflow where employees request access to resources, managers and admins review requests, and all actions are tracked through a complete audit system.
- JWT-based authentication
- Secure login flow
- Protected routes (frontend + backend)
- Stateless session management
/api/auth/mefor trusted identity retrieval
-
Submit access requests for roles/resources
-
Lifecycle statuses:
PENDINGUNDER_REVIEWAPPROVEDREJECTEDCANCELLEDREVOKED
-
Manager → Admin approval chain
-
Status transitions enforced on backend
- Users assigned to roles
- Roles assigned to permissions
- Backend-enforced authorization
- No reliance on frontend role assumptions
-
View all users
-
Edit user details:
- first name / last name
- department
- manager assignment
-
Activate / deactivate users
-
Assign / remove roles
- View roles
- View users assigned to roles
- Assign / remove permissions from roles
- Real-time role-permission updates
- Browse permission catalog
- View permission details
- Permissions linked to roles via backend
-
Full audit log per request
-
Tracks:
- submission
- approval
- rejection
- cancellation
- revocation
-
Includes:
- actor (user)
- timestamp
- action type
- contextual details
-
Notification generation on key events:
- request submitted
- request approved
- request rejected
-
Per-user notification list
-
Mark as read functionality
-
Aggregated metrics:
- total requests
- approved
- rejected
- cancelled
- revoked
- pending
- under review
-
Real-time data from backend
- Status filtering on request list
- Search capability
- Clean UI for navigating large datasets
- Java 21
- Spring Boot
- Spring Security (JWT)
- Spring Data JPA
- PostgreSQL (or compatible)
- Maven
- Angular (Standalone Components)
- TypeScript
- RxJS
- Angular Router
- HTTP Interceptors (JWT injection)
Frontend (Angular)
|
| HTTP (JWT)
↓
Backend (Spring Boot)
|
├── Authentication (JWT)
├── RBAC Enforcement
├── Access Request Service
├── Approval Workflow Engine
├── Audit Logging
├── Notification Service
└── Data Layer (JPA)
POST /api/auth/loginGET /api/auth/me
GET /api/access-requestsGET /api/access-requests/my-requestsGET /api/access-requests/pending-approvalsPOST /api/access-requestsPUT /api/access-requests/{id}/approvePUT /api/access-requests/{id}/rejectPUT /api/access-requests/{id}/cancelPUT /api/access-requests/{id}/revoke
GET /api/usersGET /api/users/{id}PUT /api/users/{id}PUT /api/users/{id}/activatePUT /api/users/{id}/deactivate
GET /api/rolesGET /api/roles/{id}
GET /api/roles/{roleId}/permissionsPOST /api/roles/{roleId}/permissionsDELETE /api/roles/{roleId}/permissions/{permissionId}
GET /api/users/{id}/rolesPOST /api/users/{id}/rolesDELETE /api/users/{id}/roles/{roleId}
GET /api/permissionsGET /api/permissions/{id}
GET /api/audit-logs/entity/AccessRequest/{id}
GET /api/notificationsPUT /api/notifications/{id}/read
| Role | Password | |
|---|---|---|
| Employee | alice.employee@demo.local | Password123! |
| Manager | karim.manager@demo.local | Password123! |
| Admin | sofia.admin@demo.local | Password123! |
- Employee submits access request
- Request enters
PENDING - Manager reviews → moves to
UNDER_REVIEW - Admin approves or rejects
- System logs all actions in audit trail
- Notifications sent to relevant users
- Request can later be revoked if needed
This project demonstrates real-world backend and system design skills:
- secure authentication flows
- RBAC implementation
- multi-step approval workflows
- auditability and traceability
- admin tooling design
- separation of concerns between frontend and backend
It is not a CRUD app — it models an actual enterprise access governance system.
This project completes a full enterprise-like portfolio:
- Recruitment System → HR workflows
- Ticketing System → Support workflows
- Inventory System → Operations workflows
- Billing System → Finance workflows
- Access Request Platform → Security & Administration workflows
- Policy-based approval logic (dynamic rules)
- Pagination & advanced search
- Email notifications
- Permission grouping
- Activity feed on dashboard
- Fine-grained permission enforcement
Mountadem Badr Software Engineer | Full-Stack Developer | Systems-Oriented Builder










