Back to projects

TPMS Expertic

Built role-based modules for a TPE operations platform managing bank requests, tickets, inventory, attachments, Excel workflows, and notifications using Next.js, NestJS, Prisma, PostgreSQL, JWT, CASL, and SSE.

InternalLive, private repoTPE 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

Role-scoped request flow

one API, two workspaces
Bank employeeown bank's ticketsAccount managerportfolio of banksNext.jsrole dashboardJWTGUARD CHAINJWT guardrole guardCASL policyscopedticket workflows4 types, one pipelineTPE inventorystock · dead stockExcel + SSEimport/export · alertsPostgreSQLPrismaROLEfull-stack contributor · Expertic, May–Nov 2025SCOPEbank requests · tickets · TPE fleet
Bank employees and account managers see different systems, but they are the same endpoints. The guard chain is the product decision — a JWT proves who you are, a role check proves what kind of user you are, and CASL policies decide row by row what you may read or change. Adding a fourth ticket type meant no new permission code.

TPMS Screenshots

11 views
Account manager request dashboard with ticket filters, Excel import/export, and new request entry point.
Multi-type request modal for intervention, consumable, network choice, and deblocking workflows.
Bank management surface with search, status filtering, KPI cards, and bank creation.
Create bank modal split into bank information, sub-accounts, and terminal model assignment.
Consumables inventory with stock summaries, search, low-stock filtering, and create action.
TPE catalog grouped by manufacturer, with model details and controlled delete actions.
Account manager dead stock inventory with assignment status, filters, and stock table.
Account manager settings for profile updates and password changes.
Bank employee dashboard with scoped request tracking and simplified navigation.
Bank employee dead stock view with assigned inventory summaries and read-only table flow.
Bank employee settings showing profile controls and linked bank information.