# getachofiraol717-ai/speedy-project-starter architecture

> Architecture diagram of the GitHub repository getachofiraol717-ai/speedy-project-starter, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/getachofiraol717-ai/speedy-project-starter
- Repository: https://github.com/getachofiraol717-ai/speedy-project-starter

## Overview

This is a browser-based interactive science-learning application: visitors can explore its landing and pricing pages, then authenticate and access a dashboard, interactive 3D topic lessons, AI tutoring, video lessons, quizzes, progress, and account settings. Admin access is routed separately. The sampled source confirms the React route structure, Supabase-backed authentication and premium-role check, and locally stored usage limits. Individual lesson, quiz, and AI request wiring was not sampled, so those connections are not inferred.

Main entry points: [`src/components/ProtectedRoute.tsx`](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/components/ProtectedRoute.tsx) (Protected routes), [`src/App.tsx`](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/App.tsx) (Application router), [`src/hooks/usePaywall.tsx`](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/hooks/usePaywall.tsx) (Premium and usage limits), [`src/hooks/useAuth.tsx`](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/hooks/useAuth.tsx) (Authentication context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App and entry"]
  node_app["Application router<br/>[App.tsx]"]
  node_landing["Landing page<br/>[Index.tsx]"]
  node_pricing["Pricing<br/>[PricingPage.tsx]"]
end

subgraph group_learning["Learning experiences"]
  node_dashboard["Learning dashboard<br/>[Dashboard.tsx]"]
  node_three_d["3D lesson catalog<br/>[Learning3D.tsx]"]
  node_topic_lessons["3D topic lessons"]
  node_ai_tutor["AI tutor<br/>[AITutor.tsx]"]
  node_video_lessons["Video lessons<br/>[VideoLessons.tsx]"]
  node_quizzes["Quizzes<br/>[Quizzes.tsx]"]
  node_progress["Learning progress<br/>[ProgressPage.tsx]"]
end

subgraph group_identity["Identity and access"]
  node_authpage["Sign-in and signup<br/>[AuthPage.tsx]"]
  node_settings["Account settings<br/>[SettingsPage.tsx]"]
  node_admin["Admin dashboard<br/>[AdminDashboard.tsx]"]
  node_protected_route["Protected routes<br/>[ProtectedRoute.tsx]"]
  node_admin_route["Admin route<br/>[AdminRoute.tsx]"]
  node_auth_context["Authentication context<br/>[useAuth.tsx]"]
  node_paywall["Premium and usage limits<br/>[usePaywall.tsx]"]
end

subgraph group_platform["Backend services"]
  node_supabase_client["Supabase client<br/>[client.ts]"]
  node_supabase[("Supabase service")]
  node_ai_function["AI tutor function<br/>[index.ts]"]
  node_browser_storage[("Browser local storage")]
end

node_learner(("Learner"))

node_learner -->|"opens"| node_app
node_app -->|"routes"| node_landing
node_app -->|"routes"| node_authpage
node_app -->|"routes"| node_pricing
node_app -->|"guards"| node_protected_route
node_protected_route -->|"routes"| node_dashboard
node_protected_route -->|"routes"| node_three_d
node_protected_route -->|"routes"| node_topic_lessons
node_protected_route -->|"routes"| node_ai_tutor
node_protected_route -->|"routes"| node_video_lessons
node_protected_route -->|"routes"| node_quizzes
node_protected_route -->|"routes"| node_progress
node_protected_route -->|"routes"| node_settings
node_app -->|"guards"| node_admin_route
node_admin_route -->|"routes"| node_admin
node_app -->|"provides"| node_auth_context
node_auth_context -->|"auth calls"| node_supabase_client
node_supabase_client -->|"connects"| node_supabase
node_paywall -->|"reads user"| node_auth_context
node_paywall -->|"checks premium"| node_supabase_client
node_paywall -->|"reads and writes"| node_browser_storage

click node_app "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/App.tsx"
click node_landing "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Index.tsx"
click node_authpage "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/AuthPage.tsx"
click node_dashboard "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Dashboard.tsx"
click node_three_d "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Learning3D.tsx"
click node_topic_lessons "https://github.com/getachofiraol717-ai/speedy-project-starter/tree/main/src/pages"
click node_ai_tutor "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/AITutor.tsx"
click node_video_lessons "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/VideoLessons.tsx"
click node_quizzes "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Quizzes.tsx"
click node_progress "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/ProgressPage.tsx"
click node_settings "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/SettingsPage.tsx"
click node_admin "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/AdminDashboard.tsx"
click node_pricing "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/PricingPage.tsx"
click node_protected_route "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/components/ProtectedRoute.tsx"
click node_admin_route "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/components/AdminRoute.tsx"
click node_auth_context "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/hooks/useAuth.tsx"
click node_paywall "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/hooks/usePaywall.tsx"
click node_supabase_client "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/integrations/supabase/client.ts"
click node_ai_function "https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/supabase/functions/ai-tutor/index.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_app,node_landing,node_pricing toneBlue
class node_dashboard,node_three_d,node_topic_lessons,node_ai_tutor,node_video_lessons,node_quizzes,node_progress toneAmber
class node_authpage,node_settings,node_admin,node_protected_route,node_admin_route,node_auth_context,node_paywall toneMint
class node_supabase_client,node_supabase,node_ai_function,node_browser_storage toneRose
class node_learner toneIndigo
```

## Components

### App and entry

- [Application router](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/App.tsx): `src/App.tsx`
- [Landing page](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Index.tsx): `src/pages/Index.tsx`
- [Pricing](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/PricingPage.tsx): `src/pages/PricingPage.tsx`

### Learning experiences

- [Learning dashboard](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Dashboard.tsx): `src/pages/Dashboard.tsx`
- [3D lesson catalog](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Learning3D.tsx): `src/pages/Learning3D.tsx`
- [3D topic lessons](https://github.com/getachofiraol717-ai/speedy-project-starter/tree/main/src/pages): `src/pages`
- [AI tutor](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/AITutor.tsx): `src/pages/AITutor.tsx`
- [Video lessons](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/VideoLessons.tsx): `src/pages/VideoLessons.tsx`
- [Quizzes](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/Quizzes.tsx): `src/pages/Quizzes.tsx`
- [Learning progress](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/ProgressPage.tsx): `src/pages/ProgressPage.tsx`

### Identity and access

- [Sign-in and signup](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/AuthPage.tsx): `src/pages/AuthPage.tsx`
- [Account settings](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/SettingsPage.tsx): `src/pages/SettingsPage.tsx`
- [Admin dashboard](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/pages/AdminDashboard.tsx): `src/pages/AdminDashboard.tsx`
- [Protected routes](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/components/ProtectedRoute.tsx): `src/components/ProtectedRoute.tsx`
- [Admin route](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/components/AdminRoute.tsx): `src/components/AdminRoute.tsx`
- [Authentication context](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/hooks/useAuth.tsx): `src/hooks/useAuth.tsx`
- [Premium and usage limits](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/hooks/usePaywall.tsx): `src/hooks/usePaywall.tsx`

### Backend services

- [Supabase client](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/src/integrations/supabase/client.ts): `src/integrations/supabase/client.ts`
- **Supabase service**
- [AI tutor function](https://github.com/getachofiraol717-ai/speedy-project-starter/blob/main/supabase/functions/ai-tutor/index.ts): `supabase/functions/ai-tutor/index.ts`
- **Browser local storage**

### Other components

- **Learner**

## Connections

- Learner → Application router: opens
- Application router → Landing page: routes
- Application router → Sign-in and signup: routes
- Application router → Pricing: routes
- Application router → Protected routes: guards
- Protected routes → Learning dashboard: routes
- Protected routes → 3D lesson catalog: routes
- Protected routes → 3D topic lessons: routes
- Protected routes → AI tutor: routes
- Protected routes → Video lessons: routes
- Protected routes → Quizzes: routes
- Protected routes → Learning progress: routes
- Protected routes → Account settings: routes
- Application router → Admin route: guards
- Admin route → Admin dashboard: routes
- Application router → Authentication context: provides
- Authentication context → Supabase client: auth calls
- Supabase client → Supabase service: connects
- Premium and usage limits → Authentication context: reads user
- Premium and usage limits → Supabase client: checks premium
- Premium and usage limits → Browser local storage: reads and writes
