Live demo: https://tutorconnect-zeta.vercel.app/
Brief
TutorConnect is a volunteer tutoring platform built with Next.js and Supabase. It helps students find volunteer tutors by subject, view tutor profiles, and schedule sessions. The UI uses Tailwind CSS and a set of reusable local components.
Tech Stack
- Framework: Next.js (App Router) with TypeScript and React
- Styling: Tailwind CSS (with PostCSS)
- Database & Auth: Supabase (Postgres)
- Icons: lucide-react + custom SVGs in
public/ - Video (optional): Jitsi integration component
- Deployment: Vercel (live demo linked above)
Local development
Prerequisites
- Node.js (16+ recommended)
- pnpm (project uses pnpm; npm or yarn may work)
Install and run:
pnpm install
pnpm devThe dev server runs at http://localhost:3000.
Database
Schema and helper SQL scripts live under the scripts/ folder. To run locally with Supabase:
- Create a Supabase project at https://app.supabase.com
- Import or run the SQL scripts in
scripts/to create tables and triggers - Add your Supabase keys to environment variables used by the app (see
lib/supabase)
Scripts included:
scripts/001_create_profiles.sqlscripts/002_create_subjects.sqlscripts/003_create_tutor_subjects.sqlscripts/004_create_availability.sqlscripts/005_create_sessions.sqlscripts/006_profile_trigger.sqlscripts/007_updated_at_trigger.sql
Files of interest
app/layout.tsx— metadata, favicons and top-level layoutapp/page.tsx— public landing/home pageapp/tutors/page.tsx— tutors list and server-side data fetchingcomponents/tutor-filters.tsx— client filter UI usinguseSearchParamscomponents/ui/*— small local UI primitives (Button, Select, Card, etc.)lib/supabase/*— Supabase client/server helperspublic/— static assets (icon.svg,apple-icon.png, etc.)
Deployment
Vercel is recommended. To deploy:
- Connect the repository to Vercel.
- Configure environment variables (Supabase URL, Anon key, Service role key, etc.).
- Deploy the
mainbranch.
Notes & Tips
- The project uses a local UI component pattern similar to shadcn/ui. Check
components/uifor examples. - Icons referenced in
app/layout.tsx(e.g.,/icon.svg,/apple-icon.png) are inpublic/and used for favicons and home-screen shortcuts. - Use
pnpmto match the project's lockfile (pnpm-lock.yaml).