CoiffeurUrbain

Fullstack Developer

Bilingual barbershop booking platform with email flows, secure cancellation tokens, and a multi-role admin panel.

Next.js 16AdonisJS 7PostgreSQL 17next-intlshadcn/uiDockerpnpm workspaces
CoiffeurUrbain preview

Context

Personal project built solo in ~2 weeks. A fullstack bilingual platform built as a demonstrator for a barbershop — designed to attract potential clients (barbershops, small businesses).

Set up as a monorepo with pnpm 10 workspaces — Next.js frontend and AdonisJS backend sharing the same repository.

My role

Fullstack Developer

Designed and built everything from scratch in ~2 weeks. Shows ability to deliver a production-grade product with real UX concerns — bilingual, email flows, and token-based cancellation.

What I built

Design

conception
  • Monorepo setup with pnpm 10 workspaces (Next.js + AdonisJS)
  • Bilingual architecture (fr/en) with next-intl
  • Multi-role access control design — admin / moderator

Frontend

  • Next.js 16 + shadcn/ui + Tailwind CSS 4
  • Bilingual implementation (fr/en) with next-intl
  • Booking UI with real-time availability slots

Backend

  • Session-based auth — AdonisJS session driver, HTTP-only cookies
  • 3 middleware layers for role-based access control
  • Online booking with availability check and email confirmation
  • Appointment cancellation via unique token — no account required
  • Full admin panel — services, barbers, schedules, gallery, reviews, contact messages, stats
  • Customer review submission and moderation
  • Swagger UI API docs

DevOps

  • Multi-stage Dockerfiles (Alpine, non-root user)
  • Deployed on VPS via Dokploy
  • Japa (backend) + Vitest 4 (frontend) tests

Deployment

Deployed on VPS via Dokploy. Multi-stage Dockerfiles (Alpine, non-root user). Git push triggers auto-deploy on both services simultaneously. Monorepo managed with pnpm 10 workspaces — shared tooling, independent build pipelines.

Personal demonstrator project — built to showcase fullstack capabilities and attract potential clients. Shows ability to deliver a production-grade product with real UX concerns in a tight timeline.