A consolidated app launcher for educators that surfaces relevant apps at point-of-need.
- Curated App Directory: 42+ education apps used across Singapore MOE schools
- Personal Profiles: Public profile pages showing your pinned and submitted apps
- Smart Submission: Autocomplete prevents duplicate submissions
- Profile App Management: Add apps to your profile directly from existing library
- Google OAuth: Secure authentication with Google accounts
- Mobile-Optimized: Responsive design with touch-friendly interactions
- Frontend: React 19 + Vite 7 + TypeScript
- Styling: Tailwind CSS 4 + String Design System
- Database: NeonDB (PostgreSQL)
- ORM: Drizzle
- API: Vercel Edge Functions
- Auth: Google OAuth (client-side)
- Node.js 18+
- A NeonDB database (or any PostgreSQL instance)
# Install dependencies
npm install
# Set up environment
cp .env.example .env
# Edit .env and add your DATABASE_URL from NeonDB
# Push schema to database
npm run db:push
# Seed the database with 42 apps
npm run db:seed# Start Vercel dev server (frontend + API)
npm run devThis opens the app at http://localhost:3000
| Script | Description |
|---|---|
npm run dev |
Start Vercel dev (frontend + API) |
npm run dev:vite |
Start Vite only (no API) |
npm run build |
Build for production |
npm run db:push |
Push schema to NeonDB |
npm run db:seed |
Seed apps from research data |
npm run db:studio |
Open Drizzle Studio (database admin UI) |