InternalTPE operations management platform / 2025
Problem
Expertic needed one place to coordinate TPE requests, service tickets, stock movement, bank/client records, and dead stock with role-aware access.
Solution
Built a multi-role web platform with a Next.js dashboard, NestJS API, and Prisma/PostgreSQL data model. The backend enforces JWT auth, CASL permissions, validation, notifications, uploads, and role-scoped APIs.
Key Features
Role-based dashboards for bank employees and account managers
Ticket workflows for intervention, consumable, network-check, and deblocking requests
TPE catalog, terminal model, bank, client, consumable, and dead-stock modules
JWT authentication, CASL authorization, route guards, validation, and role-scoped APIs
SSE notifications, email templates, attachments, and Excel template import/export
Search/filter tables, reusable modals, settings pages, and unsaved-change protection
Architecture Map
Mermaid
flowchart LR
Bank["Bank employee workspace"] --> Front["Next.js role dashboard"]
Manager["Account manager workspace"] --> Front
Front -->|"Axios REST + cookie JWT"| Api["NestJS API"]
Api --> Guards["JWT guard, role guard, CASL policies"]
Guards --> Modules["Role scoped API modules"]
Modules --> Tickets["Ticket workflows: intervention, consumable, network check, deblocking"]
Modules --> Operations["TPE stock, banks, clients, terminal models, dead stock"]
Api --> Prisma["Prisma service"]
Prisma --> Db[("PostgreSQL")]
Api --> Notify["SSE notifications"]
Api --> Mail["Email templates"]
Api --> Files["Attachments + Excel import/export"]