Skip to content

Commit db0714a

Browse files
Tanner OsterkampTanner Osterkamp
authored andcommitted
chore: cleanup project root and refactor documentation structure
1 parent 159c52e commit db0714a

32 files changed

+67
-37
lines changed

README.md

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,23 @@ A modern, full-stack mentorship platform built specifically for healthcare profe
1212
Built 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

1718
Deployed 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+
95104
Secrets 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+
115125
1. Push to `main` → Netlify auto-builds
116126
2. Build runs: `npm run lint`, `npm run type-check`, `npm run build`
117127
3. Deploy succeeds if build passes
118128
4. 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

144154
Configure `.env.local`:
155+
145156
```bash
146157
NEXT_PUBLIC_SUPABASE_URL=your-project-url
147158
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
@@ -170,15 +181,19 @@ npx playwright test # E2E tests
170181
## Architecture
171182

172183
### Database Layer
184+
173185
Supabase 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+
176189
Clerk handles auth. Users synced to Supabase via webhook. Protected routes use middleware checking Clerk session.
177190

178191
### Payments
192+
179193
Stripe 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

241270
See `.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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)