A college-focused social rating platform with Supabase backend and real-time features.
- Node.js 20+
- Supabase account
- npm or yarn
-
Create Supabase Project
- Go to https://supabase.com
- Create a new project
- Wait for database to be ready
-
Get Connection Details
- Go to Settings > Database
- Copy the connection string
- Go to Settings > API
- Copy the Project URL and anon key
-
Copy environment file
cp .env.example .env
-
Update .env file
DATABASE_URL=postgresql://postgres:[password]@db.[project-ref].supabase.co:5432/postgres SUPABASE_URL=https://[project-ref].supabase.co SUPABASE_ANON_KEY=your-supabase-anon-key SUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-key SESSION_SECRET=your-super-secret-session-key-here NODE_ENV=development PORT=5000 RATING_SALT=campus_crush_salt_2024
-
Install dependencies
npm install
-
Push database schema
npm run db:push
-
Seed database with sample data
npm run db:seed
-
Start development server
npm run dev
-
Access the application
- Frontend: http://localhost:5000
- API: http://localhost:5000/api
-
Build the application
npm run build
-
Start production server
npm start
npm run db:push- Push schema changes to databasenpm run db:seed- Seed database with sample datanpm run check- TypeScript type checking
- Express.js - Web framework
- TypeScript - Type safety
- Drizzle ORM - Database toolkit
- Supabase - Database and real-time features
- Passport.js - Authentication
- React - UI framework
- Vite - Build tool
- Tailwind CSS - Styling
- React Query - Server state management
├── client/ # React frontend
├── server/ # Express backend
│ ├── db.ts # Database connection
│ ├── storage.ts # Data access layer
│ ├── routes.ts # API routes
│ └── seed.ts # Database seeding
├── schema.ts # Database schema
└── package.json # Dependencies
- Anonymous Rating System - Rate peers anonymously
- Profile Discovery - Find and browse student profiles
- Real-time Leaderboards - Live rankings with Supabase real-time
- College-based - Scoped to individual colleges
- Privacy-focused - Minimal data exposure
- Type-safe - Full TypeScript coverage
- Scalable - Supabase handles 1-2K users easily
- Database uses UUID primary keys
- All ratings are anonymized with salted hashes
- Real-time updates for leaderboards
- Rate limiting implemented for API protection
- Comprehensive error handling and validation
- Supabase connection pooling and auto-scaling