Real-time shipping tracker for Crafter Station.
Tracks pushes to main across all org repos via GitHub webhooks.
- Framework: Next.js 16 + React 19 + TypeScript
- Styling: Tailwind CSS 4
- Database: Neon (Serverless Postgres) + Drizzle ORM
- Webhooks: GitHub org webhooks → Next.js API route
- Deployment: Vercel
- Real-time Activity Feed: See commits as they happen
- Stats Dashboard: Commits today, active repos, team streak
- Weekly Leaderboard: Top contributors for the week
- Auto-discovery: Automatically tracks all crafter-station repos
bun install- Create a Neon database at neon.tech
- Copy the connection string
Create .env.local:
DATABASE_URL=postgresql://user:password@host/database
GITHUB_WEBHOOK_SECRET=your_webhook_secret_here
GITHUB_TOKEN=your_github_token_hereGenerate webhook secret:
openssl rand -hex 32bun db:pushbun backfillThis fetches the last 30 days of commits from all crafter-station repos.
bun devVisit http://localhost:3000
vercel --prodAdd environment variables in Vercel dashboard:
DATABASE_URLGITHUB_WEBHOOK_SECRET
- Go to https://github.com/organizations/crafter-station/settings/hooks
- Add webhook:
- Payload URL:
https://pulse.crafterstation.com/api/webhooks/github - Content type:
application/json - Secret: Same as
GITHUB_WEBHOOK_SECRET - Events: Just
pushevents - Active: ✓
- Payload URL:
Push a commit to any crafter-station repo and verify it appears in the activity feed.
GET /api/activity- Recent commits (last 50)GET /api/stats- Dashboard stats (commits today, active repos, streak)GET /api/leaderboard- Weekly top contributors (last 7 days)POST /api/webhooks/github- GitHub webhook handler
bun db:generate # Generate migrations
bun db:push # Apply schema to database
bun db:studio # Open Drizzle Studio
bun backfill # Seed with historical data