
Integra Telekom
An internet provider's website with a helpdesk built in: customers sign in with their router's credentials and report outages, and technicians work every ticket to a logged close.
Integra sells internet, network infrastructure, data-centre, telephony, managed services and software to homes and businesses. Its site had two jobs: win new customers, and give existing ones a way to report a problem that didn't depend on a phone call reaching the right person.
The result is one Next.js app. The public side markets the services, posts activities and photos, and checks coverage by area. Behind a sign-in sits a complete helpdesk, where every outage becomes a ticket with photos, an owner, a technician and a timeline.
Signing in with your router
Customers don't sign up; their device does. Integra registers each customer's router by SSID and password. When someone signs in with a username the system hasn't seen, it checks that pair against the registered devices, and on a match creates their Clerk account and a local user on the spot, then sends them to their tickets. Staff sign in normally and are routed by role: admins and technicians to the dashboard, customers to their own tickets.
Life of a ticket
Submitted
The customer picks a reason, describes the problem and attaches photo evidence, compressed server-side.
Confirmed
An admin confirms it and becomes its handler.
In progress
A technician must be assigned before work starts, and uploads their own working evidence.
Completed
Closed with every status change, by whom and when, on the ticket's timeline. Tickets can also be canceled.
Behind the dashboard
Role-based menus
Admins and technicians see different navigation, and technicians get a queue of tickets assigned to them.
Notifications
In-app notifications follow tickets as they move, per user.
Content
Activities, galleries with drag-and-drop ordering, and the device registry live alongside the tickets.
Protected media
Uploaded files are served through an API route that checks the user and validates the path, and sign-in attempts are rate-limited.
Shipping it
The site deploys itself. A push to master runs a GitHub Actions workflow that SSHes into the VPS, pulls, installs, generates the Prisma client, applies migrations and rebuilds, with a separate type-check workflow guarding the branch. A sitemap, robots rules and structured data look after search engines.
Built with
- Next.js 16
- React 19
- TypeScript
- Prisma
- PostgreSQL
- Clerk
- shadcn/ui
- TanStack Table
- dnd-kit
- sharp
- Motion
- GitHub Actions
Related Work
