New Brothers Barbershop | Booking & CRM Demo by Mario MoreraNew Brothers Barbershop | Booking & CRM Demo by Mario Morera

New Brothers Barbershop | Booking & CRM Demo

Mario Morera

Mario Morera

How I solved it

Bookings, payments and clients were handled through loose messages: schedule, cash and clients lived apart.
System architecture

Under the hood.

The system's real parts and how they talk: pick a path or open a component.
New Brothers · A barbershop's own CRM
HTTPSSessionPermissionsRPCRow lockInactiveFRONT (NEXT.JS 16)SECURITY (ROLES + RLS)SUPABASE
Web and mobile
/barbero/mi-agenda
The whole system
12 components, 14 connections and 3 guided paths.
Open a component to see what it receives, where it sends and which paths include it.

Components

Clients and team — Web and mobile
6-step booking — /reservar · wizard (Next.js 16)
Admin panel — 14 sections
Barber portal — /barbero/mi-agenda
Roles and permissions — has_permission() · 4 roles
Row Level Security — 26 tables with RLS
book_appointment — No double booking
close_cash_day — POS and cash close
close_barber_settlement — Payouts
Supabase Postgres — 26 tables · history
Reactivation — send-reminders
AI assistant — Gemini → OpenAI → rules

Connections

Clients and team → 6-step booking: HTTPS
Clients and team → Admin panel
6-step booking → Roles and permissions: Session
Admin panel → Row Level Security: Permissions
Barber portal → Row Level Security
Roles and permissions → Row Level Security
Roles and permissions → book_appointment: RPC
Row Level Security → close_cash_day
Row Level Security → close_barber_settlement
book_appointment → Supabase Postgres: Row lock
close_cash_day → Supabase Postgres
close_barber_settlement → Supabase Postgres
Supabase Postgres → AI assistant
Supabase Postgres → Reactivation: Inactive

Guided paths

Booking without double booking
Clients book in six steps and the book_appointment function checks the slot with a row lock before confirming it.Cash and payouts
The counter charges, closes the day's cash and settles what each barber is owed, all with role-based permissions.Clients and reactivation
Each client record keeps their history; an edge function flags inactive clients and the team reaches out on WhatsApp.
Role
Product, data architecture and full-stack development.
Stack
In production
nb-barber.vercel.app Read the case as text
01 · The challenge

Bring a barbershop's bookings, clients, cash and payouts into one system, without depending on an external CRM.

02 · Constraints
Quick decisions on mobile.
Four roles with different permissions: client, barber, manager and admin.
03 · Decisions
Six-step booking, one decision per step.
Its own CRM on Supabase instead of an external one.
Business rules live in the database: no double booking, cash close and barber payouts.
04 · Outcome
Booking becomes self-service and the business runs from its own panel: schedule, clients, cash, stock and payouts.
Gallery · live site captures

On a big screen and in a pocket.

Like this project

Posted Oct 8, 2026

Personal demo: a barbershop booking flow and custom dashboard for appointments, clients, cash close, inventory, and barber payouts.