# miavatra/tutoconnect architecture

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

- Interactive diagram: https://gitdiagram.com/miavatra/tutoconnect
- Repository: https://github.com/miavatra/tutoconnect

## Overview

TutoConnect is a tutoring marketplace for students, tutors, and administrators. Students enter through the public site, sign in, search tutor listings, inspect a profile, and can proceed to booking; the product also presents session management, messaging, reviews, and credit wallets. Tutor and admin areas provide their respective management screens. The repository includes Supabase authentication and migrations, while listings and some interactions are explicitly mocked in the README or sampled source. Uninspected page-to-service wiring is not assumed; documented capabilities are shown without asserting persistence.

Main entry points: [`src/App.tsx`](https://github.com/miavatra/tutoconnect/blob/main/src/App.tsx) (Route application), [`src/pages/StudentSearch.tsx`](https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentSearch.tsx) (Tutor search), [`src/pages/TutorDetail.tsx`](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorDetail.tsx) (Tutor profile), [`src/lib/supabase.ts`](https://github.com/miavatra/tutoconnect/blob/main/src/lib/supabase.ts) (Supabase client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public and access"]
  node_app["Route application<br/>[App.tsx]"]
  node_home["Public home<br/>[Home.tsx]"]
  node_account["Login and signup"]
  node_route_guard["Role protection<br/>[ProtectedRoute.tsx]"]
end

subgraph group_student["Student learning"]
  node_student_search["Tutor search<br/>[StudentSearch.tsx]"]
  node_listing_data["Mock listings<br/>[mockListings.ts]"]
  node_tutor_detail["Tutor profile<br/>[TutorDetail.tsx]"]
  node_booking["Session booking<br/>[BookingModal.tsx]"]
  node_student_sessions["Student sessions"]
  node_student_messages["Student messages"]
  node_student_wallet["Student wallet<br/>[StudentWallet.tsx]"]
  node_review["Session review<br/>[ReviewModal.tsx]"]
end

subgraph group_tutor["Tutor workspace"]
  node_tutor_dashboard["Tutor dashboard<br/>[TutorDashboard.tsx]"]
  node_tutor_profile["Tutor profile setup<br/>[TutorProfile.tsx]"]
  node_tutor_sessions["Tutor sessions<br/>[TutorSessions.tsx]"]
  node_tutor_messages["Tutor messages<br/>[TutorMessages.tsx]"]
  node_tutor_wallet["Tutor wallet<br/>[TutorWallet.tsx]"]
  node_tutor_preview["Public preview"]
end

subgraph group_admin["Administration"]
  node_admin_dashboard["Admin dashboard<br/>[AdminDashboard.tsx]"]
  node_admin_disputes["Dispute handling<br/>[AdminDisputes.tsx]"]
  node_admin_moderation["Content moderation"]
end

subgraph group_platform["Shared platform"]
  node_auth_logic["Authentication logic<br/>[auth.ts]"]
  node_supabase_client["Supabase client<br/>[supabase.ts]"]
  node_schema["Database schema"]
end

node_student_actor(("Student"))
node_tutor_actor(("Tutor"))
node_admin_actor(("Administrator"))
node_supabase_service[("Supabase")]

node_student_actor -->|"opens"| node_app
node_tutor_actor -->|"opens"| node_app
node_admin_actor -->|"opens"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_account
node_app -->|"protects routes"| node_route_guard
node_app -->|"routes to"| node_student_search
node_app -->|"routes to"| node_tutor_detail
node_app -->|"routes to"| node_student_sessions
node_app -->|"routes to"| node_student_messages
node_app -->|"routes to"| node_student_wallet
node_app -->|"routes to"| node_tutor_dashboard
node_app -->|"routes to"| node_tutor_profile
node_app -->|"routes to"| node_tutor_sessions
node_app -->|"routes to"| node_tutor_messages
node_app -->|"routes to"| node_tutor_wallet
node_app -->|"routes to"| node_tutor_preview
node_app -->|"routes to"| node_admin_dashboard
node_app -->|"routes to"| node_admin_disputes
node_app -->|"routes to"| node_admin_moderation
node_student_search -->|"reads listings"| node_listing_data
node_student_search -->|"links to"| node_tutor_detail
node_tutor_detail -.->|"opens booking"| node_booking
node_student_sessions -.->|"opens review"| node_review
node_account -.->|"authenticates"| node_auth_logic
node_app -->|"checks auth state"| node_supabase_client
node_auth_logic -->|"uses client"| node_supabase_client
node_supabase_client -->|"connects"| node_supabase_service
node_schema -->|"defines tables"| node_supabase_service

click node_app "https://github.com/miavatra/tutoconnect/blob/main/src/App.tsx"
click node_home "https://github.com/miavatra/tutoconnect/blob/main/src/pages/Home.tsx"
click node_account "https://github.com/miavatra/tutoconnect/tree/main/src/pages"
click node_route_guard "https://github.com/miavatra/tutoconnect/blob/main/src/components/ProtectedRoute.tsx"
click node_student_search "https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentSearch.tsx"
click node_listing_data "https://github.com/miavatra/tutoconnect/blob/main/src/lib/mockListings.ts"
click node_tutor_detail "https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorDetail.tsx"
click node_booking "https://github.com/miavatra/tutoconnect/blob/main/src/components/BookingModal.tsx"
click node_student_sessions "https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentSessions.tsx"
click node_student_messages "https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentMessages.tsx"
click node_student_wallet "https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentWallet.tsx"
click node_review "https://github.com/miavatra/tutoconnect/blob/main/src/components/ReviewModal.tsx"
click node_tutor_dashboard "https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorDashboard.tsx"
click node_tutor_profile "https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorProfile.tsx"
click node_tutor_sessions "https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorSessions.tsx"
click node_tutor_messages "https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorMessages.tsx"
click node_tutor_wallet "https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorWallet.tsx"
click node_tutor_preview "https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorPublicPreview.tsx"
click node_admin_dashboard "https://github.com/miavatra/tutoconnect/blob/main/src/pages/AdminDashboard.tsx"
click node_admin_disputes "https://github.com/miavatra/tutoconnect/blob/main/src/pages/AdminDisputes.tsx"
click node_admin_moderation "https://github.com/miavatra/tutoconnect/blob/main/src/pages/AdminModeration.tsx"
click node_auth_logic "https://github.com/miavatra/tutoconnect/blob/main/src/lib/auth.ts"
click node_supabase_client "https://github.com/miavatra/tutoconnect/blob/main/src/lib/supabase.ts"
click node_schema "https://github.com/miavatra/tutoconnect/tree/main/supabase/migrations"

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_home,node_account,node_route_guard toneBlue
class node_student_search,node_listing_data,node_tutor_detail,node_booking,node_student_sessions,node_student_messages,node_student_wallet,node_review,node_supabase_service toneAmber
class node_tutor_dashboard,node_tutor_profile,node_tutor_sessions,node_tutor_messages,node_tutor_wallet,node_tutor_preview toneMint
class node_admin_dashboard,node_admin_disputes,node_admin_moderation toneRose
class node_auth_logic,node_supabase_client,node_schema,node_student_actor,node_tutor_actor,node_admin_actor toneIndigo
```

## Components

### Public and access

- [Route application](https://github.com/miavatra/tutoconnect/blob/main/src/App.tsx): `src/App.tsx`
- [Public home](https://github.com/miavatra/tutoconnect/blob/main/src/pages/Home.tsx): `src/pages/Home.tsx`
- [Login and signup](https://github.com/miavatra/tutoconnect/tree/main/src/pages): `src/pages`
- [Role protection](https://github.com/miavatra/tutoconnect/blob/main/src/components/ProtectedRoute.tsx): `src/components/ProtectedRoute.tsx`

### Student learning

- [Tutor search](https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentSearch.tsx): `src/pages/StudentSearch.tsx`
- [Mock listings](https://github.com/miavatra/tutoconnect/blob/main/src/lib/mockListings.ts): `src/lib/mockListings.ts`
- [Tutor profile](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorDetail.tsx): `src/pages/TutorDetail.tsx`
- [Session booking](https://github.com/miavatra/tutoconnect/blob/main/src/components/BookingModal.tsx): `src/components/BookingModal.tsx`
- [Student sessions](https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentSessions.tsx): `src/pages/StudentSessions.tsx`
- [Student messages](https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentMessages.tsx): `src/pages/StudentMessages.tsx`
- [Student wallet](https://github.com/miavatra/tutoconnect/blob/main/src/pages/StudentWallet.tsx): `src/pages/StudentWallet.tsx`
- [Session review](https://github.com/miavatra/tutoconnect/blob/main/src/components/ReviewModal.tsx): `src/components/ReviewModal.tsx`

### Tutor workspace

- [Tutor dashboard](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorDashboard.tsx): `src/pages/TutorDashboard.tsx`
- [Tutor profile setup](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorProfile.tsx): `src/pages/TutorProfile.tsx`
- [Tutor sessions](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorSessions.tsx): `src/pages/TutorSessions.tsx`
- [Tutor messages](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorMessages.tsx): `src/pages/TutorMessages.tsx`
- [Tutor wallet](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorWallet.tsx): `src/pages/TutorWallet.tsx`
- [Public preview](https://github.com/miavatra/tutoconnect/blob/main/src/pages/TutorPublicPreview.tsx): `src/pages/TutorPublicPreview.tsx`

### Administration

- [Admin dashboard](https://github.com/miavatra/tutoconnect/blob/main/src/pages/AdminDashboard.tsx): `src/pages/AdminDashboard.tsx`
- [Dispute handling](https://github.com/miavatra/tutoconnect/blob/main/src/pages/AdminDisputes.tsx): `src/pages/AdminDisputes.tsx`
- [Content moderation](https://github.com/miavatra/tutoconnect/blob/main/src/pages/AdminModeration.tsx): `src/pages/AdminModeration.tsx`

### Shared platform

- [Authentication logic](https://github.com/miavatra/tutoconnect/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Supabase client](https://github.com/miavatra/tutoconnect/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`
- [Database schema](https://github.com/miavatra/tutoconnect/tree/main/supabase/migrations): `supabase/migrations`

### Other components

- **Student**
- **Tutor**
- **Administrator**
- **Supabase**

## Connections

- Student → Route application: opens
- Tutor → Route application: opens
- Administrator → Route application: opens
- Route application → Public home: routes to
- Route application → Login and signup: routes to
- Route application → Role protection: protects routes
- Route application → Tutor search: routes to
- Route application → Tutor profile: routes to
- Route application → Student sessions: routes to
- Route application → Student messages: routes to
- Route application → Student wallet: routes to
- Route application → Tutor dashboard: routes to
- Route application → Tutor profile setup: routes to
- Route application → Tutor sessions: routes to
- Route application → Tutor messages: routes to
- Route application → Tutor wallet: routes to
- Route application → Public preview: routes to
- Route application → Admin dashboard: routes to
- Route application → Dispute handling: routes to
- Route application → Content moderation: routes to
- Tutor search → Mock listings: reads listings
- Tutor search → Tutor profile: links to
- Tutor profile → Session booking: opens booking
- Student sessions → Session review: opens review
- Login and signup → Authentication logic: authenticates
- Route application → Supabase client: checks auth state
- Authentication logic → Supabase client: uses client
- Supabase client → Supabase: connects
- Database schema → Supabase: defines tables
