AI Ticketing Platform (as a Service)

// A multi-tenant support system I built the dashboards for — blending ticketing, live chat, and AI-assisted replies into one seamless experience.

9/26/2025

Support was one of those projects where I really got to stretch my frontend muscles. The idea was simple on paper but ambitious in reality: build a multi-tenant support platform that could handle ticketing, live chat, and AI-assisted replies, all while being multi-language and fully scalable.

My main focus was the admin dashboard and the user-facing app. On the admin side, I wanted to give support teams a clean, powerful interface where they could see everything at a glance — open tickets, response times, active chats, and even performance stats. On the user side, the goal was the exact opposite: simplicity. End-users should be able to create a ticket, track conversations, or jump into a live chat without feeling like they were navigating a maze.

I built the whole frontend with React 19, Tailwind CSS, and shadcn/ui, making heavy use of reusable components and a modular design system. One of the trickiest parts was making the dashboard fully responsive — support agents often check things on laptops, but users jump in from phones, tablets, or whatever they have handy. Getting those layouts to flex naturally took plenty of iteration.

Another big challenge was real-time updates. Tickets and chats had to refresh instantly for both admins and users, so I wired everything up with WebSockets. Watching a ticket status change or a new message appear in real time without refreshing felt super satisfying once it all came together.

Of course, this platform wasn’t just about the UI — it was about working smoothly across tenants and languages. I collaborated closely with the backend team to hook into multi-tenant APIs and build out the i18n layer on the frontend. Everything from ticket forms to notifications needed to adapt based on tenant and language settings, and making that seamless was a real accomplishment.

One of my favorite parts was working on file uploads. Users needed to attach large files (up to 2GB), so I designed a chunked upload interface with clear progress bars, resumable support, and smart error handling. It’s one of those details that often gets overlooked, but when it works well, it makes the whole system feel polished.

Looking back, Support taught me a ton about balancing complexity: giving admins all the power tools they need, while keeping the user side lightweight and frictionless. It’s the kind of project where every detail mattered — from button states to real-time socket events — and I loved being the one to bring that frontend experience to life.

Back to Blog
© 2025 Nima Janbaz - All Rights Reserved
<_NimaJanbaz />