hack0 reads hackathons, meetups, workshops and conferences from Luma calendars, profiles and single events, Meetup groups and Eventbrite organizers, merges the same event seen in several places into one, and publishes a page for every event, city and topic. Curators feature the best ones for a weekly agenda; apps and agents read the same catalog through a REST API and an MCP server.
bun install
bun run dev # apps/web on localhost:3000Set DATABASE_URL in apps/web/.env.local to use the Postgres catalog; without it the site reads the hack0 Luma calendar with LUMA_API_KEY.
cd apps/web
bun run db:migrate # apply the Drizzle migrations
bun run scripts/seed-sources.ts # the starting set of calendarsbun run test # unit + Postgres integration (TEST_DATABASE_URL)
bun run typecheck
bun run lint # Biome
bun run quality # crafter-lintCI also builds the site against a seeded Postgres and requests every public route, which catches pages that only break in production.
Create a token in hack0.dev/admin, under API.
curl -H "Authorization: Bearer hack0_sk_..." \
"https://hack0.dev/api/v1/events?status=upcoming&country=PE&limit=20"| Endpoint | |
|---|---|
GET /api/v1/events |
Events, filtered by status, country, provider, calendar, from, to; paged with cursor |
GET /api/v1/events/:id |
One event with every source that lists it |
GET /api/v1/events/export |
The filtered catalog as CSV or JSON |
GET /api/v1/events/changes?since=0 |
Incremental sync: upserts and delete tombstones after a cursor; pass nextCursor back as since |
GET /api/v1/calendars |
Sources and their sync state |
POST /api/mcp |
MCP server: list_events, get_event, list_calendars |
Tokens allow 120 requests per minute and return x-ratelimit-* headers.
apps/web/ hack0.dev: Next.js, Drizzle on Neon, Vercel Workflow and Cron, Clerk for /admin
packages/cli/ @crafter/hack0, the agent-first CLI for workshop installs
docs/ architecture and the workshop distribution contract
- docs/architecture.md: how sources become pages, and what decides a listing
- docs/contract.md: workshop distribution
Built by Crafter Station. Apache-2.0