# carloslimamecwide/barber-template architecture

> Architecture diagram of the GitHub repository carloslimamecwide/barber-template, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/carloslimamecwide/barber-template
- Repository: https://github.com/carloslimamecwide/barber-template

## Overview

Barbearia is a multi-professional appointment booking and management application. Customers submit public bookings; staff manage the agenda and business settings; scheduled jobs extend recurring appointments and process reminders and email notifications. The graph preserves the documented management, reporting, audit, and notification capabilities. Edges are limited to relationships visible in excerpts, indexed references, or the README; unsampled UI-to-route wiring is shown only as unverified where useful.

Main entry points: [`src/lib/prisma.ts`](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/prisma.ts) (PostgreSQL database), [`src/app/api/agendamentos/route.ts`](https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/agendamentos/route.ts) (Booking API), [`src/app/api`](https://github.com/carloslimamecwide/barber-template/tree/main/src/app/api) (Business management APIs), [`src/app/api/cron/route.ts`](https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/cron/route.ts) (Scheduled job API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_booking["Booking and availability"]
  node_booking_api["Booking API<br/>[route.ts]"]
  node_appointments["Appointment logic<br/>[agendamentos.ts]"]
  node_availability["Availability rules<br/>[disponibilidade.ts]"]
  node_schedule_math["Schedule calculations<br/>[horarios.ts]"]
  node_series_api["Recurring series API<br/>[route.ts]"]
  node_series_logic["Series extension<br/>[series.ts]"]
end

subgraph group_operations["Barbershop operations"]
  node_business_apis["Business management APIs"]
  node_configuration["Booking configuration<br/>[configuracao.ts]"]
  node_statistics["Statistics API<br/>[route.ts]"]
  node_audit["Audit logging<br/>[audit.ts]"]
end

subgraph group_access["Access and API"]
  node_auth_api["Authentication API"]
  node_authorization["Authorization<br/>[auth.ts]"]
  node_session["Session handling<br/>[session.ts]"]
  node_validation["Request validation<br/>[validations.ts]"]
  node_api_errors["API error responses<br/>[api.ts]"]
end

subgraph group_platform["Persistence and jobs"]
  node_notifications["Notification queue<br/>[notificacoes.ts]"]
  node_email["Email delivery<br/>[email.ts]"]
  node_cron_api["Scheduled job API<br/>[route.ts]"]
  node_database[("PostgreSQL database<br/>[prisma.ts]")]
  node_health["Health and readiness<br/>[route.ts]"]
end

subgraph group_experience["User interfaces"]
  node_booking_form["Public booking form<br/>[booking-form.tsx]"]
  node_manage_booking["Booking management"]
  node_reschedule_form["Reschedule form<br/>[reagendar-form.tsx]"]
  node_dashboard["Management dashboard"]
  node_login["Login form<br/>[login-form.tsx]"]
end

node_customer(("Customer"))
node_staff(("Staff"))
node_cron_actor(("Cron scheduler"))

node_customer -.->|"requests booking"| node_booking_form
node_booking_form -.->|"submits booking"| node_booking_api
node_booking_api -->|"creates appointment"| node_appointments
node_appointments -->|"validates slot"| node_availability
node_availability -->|"generates slots"| node_schedule_math
node_appointments -->|"queues confirmation"| node_notifications
node_booking_api -->|"validates request"| node_validation
node_booking_api -->|"reads and writes"| node_database
node_booking_api -->|"records action"| node_audit
node_series_api -->|"manages series"| node_series_logic
node_series_logic -->|"creates occurrences"| node_appointments
node_staff -.->|"manages operations"| node_dashboard
node_dashboard -.->|"uses management APIs"| node_business_apis
node_business_apis -->|"reads and writes"| node_database
node_business_apis -->|"checks access"| node_authorization
node_business_apis -->|"records changes"| node_audit
node_business_apis -->|"reads settings"| node_configuration
node_statistics -->|"queries metrics"| node_database
node_login -.->|"submits credentials"| node_auth_api
node_auth_api -.->|"verifies credentials"| node_authorization
node_authorization -->|"reads session"| node_session
node_authorization -->|"checks user"| node_database
node_reschedule_form -.->|"supports rescheduling"| node_manage_booking
node_customer -.->|"manages booking"| node_manage_booking
node_cron_actor -->|"triggers job"| node_cron_api
node_cron_api -->|"extends series"| node_series_logic
node_cron_api -->|"processes queue"| node_notifications
node_cron_api -->|"loads reminder settings"| node_configuration
node_cron_api -->|"records job state"| node_database
node_notifications -.->|"delivers email"| node_email
node_health -.->|"checks readiness"| node_database

click node_booking_form "https://github.com/carloslimamecwide/barber-template/blob/main/src/components/landing/booking-form.tsx"
click node_booking_api "https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/agendamentos/route.ts"
click node_appointments "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/agendamentos.ts"
click node_availability "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/disponibilidade.ts"
click node_schedule_math "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/horarios.ts"
click node_series_api "https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/series/route.ts"
click node_series_logic "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/series.ts"
click node_manage_booking "https://github.com/carloslimamecwide/barber-template/blob/main/src/components/reagendar/gestao-marcacao.tsx"
click node_reschedule_form "https://github.com/carloslimamecwide/barber-template/blob/main/src/components/reagendar/reagendar-form.tsx"
click node_dashboard "https://github.com/carloslimamecwide/barber-template/tree/main/src/app/dashboard"
click node_business_apis "https://github.com/carloslimamecwide/barber-template/tree/main/src/app/api"
click node_configuration "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/configuracao.ts"
click node_statistics "https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/estatisticas/route.ts"
click node_audit "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/audit.ts"
click node_login "https://github.com/carloslimamecwide/barber-template/blob/main/src/components/login/login-form.tsx"
click node_auth_api "https://github.com/carloslimamecwide/barber-template/tree/main/src/app/api/auth"
click node_authorization "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/auth.ts"
click node_session "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/session.ts"
click node_notifications "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/notificacoes.ts"
click node_email "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/email.ts"
click node_cron_api "https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/cron/route.ts"
click node_database "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/prisma.ts"
click node_validation "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/validations.ts"
click node_api_errors "https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/api.ts"
click node_health "https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/health/route.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_booking_api,node_appointments,node_availability,node_schedule_math,node_series_api,node_series_logic toneBlue
class node_business_apis,node_configuration,node_statistics,node_audit toneAmber
class node_auth_api,node_authorization,node_session,node_validation,node_api_errors toneMint
class node_notifications,node_email,node_cron_api,node_database,node_health,node_cron_actor toneRose
class node_booking_form,node_manage_booking,node_reschedule_form,node_dashboard,node_login,node_customer,node_staff toneIndigo
```

## Components

### Booking and availability

- [Booking API](https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/agendamentos/route.ts): `src/app/api/agendamentos/route.ts`
- [Appointment logic](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/agendamentos.ts): `src/lib/agendamentos.ts`
- [Availability rules](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/disponibilidade.ts): `src/lib/disponibilidade.ts`
- [Schedule calculations](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/horarios.ts): `src/lib/horarios.ts`
- [Recurring series API](https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/series/route.ts): `src/app/api/series/route.ts`
- [Series extension](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/series.ts): `src/lib/series.ts`

### Barbershop operations

- [Business management APIs](https://github.com/carloslimamecwide/barber-template/tree/main/src/app/api): `src/app/api`
- [Booking configuration](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/configuracao.ts): `src/lib/configuracao.ts`
- [Statistics API](https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/estatisticas/route.ts): `src/app/api/estatisticas/route.ts`
- [Audit logging](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/audit.ts): `src/lib/audit.ts`

### Access and API

- [Authentication API](https://github.com/carloslimamecwide/barber-template/tree/main/src/app/api/auth): `src/app/api/auth`
- [Authorization](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Session handling](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/session.ts): `src/lib/session.ts`
- [Request validation](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/validations.ts): `src/lib/validations.ts`
- [API error responses](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/api.ts): `src/lib/api.ts`

### Persistence and jobs

- [Notification queue](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/notificacoes.ts): `src/lib/notificacoes.ts`
- [Email delivery](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/email.ts): `src/lib/email.ts`
- [Scheduled job API](https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/cron/route.ts): `src/app/api/cron/route.ts`
- [PostgreSQL database](https://github.com/carloslimamecwide/barber-template/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`
- [Health and readiness](https://github.com/carloslimamecwide/barber-template/blob/main/src/app/api/health/route.ts): `src/app/api/health/route.ts`

### User interfaces

- [Public booking form](https://github.com/carloslimamecwide/barber-template/blob/main/src/components/landing/booking-form.tsx): `src/components/landing/booking-form.tsx`
- [Booking management](https://github.com/carloslimamecwide/barber-template/blob/main/src/components/reagendar/gestao-marcacao.tsx): `src/components/reagendar/gestao-marcacao.tsx`
- [Reschedule form](https://github.com/carloslimamecwide/barber-template/blob/main/src/components/reagendar/reagendar-form.tsx): `src/components/reagendar/reagendar-form.tsx`
- [Management dashboard](https://github.com/carloslimamecwide/barber-template/tree/main/src/app/dashboard): `src/app/dashboard`
- [Login form](https://github.com/carloslimamecwide/barber-template/blob/main/src/components/login/login-form.tsx): `src/components/login/login-form.tsx`

### Other components

- **Customer**
- **Staff**
- **Cron scheduler**

## Connections

- Customer → Public booking form: requests booking
- Public booking form → Booking API: submits booking
- Booking API → Appointment logic: creates appointment (evidence: `src/app/api/agendamentos/route.ts`)
- Appointment logic → Availability rules: validates slot (evidence: `src/lib/agendamentos.ts`)
- Availability rules → Schedule calculations: generates slots (evidence: `src/lib/disponibilidade.ts`)
- Appointment logic → Notification queue: queues confirmation (evidence: `src/lib/agendamentos.ts`)
- Booking API → Request validation: validates request (evidence: `src/app/api/agendamentos/route.ts`)
- Booking API → PostgreSQL database: reads and writes (evidence: `src/app/api/agendamentos/route.ts`)
- Booking API → Audit logging: records action (evidence: `src/app/api/agendamentos/route.ts`)
- Recurring series API → Series extension: manages series (evidence: `src/app/api/series/route.ts`)
- Series extension → Appointment logic: creates occurrences (evidence: `src/lib/series.ts`)
- Staff → Management dashboard: manages operations
- Management dashboard → Business management APIs: uses management APIs
- Business management APIs → PostgreSQL database: reads and writes (evidence: `src/app/api/clientes/route.ts`)
- Business management APIs → Authorization: checks access (evidence: `src/app/api/clientes/route.ts`)
- Business management APIs → Audit logging: records changes (evidence: `src/app/api/configuracao/route.ts`)
- Business management APIs → Booking configuration: reads settings (evidence: `src/app/api/configuracao/route.ts`)
- Statistics API → PostgreSQL database: queries metrics (evidence: `src/app/api/estatisticas/route.ts`)
- Login form → Authentication API: submits credentials
- Authentication API → Authorization: verifies credentials
- Authorization → Session handling: reads session (evidence: `src/lib/auth.ts`)
- Authorization → PostgreSQL database: checks user (evidence: `src/lib/auth.ts`)
- Reschedule form → Booking management: supports rescheduling
- Customer → Booking management: manages booking
- Cron scheduler → Scheduled job API: triggers job
- Scheduled job API → Series extension: extends series (evidence: `src/app/api/cron/route.ts`)
- Scheduled job API → Notification queue: processes queue (evidence: `src/app/api/cron/route.ts`)
- Scheduled job API → Booking configuration: loads reminder settings (evidence: `src/app/api/cron/route.ts`)
- Scheduled job API → PostgreSQL database: records job state (evidence: `src/app/api/cron/route.ts`)
- Notification queue → Email delivery: delivers email
- Health and readiness → PostgreSQL database: checks readiness
