# aenshtyn/thirty-degrees-east architecture

> Architecture diagram of the GitHub repository aenshtyn/thirty-degrees-east, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aenshtyn/thirty-degrees-east
- Repository: https://github.com/aenshtyn/thirty-degrees-east

## Overview

30 Degrees East is a video-first personal-brand and coaching website. Visitors discover Swaleh’s positioning and content, explore coaching, audit, teaching, partnership, and digital-product offers, then submit inquiries, waitlist entries, or a Global Teacher Playbook application. The sampled code confirms the waitlist and application handlers’ email and optional Sheets integrations; README documents the wider page and video-library capabilities. Some page-to-form wiring is not sampled, so only documented or directly evidenced connections are shown.

Main entry points: [`app/api/waitlist/route.ts`](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/waitlist/route.ts) (Waitlist handler), [`app/api/global-teacher-playbook/enrol/route.ts`](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/global-teacher-playbook/enrol/route.ts) (Application handler), [`app/insights/page.tsx`](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/insights/page.tsx) (Insights library), [`app/api/contact/route.ts`](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/contact/route.ts) (Contact handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery and content"]
  node_home["Home<br/>[page.tsx]"]
  node_about["About<br/>[page.tsx]"]
  node_start["Start here<br/>[page.tsx]"]
  node_insights["Insights library<br/>[page.tsx]"]
  node_video_data["Video catalog<br/>[videos.ts]"]
end

subgraph group_offers["Programs and services"]
  node_coaching["Coaching offers<br/>[page.tsx]"]
  node_audit["Teaching system audit<br/>[page.tsx]"]
  node_english["English teaching course<br/>[page.tsx]"]
  node_playbook["Playbook overview<br/>[page.tsx]"]
  node_enrol_page["Playbook enrolment<br/>[page.tsx]"]
  node_partner["Partner program<br/>[page.tsx]"]
  node_co_creation["Co-creation<br/>[page.tsx]"]
end

subgraph group_conversion["Forms and submissions"]
  node_contact_page["Contact page<br/>[page.tsx]"]
  node_waitlist_ui["Waitlist form<br/>[WaitlistForm.tsx]"]
  node_enrol_form["Application form<br/>[EnrolmentForm.tsx]"]
  node_contact_api["Contact handler<br/>[route.ts]"]
  node_waitlist_api["Waitlist handler<br/>[route.ts]"]
  node_playbook_api["Application handler<br/>[route.ts]"]
  node_form_utils["Form validation utilities<br/>[form-utils.ts]"]
  node_resend_waitlist["Waitlist contact sync<br/>[resend-waitlist.ts]"]
end

subgraph group_integrations["External services"]
  node_sheets["Google Sheets<br/>[google-sheets.ts]"]
  node_resend["Resend email service"]
  node_video_host["Vimeo or YouTube"]
end

node_visitor(("Site visitor"))

node_visitor -->|"opens site"| node_home
node_visitor -->|"explores"| node_start
node_visitor -->|"views videos"| node_insights
node_visitor -->|"explores offers"| node_coaching
node_visitor -->|"considers audit"| node_audit
node_visitor -->|"views course"| node_english
node_visitor -->|"views program"| node_playbook
node_visitor -->|"explores partnership"| node_partner
node_visitor -->|"seeks contact"| node_contact_page
node_home -->|"renders"| node_waitlist_ui
node_playbook -->|"links to enrol"| node_enrol_page
node_enrol_page -->|"renders"| node_enrol_form
node_enrol_form -->|"posts application"| node_playbook_api
node_waitlist_ui -->|"submits signup"| node_waitlist_api
node_contact_page -->|"submits inquiry"| node_contact_api
node_playbook_api -->|"validates input"| node_form_utils
node_contact_api -->|"validates input"| node_form_utils
node_waitlist_api -->|"normalizes input"| node_form_utils
node_waitlist_api -->|"saves contact"| node_resend_waitlist
node_waitlist_api -.->|"mirrors signup"| node_sheets
node_playbook_api -.->|"records application"| node_sheets
node_waitlist_api -->|"sends emails"| node_resend
node_contact_api -->|"sends inquiry"| node_resend
node_playbook_api -->|"sends emails"| node_resend
node_insights -->|"reads catalog"| node_video_data
node_insights -->|"embeds video"| node_video_host

click node_home "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/page.tsx"
click node_about "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/about/page.tsx"
click node_start "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/start-here/page.tsx"
click node_insights "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/insights/page.tsx"
click node_video_data "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/data/videos.ts"
click node_coaching "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/coaching/page.tsx"
click node_audit "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/teaching-system-audit/page.tsx"
click node_english "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/teach-english-online/page.tsx"
click node_playbook "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/global-teacher-playbook/page.tsx"
click node_enrol_page "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/global-teacher-playbook/enrol/page.tsx"
click node_partner "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/partner-with-swaleh/page.tsx"
click node_co_creation "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/co-creation/page.tsx"
click node_contact_page "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/contact/page.tsx"
click node_waitlist_ui "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/components/ui/WaitlistForm.tsx"
click node_enrol_form "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/components/global-teacher-playbook/EnrolmentForm.tsx"
click node_contact_api "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/contact/route.ts"
click node_waitlist_api "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/waitlist/route.ts"
click node_playbook_api "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/global-teacher-playbook/enrol/route.ts"
click node_form_utils "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/server/form-utils.ts"
click node_resend_waitlist "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/server/resend-waitlist.ts"
click node_sheets "https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/server/google-sheets.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_about,node_start,node_insights,node_video_data toneBlue
class node_coaching,node_audit,node_english,node_playbook,node_enrol_page,node_partner,node_co_creation toneAmber
class node_contact_page,node_waitlist_ui,node_enrol_form,node_contact_api,node_waitlist_api,node_playbook_api,node_form_utils,node_resend_waitlist toneMint
class node_sheets,node_resend,node_video_host toneRose
class node_visitor toneIndigo
```

## Components

### Discovery and content

- [Home](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/page.tsx): `app/page.tsx`
- [About](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/about/page.tsx): `app/about/page.tsx`
- [Start here](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/start-here/page.tsx): `app/start-here/page.tsx`
- [Insights library](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/insights/page.tsx): `app/insights/page.tsx`
- [Video catalog](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/data/videos.ts): `lib/data/videos.ts`

### Programs and services

- [Coaching offers](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/coaching/page.tsx): `app/coaching/page.tsx`
- [Teaching system audit](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/teaching-system-audit/page.tsx): `app/teaching-system-audit/page.tsx`
- [English teaching course](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/teach-english-online/page.tsx): `app/teach-english-online/page.tsx`
- [Playbook overview](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/global-teacher-playbook/page.tsx): `app/global-teacher-playbook/page.tsx`
- [Playbook enrolment](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/global-teacher-playbook/enrol/page.tsx): `app/global-teacher-playbook/enrol/page.tsx`
- [Partner program](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/partner-with-swaleh/page.tsx): `app/partner-with-swaleh/page.tsx`
- [Co-creation](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/co-creation/page.tsx): `app/co-creation/page.tsx`

### Forms and submissions

- [Contact page](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/contact/page.tsx): `app/contact/page.tsx`
- [Waitlist form](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/components/ui/WaitlistForm.tsx): `components/ui/WaitlistForm.tsx`
- [Application form](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/components/global-teacher-playbook/EnrolmentForm.tsx): `components/global-teacher-playbook/EnrolmentForm.tsx`
- [Contact handler](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/contact/route.ts): `app/api/contact/route.ts`
- [Waitlist handler](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/waitlist/route.ts): `app/api/waitlist/route.ts`
- [Application handler](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/app/api/global-teacher-playbook/enrol/route.ts): `app/api/global-teacher-playbook/enrol/route.ts`
- [Form validation utilities](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/server/form-utils.ts): `lib/server/form-utils.ts`
- [Waitlist contact sync](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/server/resend-waitlist.ts): `lib/server/resend-waitlist.ts`

### External services

- [Google Sheets](https://github.com/aenshtyn/thirty-degrees-east/blob/dev/lib/server/google-sheets.ts): `lib/server/google-sheets.ts`
- **Resend email service**
- **Vimeo or YouTube**

### Other components

- **Site visitor**

## Connections

- Site visitor → Home: opens site
- Site visitor → Start here: explores
- Site visitor → Insights library: views videos
- Site visitor → Coaching offers: explores offers
- Site visitor → Teaching system audit: considers audit
- Site visitor → English teaching course: views course
- Site visitor → Playbook overview: views program
- Site visitor → Partner program: explores partnership
- Site visitor → Contact page: seeks contact
- Home → Waitlist form: renders
- Playbook overview → Playbook enrolment: links to enrol
- Playbook enrolment → Application form: renders
- Application form → Application handler: posts application
- Waitlist form → Waitlist handler: submits signup
- Contact page → Contact handler: submits inquiry
- Application handler → Form validation utilities: validates input
- Contact handler → Form validation utilities: validates input
- Waitlist handler → Form validation utilities: normalizes input
- Waitlist handler → Waitlist contact sync: saves contact
- Waitlist handler → Google Sheets: mirrors signup
- Application handler → Google Sheets: records application
- Waitlist handler → Resend email service: sends emails
- Contact handler → Resend email service: sends inquiry
- Application handler → Resend email service: sends emails
- Insights library → Video catalog: reads catalog
- Insights library → Vimeo or YouTube: embeds video
