# System overview

```mermaid
flowchart LR
  Browser["Browser"] --> Next["frontend Next.js :3000"]
  Next --> API["backend Express /api/v1 :4000"]
  API --> DB["PostgreSQL Prisma"]
  API --> S3["S3 / MinIO"]
  API --> Mail["Resend / SMTP"]
  subgraph career [Career loop]
    API --> Tracks["Tracks / Skills"]
    API --> Coach["Coach match"]
    API --> Evidence["Evidence"]
    API --> Employer["Talent / invoices"]
  end
```

## Stack

| Layer | Tech |
|-------|------|
| Frontend | Next.js 16, React 19, TypeScript, Chakra UI 3, Zustand, React Query |
| Backend | Node, Express, TypeScript, Prisma 5, PostgreSQL, JWT/sessions, Socket.IO |
| Storage / mail | S3/MinIO, Resend/SMTP |
| Payments (non–employer-seat MVP) | Stripe, Flutterwave (courses/coaching) |

## CMH loop

```mermaid
flowchart LR
  Intake[Learner intake] --> Match[Coach match]
  Match --> Sessions[Live coaching]
  Sessions --> Evidence[Work sample + live review + attestation]
  Evidence --> Profile[Publish /u slug]
  Profile --> Hire[Employer search / intro]
```

See [Career loop](/architecture/career-loop) and [Frontend / Backend](/architecture/frontend-backend).
