Pakistan ka event hub — hackathons, conferences, workshops, meetups, and competitions, listed by city.
- Next.js 16.3 (App Router, Turbopack) + TypeScript
- Prisma + PostgreSQL (Supabase)
- Supabase Auth (Google OAuth + magic link)
- Resend for deadline reminders, weekly digest, and scraper failure alerts
- GitHub Actions for daily scrapers (
npm run scrape:all)
- Copy
.env.exampleto.envand fill required values. - Install deps:
npm install - Generate client:
npm run db:generate - Apply migrations:
npm run db:migrate - Seed data:
npm run db:seed - Run app:
npm run dev
npm run scrape:allUses DATABASE_URL / DIRECT_URL from .env and writes events straight to the database.
| Piece | Where |
|---|---|
| Web app | Vercel |
| Daily scrapers | GitHub Actions — .github/workflows/scrape-daily.yml |
| Email crons | Vercel — deadline reminders + weekly digest |
Repo → Settings → Secrets and variables → Actions:
| Secret | Required |
|---|---|
DATABASE_URL |
Yes |
DIRECT_URL |
Yes |
NEXT_PUBLIC_SITE_URL |
Recommended (alert links) |
ADMIN_EMAILS |
Recommended (failure alerts) |
RESEND_API_KEY |
Recommended |
DEADLINE_EMAIL_FROM |
Recommended |
After pushing, open Actions → Daily scrapers → Run workflow once to verify.
Schedule: about 00:00 UTC daily (GitHub may delay a few minutes). Manual runs use workflow_dispatch.
Configured in vercel.json:
/api/cron/deadline-reminders— daily/api/cron/weekly-digest— Mondays
Requires CRON_SECRET on Vercel.
Full launch runbook: docs/production-launch-checklist.md · detailed plan: plan.md
npm run launch:env:check
npm run launch:runtime:check
npm run launch:auth:check
npm run launch:data:check
npm run launch:cron:check
npm run launch:smoke:check
npm run launch:qa:check
npm run launch:check:all