A web application that tracks programming language conferences and workshops.
You can add conference information in two ways:
Visit the website and click "Submit Event" to use the form interface.
- Navigate to the appropriate year directory under
packages/data/yaml/(e.g.,packages/data/yaml/2026/). - Create or edit a YAML file named after the conference abbreviation (e.g.,
icfp.yaml). - Use the following structure:
name: Full Conference Name
abbreviation: CONF
type: conference # or workshop, symposium
location: City, Country
date:
start: 2026-01-15
end: 2026-01-20
url: https://conference-website.com
importantDateUrl: https://conference-website.com/dates
importantDates:
abstract: 2025-09-01
paper: 2025-09-15
# Optional dates:
conditional-acceptance: 2025-10-10
rebuttal: 2025-10-15
notification: 2025-11-01
camera-ready: 2025-12-01
revisions: 2025-10-19Conferences with multiple submission rounds use a rounds: array instead of flat importantDates — see existing files for examples. Dates can be set to TBD if not yet announced. The lastUpdated field is automatically managed from git history.
Conference data is checked daily by an automated process that:
- Fetches the latest information from conference websites
- Compares with existing data
- Sends email notifications to me (cjohnson19) about any changes
Changes are reviewed manually, and I hope to update the pages quickly.
This project is a pnpm monorepo. All packages live under packages/:
packages/web/— Next.js 16 frontend (static export topackages/web/out/)packages/core/— Shared Zod schemas, date utilities, iCal generationpackages/data/— Conference YAML source and the generator that producesgenerated/events.{ts,json}packages/functions/— AWS Lambda functions (form submission, drift detection)packages/cdk/— AWS CDK infrastructure
- Node.js 22+
- pnpm 11+
pnpm install
pnpm run devThe development server starts at http://localhost:3000. pnpm run dev regenerates event data from YAML first, then runs the Next.js dev server.
| Script | Description |
|---|---|
pnpm run dev |
Generate events, then start Next.js dev server |
pnpm run build |
Generate events, then build the static site to packages/web/out/ |
pnpm run build:lambdas |
Generate events, then bundle Lambda functions |
pnpm run build:all |
Generate once, then build both the site and Lambdas |
pnpm run generate |
Regenerate packages/data/generated/events.ts from YAML |
pnpm run typecheck |
Run tsc --noEmit across all packages |
pnpm run lint |
Run Biome (lint + format check) across the repo |
pnpm run format |
Apply Biome formatting fixes in place |
pnpm run test |
Run vitest (schema, AOE, countdown, and Puppeteer e2e tests) |
pnpm run deploy |
Deploy via scripts/deploy.ts <notification-email> |
- Biome handles linting and formatting for JS/TS/JSON/CSS; Prettier handles YAML/Markdown/HTML.
- Pre-commit runs
lint-staged(auto-fixes staged files via Biome + Prettier) plus a fulltypecheckandlint.
This project is open source and available under the MIT License.