Chat on WhatsApp
ProgrammerKhaled
ServicesWorkProcessPricingContact Now
عالعربيةENEnglish
Menu2026
01Services02Work03Process04Pricing05Contact Now
عالعربيةENEnglish
WhatsApp
Case study

DASHBOARD

An admin panel that runs a whole company

A private company dashboard — full management of requests (service / hire / partnership) and complaints & reports, complete control over site content, and very high security.

Private company panel — shown as real interface snapshots, with no sensitive data.
Role
Full design & development
Type
Private company dashboard
Languages
Arabic / English
Overview
DASHBOARD
Inbox — complaints & reports
Requests — service / hiring / collaboration
Hiring requests
Site content management
DASHBOARD
Inbox — complaints & reports
Requests — service / hiring / collaboration
Hiring requests
Site content management

What the panel does

01

Requests management

Service, hiring, partnership — every request arrives classified and ready to follow up and answer from one place.

02

Complaints & reports

A dedicated inbox that collects every complaint and report, so no client's voice gets lost.

03

Full content control

Site sections, blogs, news — the company edits everything itself, no developer needed.

04

Users & security

Panel users managed with scoped permissions, and very high data protection.

By the numbers

32
Dashboard API routes
14K
Lines of code — dashboard alone
15
Days for the core build
2
Full languages

The four hardest problems

01AuthTwo-factor login

Worked on my machine, broke in production

Two-factor login via an emailed code worked locally and broke once deployed — and four fixes in a row didn't hold. The cause sat deeper than the code itself: the middleware runs on the Edge and was decoding the session by hand, and the database layer (Prisma) can't run there at all. So I rebuilt authentication: an authenticator app (TOTP) instead of email codes, a pre-auth token linking the two steps, and a lightweight Edge-only auth config with no database.

The rebuild touched 27 files — instead of patching on a fifth fix.

02EdgeMiddleware

Every request passes here — so no database here

Middleware runs on every request, so any query in it slows the whole site. Maintenance mode is detected from a cookie with zero queries, authentication is fully isolated from the public pages, and the forced-logout check has a 4-second timeout so a slow database can't stall every request.

The public pages carry nothing from the login system.

03SecuritySecurity

Security that's built, not claimed

Rate limiting, sanitising HTML from the content editor before rendering, validating uploads by their actual contents (magic bytes) rather than their extension, and CSP headers — plus active sessions that can be revoked from settings.

A file's extension is whatever the user typed; its contents don't lie.

04CMSContent

Content the company edits without calling me

Draft → preview → publish, image and video management, a rich-text editor for blog and news with slugs, and an importer that moves content previously hard-coded in the site into the dashboard instead of retyping it. Later the Terms and Privacy pages became editable from the dashboard too.

Headings are built to stay tidy however long the copy the team writes.

The tools

Core

  • Next.js · App Router
  • React
  • Tailwind CSS v4
  • next-intl — bilingual dashboard

Data & auth

  • Prisma + Neon Postgres
  • NextAuth
  • TOTP — otplib + qrcode
  • bcryptjs

Ops

  • Vercel Blob — media
  • Nodemailer — email
  • SSE — live notifications
  • Vercel — deploy

What actually shipped

  • Complaints & reports inbox with internal notes
  • Requests: service / hiring / partnership
  • Job listings management
  • Saved reply templates
  • Live in-dashboard notifications
  • Activity log
  • Users, roles and online presence
  • Revocable active sessions
  • Two-factor login with an authenticator app
  • One-click maintenance mode
  • Blog and news editor
  • Image and video management

The lesson that stayed

The part that took the most time wasn't an interface — it was two-factor login: four fixes for the same failure before it became clear the problem was somewhere else entirely. A dashboard that runs a whole company is measured by one thing: staying shut to anyone without a key, and open to the team without friction.

A bug that returns after every fix means the diagnosis is wrong.

Inside the panel

02Inbox — complaints & reports
Inbox — complaints & reports
03Requests — service / hiring / collaboration
Requests — service / hiring / collaboration
04Hiring requests
Hiring requests
05Site content management
Site content management
06Blogs management
Blogs management
07News management
News management
08Users management
Users management
09General settings
General settings

Need a dashboard to run your business?

I'll build a panel tailored to your company — bilingual, secure, and easy for your team.

Tell me about your project
Back to process

From zero to a real site

Process
  • Services
  • Process
  • Pricing
  • Contact Now
Hire me now
See my code
Let's connect
Behind the scenes
Direct chat
  • Upwork
  • GitHub
  • LinkedIn
  • Instagram
  • WhatsApp
  • Privacy Policy
  • Terms of Use

© 2026 KHALED

2026 KHALED FULL STACK ENGINEER ©