SAP Technologies: testing terminals, photo verification and reports
A fullstack system for touchscreen testing terminals: NestJS API, badge-based JWT authentication, photo verification, MinIO, Excel import, report generation queue, React admin panel and Telegram bot.
The project was built around touchscreen terminals used for employee testing. From the outside the flow looked simple: an employee identifies with a badge, confirms identity with a photo, passes a test, and administrators later work with users, results and reports.
In practice, several parts had to work together: the terminal frontend, backend API, file storage, admin panel, Excel import, report generation and Telegram notifications. A failure in one part could break the entire operational flow, from authentication to report delivery.
My Role
I worked as a fullstack developer and covered both backend and admin interface tasks.
Main responsibilities:
- NestJS backend API with a modular structure;
- JWT authentication based on employee badges;
- photo verification and image storage in MinIO;
- Excel import for users;
- Excel report generation;
- report generation queue integrated with an external PHP service;
- React admin panel built with MUI and Redux Toolkit;
- Telegram bot on NestJS/Telegraf for notifications and report delivery;
- using my own
nestjs-typeorm-templateas the project foundation.
System Design
The backend handled terminal scenarios, admin operations and integrations. Files were not stored next to the application: photos and reports were moved to MinIO, which made storage independent from the application container.
Reports were handled asynchronously. This prevented long-running HTTP requests during generation and left room for migrating the PHP generator to Node.js later without changing the user-facing workflow.
What Mattered
This project made a clear difference between “building a form” and “building an operational flow”. The system had to account for terminal constraints, files, admin permissions, batch uploads from Excel and a result that would be understandable for non-developers.
The admin panel therefore had to be practical rather than decorative: user management, reports and data operations needed to be simple enough for regular use.
Result
The final system connected badge authentication, testing, photo verification, file storage, reports, admin workflows and notifications. This case shows my experience in quickly assembling several service pieces into one working product flow.