This page is written for CTOs, IT managers and system architects — we use real technical terms because this audience wants to see them.
| Component | Responsibility | Technology |
|---|---|---|
| itsm-web | Web front end for users and system administrators | React 19 + TypeScript + Vite + Tailwind CSS 4 |
| service-core | HCM core — employees, time, leave, OT, approvals, assets, meeting rooms, dashboards | NestJS 11 + Fastify + MongoDB + Redis/BullMQ |
| service-ticket | Service tickets, customers and credit | NestJS 11 + gRPC + MongoDB |
| service-notification | Email delivery and in-app notifications | NestJS 11 + gRPC + Handlebars templates |
Fast, with an explicit data contract, which cuts integration errors between teams.
Heavy jobs such as sending email, recalculating leave for the whole company and syncing the org chart run in the background without making users wait.
Daily absence checks · customer credit resets · SLA checks · customer notification condition checks.
Files stored on Cloudflare R2 / S3-compatible storage — scales without limit and stays secure.
Supported, with auto-scaling on CPU/memory usage and health checks.
Monitoring is ready to use — see system health in real time.
Winston, shipping to Google Cloud Logging — searchable, so you can trace problems after the fact.
There is both a local stack (docker-compose) and a Kubernetes deployment.
Trace every request across the system, so you can pinpoint problems after the fact even when they pass through several services.
Set as the default system-wide; daily jobs close out on Thai time, not UTC.
The system scales to more users without a rewrite · you can add servers only to the parts under heavy load · and when something goes wrong, our team finds the cause quickly because the logs and metrics are all there.
Multi-tenant with database-level Row-Level Security · 1-day JWT access token + 7-day refresh token with token rotation · HMAC-SHA256 signature verification on every message from LINE · RabbitMQ queues the Channel Manager (Channex) integration, so bookings are not lost if the far end goes down.
Multi-tenant with Row-Level Security — several layers at the database level prevent leakage between shops · the system works as RAG (retrieve the real data first, then compose the answer) with a relevance threshold and keyword search as a fallback · request rate limiting.
We say it plainly because technical teams will ask anyway, and if they catch the site overselling, the whole page loses its credibility.
About deploying on your own infrastructure, integrating with existing systems, or any architectural question.