← All work
SaaS · Next.js · RBAC2026

DineFlow

Multi-role restaurant management SaaS built on Next.js

DineFlow landing page with a live dashboard preview

The problem

Restaurant teams juggle orders, tables, stock and billing across disconnected tools, and every role — from chef to cashier — needs a different view of the same operation.

My approach

DineFlow is a single workspace where the interface adapts to the signed-in role. Each role sees only the modules it needs, while owners and super admins get the full operational and financial picture.

How it's built

  1. Marketing1

    Next.js App Router

    Landing, features, pricing and about pages

  2. Auth2

    Session + auth module

    Sign-up, login and verification flow

  3. RBAC3

    TypeScript role map

    navigationByRole drives which modules render

  4. Workspace4

    Dynamic [slug] routes

    Per-restaurant, multi-tenant dashboard

  5. Insights5

    Recharts

    Revenue trends over 7 days, 30 days and 12 months

✦

Role-based access

Six roles with a typed permission map — impossible states don't compile.

✦

Live floor view

Tables with occupied, reserved, cleaning and available states.

✦

Order pipeline

Dine-in, pickup and delivery orders tracked from preparing to completed.

✦

SaaS billing

Tiered Starter / Pro / Enterprise plans and a super-admin subscriptions view.

Challenges & decisions

One UI, six audiences

Centralised permissions in a typed map instead of scattering role checks across components.

Dense data, calm interface

Built a consistent component system with shadcn/ui so busy screens stay readable during service.

More screens

DineFlow features page

Tech stack

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • Recharts

What I learned

  • →Modelling RBAC in the type system
  • →Structuring a large App Router project with shared layouts
  • →Designing dashboards around real operational workflows