Franchisee Helpdesk
A multi-role helpdesk POC for franchise networks — ticket management, role-based dashboards, email notifications, and EC2 deployment with OpenTofu.
Franchisee view
Dashboard with ticket list and status counts

Admin view
All tickets with status and assignee filters

Why this exists
Replacing email-based franchise support with a central ticketing system
In a growing franchise network, support requests sent by email get lost in threads, lack visibility, and scale poorly. This POC centralises communication into a shared helpdesk where franchisees submit and track tickets, and support staff assign, update, and close them.
The app runs a separate Express API behind the Next.js frontend, with SQLite on disk — deliberately simple infrastructure for a small network that can grow later.
What it demonstrates
1. Franchisees log in, submit tickets, and track their status.
2. Support staff see all tickets across franchisees with filters.
3. Tickets move through Open, In Progress, and Closed states.
4. Email notifications fire on ticket creation and status changes.
Architecture
Infrastructure
What I learned
Splitting the API into a standalone Express server behind the Next.js proxy made the backend independently testable and easier to reason about than mixing Server Actions with a shared SQLite connection.
OpenTofu with a user-data bootstrap script made the EC2 deployment reproducible. SSM Parameter Store for secrets kept credentials out of git and the Terraform state file, which is worth the extra setup even for a POC.
The multi-role model — franchisees see only their own tickets, staff see everything — surfaced early design decisions around session management and middleware that would have been easy to defer and harder to retrofit.