@@ -12,19 +12,23 @@ A modern, full-stack mentorship platform built specifically for healthcare profe
1212Built with Next.js 15, Supabase PostgreSQL, Clerk authentication, AI-enhanced matching (OpenAI/Gemini), and comprehensive healthcare compliance features.
1313
1414## 🚀 Live Demo
15+
1516[ Production: sandboxmentoloop.online] ( https://sandboxmentoloop.online )
1617
1718Deployed via GitHub → Netlify. Preview environment available. Documentation lives in ` docs/ ` within this repo.
1819
1920## 📸 Screenshots
2021
2122### Student Dashboard
23+
2224![ Student Dashboard] ( https://sandboxmentoloop.online/window.svg )
2325
2426### AI-Powered Matching
27+
2528![ AI Matching] ( https://sandboxmentoloop.online/globe.svg )
2629
2730### Preceptor Management
31+
2832![ Preceptor Dashboard] ( https://sandboxmentoloop.online/file.svg )
2933
3034## Core Healthcare Features
@@ -57,6 +61,7 @@ Deployed via GitHub → Netlify. Preview environment available. Documentation li
5761## Tech Stack
5862
5963### Frontend
64+
6065- ** Next.js 15** - React framework with App Router
6166- ** TailwindCSS v4** - Utility-first CSS framework
6267- ** shadcn/ui** - Modern component library
@@ -68,6 +73,7 @@ Deployed via GitHub → Netlify. Preview environment available. Documentation li
6873- ** React Bits** - Custom animation components
6974
7075### Backend & Services
76+
7177- ** Supabase** - PostgreSQL database with RLS policies and real-time subscriptions
7278- ** Clerk** - Authentication and user management
7379- ** OpenAI** - AI-enhanced matching with GPT-4
@@ -78,50 +84,54 @@ Deployed via GitHub → Netlify. Preview environment available. Documentation li
7884- ** Svix** - Webhook validation
7985
8086### Development & Testing
87+
8188- ** TypeScript** - Type safety throughout
8289- ** Vitest** - Unit testing framework
8390- ** Playwright** - End-to-end testing
8491- ** Testing Library** - Component testing
8592- ** Turbopack** - Fast build tool
8693
8794### Deployment & Infrastructure
95+
8896- ** Netlify** - Primary deployment (connected to GitHub)
8997- ** GitHub Actions** - CI pipeline
9098- ** Environment Management** - Secrets in Netlify dashboard
9199
92100## Operations Quick Reference
93101
94102### Environment Variables
103+
95104Secrets managed in Netlify dashboard. Required for production:
96105
97- | Key | Description |
98- | --- | --- |
99- | ` SUPABASE_URL ` | Supabase project URL (server-side) |
100- | ` NEXT_PUBLIC_SUPABASE_URL ` | Supabase project URL (client-side) |
101- | ` SUPABASE_ANON_KEY ` | Supabase anon key (server utilities/tests) |
102- | ` NEXT_PUBLIC_SUPABASE_ANON_KEY ` | Supabase anon key (client-side) |
103- | ` SUPABASE_SERVICE_ROLE_KEY ` | Supabase service role key (server-side) |
104- | ` NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY ` | Clerk publishable key |
105- | ` CLERK_SECRET_KEY ` | Clerk secret key |
106- | ` NEXT_PUBLIC_CLERK_FRONTEND_API_URL ` | Clerk JWT template issuer URL |
107- | ` STRIPE_SECRET_KEY ` | Stripe secret key |
108- | ` STRIPE_WEBHOOK_SECRET ` | Stripe webhook secret |
109- | ` NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY ` | Stripe publishable key |
110- | ` SENTRY_DSN ` | Sentry DSN (auto-injected to client) |
111- | ` SENDGRID_API_KEY ` | SendGrid API key |
112- | ` TWILIO_ACCOUNT_SID ` , ` TWILIO_AUTH_TOKEN ` , ` TWILIO_PHONE_NUMBER ` | Twilio credentials |
106+ | Key | Description |
107+ | ---------------------------------------------------------------- | --------------------------------------- --- |
108+ | ` SUPABASE_URL ` | Supabase project URL (server-side) |
109+ | ` NEXT_PUBLIC_SUPABASE_URL ` | Supabase project URL (client-side) |
110+ | ` SUPABASE_ANON_KEY ` | Supabase anon key (server utilities/tests) |
111+ | ` NEXT_PUBLIC_SUPABASE_ANON_KEY ` | Supabase anon key (client-side) |
112+ | ` SUPABASE_SERVICE_ROLE_KEY ` | Supabase service role key (server-side) |
113+ | ` NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY ` | Clerk publishable key |
114+ | ` CLERK_SECRET_KEY ` | Clerk secret key |
115+ | ` NEXT_PUBLIC_CLERK_FRONTEND_API_URL ` | Clerk JWT template issuer URL |
116+ | ` STRIPE_SECRET_KEY ` | Stripe secret key |
117+ | ` STRIPE_WEBHOOK_SECRET ` | Stripe webhook secret |
118+ | ` NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY ` | Stripe publishable key |
119+ | ` SENTRY_DSN ` | Sentry DSN (auto-injected to client) |
120+ | ` SENDGRID_API_KEY ` | SendGrid API key |
121+ | ` TWILIO_ACCOUNT_SID ` , ` TWILIO_AUTH_TOKEN ` , ` TWILIO_PHONE_NUMBER ` | Twilio credentials |
113122
114123### Deployment
124+
1151251 . Push to ` main ` → Netlify auto-builds
1161262 . Build runs: ` npm run lint ` , ` npm run type-check ` , ` npm run build `
1171273 . Deploy succeeds if build passes
1181284 . Verify at https://sandboxmentoloop.online
119129
120130### Health Checks
131+
121132- ` GET /api/health ` - JSON response with service status
122133- Expected: HTTP 200 with ` "status": "ok" `
123134
124-
125135## Getting Started
126136
127137### Prerequisites
@@ -142,6 +152,7 @@ cp .env.example .env.local
142152```
143153
144154Configure ` .env.local ` :
155+
145156``` bash
146157NEXT_PUBLIC_SUPABASE_URL=your-project-url
147158NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
@@ -170,15 +181,19 @@ npx playwright test # E2E tests
170181## Architecture
171182
172183### Database Layer
184+
173185Supabase PostgreSQL with Row Level Security policies. Service resolver pattern at ` lib/supabase/serviceResolver.ts ` routes API calls to service implementations in ` lib/supabase/services/ ` .
174186
175187### Authentication
188+
176189Clerk handles auth. Users synced to Supabase via webhook. Protected routes use middleware checking Clerk session.
177190
178191### Payments
192+
179193Stripe checkout integration. 70/30 revenue split for preceptor compensation. Webhook validates payment events.
180194
181195### Key Routes
196+
182197- ` / ` - Landing page
183198- ` /dashboard ` - Protected dashboard
184199- ` /student-intake ` - Student onboarding flow
@@ -195,18 +210,30 @@ Stripe checkout integration. 70/30 revenue split for preceptor compensation. Web
195210├── components/
196211│ ├── ui/ # shadcn/ui components
197212│ └── react-bits/ # Custom animations
213+ ├── docs/ # Project documentation
214+ │ └── reports/ # Generated reports and plans
198215├── lib/
199216│ ├── supabase/ # Database layer
200217│ │ ├── services/ # Service implementations
201218│ │ └── serviceResolver.ts # API router
202219│ ├── supabase-hooks.ts # React hooks
203220│ └── supabase-api.ts # API definitions
221+ ├── scripts/ # Utility scripts
204222└── middleware.ts # Route protection
205223```
206224
225+ ## Documentation
226+
227+ Detailed documentation, reports, and implementation plans can be found in the ` docs/ ` directory.
228+
229+ - ** Reports & Plans** : ` docs/reports/ ` contains generated reports, migration plans, and status updates.
230+ - ** Architecture** : ` docs/architecture/ ` contains architectural decisions and diagrams.
231+ - ** Security** : ` docs/security/ ` contains security audits and implementation guides.
232+
207233## Key Components
208234
209235### Landing Page
236+
210237- ** Hero Section** - Animated hero with CTAs
211238- ** Features Section** - Interactive feature showcase
212239- ** Pricing Table** - Custom Clerk billing integration
@@ -215,12 +242,14 @@ Stripe checkout integration. 70/30 revenue split for preceptor compensation. Web
215242- ** Footer** - Links and information
216243
217244### Dashboard
245+
218246- ** Sidebar Navigation** - Collapsible sidebar with user menu
219247- ** Interactive Charts** - Data visualization with Recharts
220248- ** Data Tables** - Sortable and filterable tables
221249- ** Payment Gating** - Subscription-based access control
222250
223251### Animations & Effects
252+
224253- ** Splash Cursor** - Interactive cursor effects
225254- ** Animated Lists** - Smooth list animations
226255- ** Progressive Blur** - Modern blur effects
@@ -239,6 +268,7 @@ The starter kit includes a fully customizable theme system. You can customize co
239268### Local Development
240269
241270See ` .env.example ` for complete list. Required:
271+
242272- Supabase URL, anon key, service role key
243273- Clerk publishable key, secret key, frontend API URL
244274- Stripe publishable key, secret key, webhook secret
0 commit comments