# nelsonmuquissi/meukorte architecture

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

- Interactive diagram: https://gitdiagram.com/nelsonmuquissi/meukorte
- Repository: https://github.com/nelsonmuquissi/meukorte

## Overview

Meu Korte is an Angolan barber-booking MVP: customers find a barber, choose a home or salon appointment, select a service and available time, then confirm through WhatsApp. Customers can later consult, cancel, and review completed bookings; barber and admin panels are PIN-gated demonstrations. The MVP has no backend: demo partner data is bundled in TypeScript, while bookings, reviews, and profile details are stored on each customer’s device. Edges reflect README statements and source-index references; unsampled panel and salon internals are not inferred.

Main entry points: [`src/components/salon/SalonFlow.tsx`](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/salon/SalonFlow.tsx) (Salon booking flow), [`src/services/bookingsService.ts`](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/bookingsService.ts) (Booking service), [`src/components/booking/BookingFlow.tsx`](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/BookingFlow.tsx) (Home booking flow), [`src/services/reviewsService.ts`](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/reviewsService.ts) (Review service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discover barbers"]
  node_home["Home page<br/>[page.tsx]"]
  node_barber_list["Barber directory<br/>[page.tsx]"]
  node_barber_profile["Barber profile<br/>[page.tsx]"]
end

subgraph group_booking["Booking journeys"]
  node_booking_route["Home booking route<br/>[page.tsx]"]
  node_home_flow["Home booking flow<br/>[BookingFlow.tsx]"]
  node_salon_route["Salon route<br/>[page.tsx]"]
  node_salon_flow["Salon booking flow<br/>[SalonFlow.tsx]"]
  node_calendar["Availability calendar<br/>[Calendar.tsx]"]
  node_whatsapp_lib["WhatsApp links<br/>[whatsapp.ts]"]
end

subgraph group_account["Customer and panels"]
  node_account_route["Account route<br/>[page.tsx]"]
  node_account_area["Bookings and reviews<br/>[AccountArea.tsx]"]
  node_review_form["Review form<br/>[ReviewForm.tsx]"]
  node_barber_panel["Barber demo panel<br/>[BarberPanel.tsx]"]
  node_admin_panel["Admin demo panel<br/>[AdminPanel.tsx]"]
end

subgraph group_data["MVP data services"]
  node_booking_service["Booking service<br/>[bookingsService.ts]"]
  node_barber_service["Barber service<br/>[barbersService.ts]"]
  node_shop_service["Barbershop service"]
  node_review_service["Review service<br/>[reviewsService.ts]"]
  node_profile_service["Profile service<br/>[profileService.ts]"]
  node_storage[("Device storage<br/>[storage.ts]")]
  node_barber_data["Demo barbers<br/>[barbers.ts]"]
  node_shop_data["Demo barbershops<br/>[barbershops.ts]"]
  node_business_config["Business rules<br/>[business.ts]"]
end

node_customer(("Customer"))
node_whatsapp(("WhatsApp"))

node_customer -->|"browses"| node_home
node_customer -->|"finds barber"| node_barber_list
node_barber_list -->|"loads list"| node_barber_service
node_barber_service -->|"reads demo data"| node_barber_data
node_customer -->|"views profile"| node_barber_profile
node_barber_profile -->|"loads barber"| node_barber_service
node_customer -->|"starts home booking"| node_booking_route
node_booking_route -->|"renders"| node_home_flow
node_customer -->|"chooses salon"| node_salon_route
node_salon_route -->|"renders"| node_salon_flow
node_home_flow -->|"checks slots"| node_booking_service
node_salon_flow -->|"checks shop slots"| node_booking_service
node_salon_flow -->|"loads shops"| node_shop_service
node_shop_service -->|"reads demo data"| node_shop_data
node_home_flow -->|"uses"| node_calendar
node_salon_flow -->|"uses"| node_calendar
node_booking_service -->|"reads and writes"| node_storage
node_booking_service -->|"applies rules"| node_business_config
node_customer -->|"manages bookings"| node_account_route
node_account_route -->|"renders"| node_account_area
node_account_area -->|"creates reviews"| node_review_service
node_review_form -->|"submits review"| node_review_service
node_review_service -->|"validates booking"| node_booking_service
node_review_service -->|"reads and writes"| node_storage
node_account_area -->|"uses profile"| node_profile_service
node_profile_service -->|"reads and writes"| node_storage
node_customer -->|"opens demo panel"| node_barber_panel
node_customer -->|"opens demo panel"| node_admin_panel
node_home_flow -->|"builds confirmation"| node_whatsapp_lib
node_salon_flow -->|"builds confirmation"| node_whatsapp_lib
node_whatsapp_lib -->|"opens chat"| node_whatsapp

click node_home "https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/page.tsx"
click node_barber_list "https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/barbeiros/page.tsx"
click node_barber_profile "https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/barbeiros/%5Bid%5D/page.tsx"
click node_booking_route "https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/agendar/page.tsx"
click node_home_flow "https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/BookingFlow.tsx"
click node_salon_route "https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/salao/page.tsx"
click node_salon_flow "https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/salon/SalonFlow.tsx"
click node_calendar "https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/Calendar.tsx"
click node_account_route "https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/conta/page.tsx"
click node_account_area "https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/account/AccountArea.tsx"
click node_review_form "https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/ReviewForm.tsx"
click node_barber_panel "https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/BarberPanel.tsx"
click node_admin_panel "https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/AdminPanel.tsx"
click node_booking_service "https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/bookingsService.ts"
click node_barber_service "https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/barbersService.ts"
click node_shop_service "https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/barbershopsService.ts"
click node_review_service "https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/reviewsService.ts"
click node_profile_service "https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/profileService.ts"
click node_storage "https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/storage.ts"
click node_barber_data "https://github.com/nelsonmuquissi/meukorte/blob/main/src/data/barbers.ts"
click node_shop_data "https://github.com/nelsonmuquissi/meukorte/blob/main/src/data/barbershops.ts"
click node_business_config "https://github.com/nelsonmuquissi/meukorte/blob/main/src/config/business.ts"
click node_whatsapp_lib "https://github.com/nelsonmuquissi/meukorte/blob/main/src/lib/whatsapp.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_home,node_barber_list,node_barber_profile toneBlue
class node_booking_route,node_home_flow,node_salon_route,node_salon_flow,node_calendar,node_whatsapp_lib toneAmber
class node_account_route,node_account_area,node_review_form,node_barber_panel,node_admin_panel toneMint
class node_booking_service,node_barber_service,node_shop_service,node_review_service,node_profile_service,node_storage,node_barber_data,node_shop_data,node_business_config toneRose
class node_customer,node_whatsapp toneIndigo
```

## Components

### Discover barbers

- [Home page](https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Barber directory](https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/barbeiros/page.tsx): `src/app/barbeiros/page.tsx`
- [Barber profile](https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/barbeiros/%5Bid%5D/page.tsx): `src/app/barbeiros/[id]/page.tsx`

### Booking journeys

- [Home booking route](https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/agendar/page.tsx): `src/app/agendar/page.tsx`
- [Home booking flow](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/BookingFlow.tsx): `src/components/booking/BookingFlow.tsx`
- [Salon route](https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/salao/page.tsx): `src/app/salao/page.tsx`
- [Salon booking flow](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/salon/SalonFlow.tsx): `src/components/salon/SalonFlow.tsx`
- [Availability calendar](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/Calendar.tsx): `src/components/booking/Calendar.tsx`
- [WhatsApp links](https://github.com/nelsonmuquissi/meukorte/blob/main/src/lib/whatsapp.ts): `src/lib/whatsapp.ts`

### Customer and panels

- [Account route](https://github.com/nelsonmuquissi/meukorte/blob/main/src/app/conta/page.tsx): `src/app/conta/page.tsx`
- [Bookings and reviews](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/account/AccountArea.tsx): `src/components/account/AccountArea.tsx`
- [Review form](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/ReviewForm.tsx): `src/components/booking/ReviewForm.tsx`
- [Barber demo panel](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/BarberPanel.tsx): `src/components/booking/BarberPanel.tsx`
- [Admin demo panel](https://github.com/nelsonmuquissi/meukorte/blob/main/src/components/booking/AdminPanel.tsx): `src/components/booking/AdminPanel.tsx`

### MVP data services

- [Booking service](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/bookingsService.ts): `src/services/bookingsService.ts`
- [Barber service](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/barbersService.ts): `src/services/barbersService.ts`
- [Barbershop service](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/barbershopsService.ts): `src/services/barbershopsService.ts`
- [Review service](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/reviewsService.ts): `src/services/reviewsService.ts`
- [Profile service](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/profileService.ts): `src/services/profileService.ts`
- [Device storage](https://github.com/nelsonmuquissi/meukorte/blob/main/src/services/storage.ts): `src/services/storage.ts`
- [Demo barbers](https://github.com/nelsonmuquissi/meukorte/blob/main/src/data/barbers.ts): `src/data/barbers.ts`
- [Demo barbershops](https://github.com/nelsonmuquissi/meukorte/blob/main/src/data/barbershops.ts): `src/data/barbershops.ts`
- [Business rules](https://github.com/nelsonmuquissi/meukorte/blob/main/src/config/business.ts): `src/config/business.ts`

### Other components

- **Customer**
- **WhatsApp**

## Connections

- Customer → Home page: browses (evidence: `README.md`)
- Customer → Barber directory: finds barber (evidence: `README.md`)
- Barber directory → Barber service: loads list (evidence: `src/app/barbeiros/page.tsx`)
- Barber service → Demo barbers: reads demo data (evidence: `src/services/barbersService.ts`)
- Customer → Barber profile: views profile (evidence: `README.md`)
- Barber profile → Barber service: loads barber (evidence: `src/app/barbeiros/[id]/page.tsx`)
- Customer → Home booking route: starts home booking (evidence: `README.md`)
- Home booking route → Home booking flow: renders (evidence: `src/app/agendar/page.tsx`)
- Customer → Salon route: chooses salon (evidence: `README.md`)
- Salon route → Salon booking flow: renders (evidence: `src/app/salao/page.tsx`)
- Home booking flow → Booking service: checks slots (evidence: `src/components/booking/BookingFlow.tsx`)
- Salon booking flow → Booking service: checks shop slots (evidence: `src/components/salon/SalonFlow.tsx`)
- Salon booking flow → Barbershop service: loads shops (evidence: `src/app/salao/page.tsx`)
- Barbershop service → Demo barbershops: reads demo data (evidence: `src/services/barbershopsService.ts`)
- Home booking flow → Availability calendar: uses (evidence: `src/components/booking/BookingFlow.tsx`)
- Salon booking flow → Availability calendar: uses (evidence: `src/components/salon/SalonFlow.tsx`)
- Booking service → Device storage: reads and writes (evidence: `src/services/bookingsService.ts`)
- Booking service → Business rules: applies rules (evidence: `src/services/bookingsService.ts`)
- Customer → Account route: manages bookings (evidence: `README.md`)
- Account route → Bookings and reviews: renders (evidence: `src/app/conta/page.tsx`)
- Bookings and reviews → Review service: creates reviews (evidence: `src/components/account/AccountArea.tsx`)
- Review form → Review service: submits review (evidence: `src/components/booking/ReviewForm.tsx`)
- Review service → Booking service: validates booking (evidence: `src/services/reviewsService.ts`)
- Review service → Device storage: reads and writes (evidence: `src/services/reviewsService.ts`)
- Bookings and reviews → Profile service: uses profile (evidence: `src/components/account/AccountArea.tsx`)
- Profile service → Device storage: reads and writes (evidence: `src/services/profileService.ts`)
- Customer → Barber demo panel: opens demo panel (evidence: `README.md`)
- Customer → Admin demo panel: opens demo panel (evidence: `README.md`)
- Home booking flow → WhatsApp links: builds confirmation (evidence: `src/components/booking/BookingFlow.tsx`)
- Salon booking flow → WhatsApp links: builds confirmation (evidence: `src/components/salon/SalonFlow.tsx`)
- WhatsApp links → WhatsApp: opens chat (evidence: `README.md`)
