Ithaca Community Recovery is a non-profit organization working to serve as a community resource for members of 12 Step and other recovery-oriented groups. They offer safe and affordable event and meeting spaces for recoverers of addiction.
Table of Contents
This project aims to develop internal tooling and automation to streamline ICR's event & meeting setup process.
Documentation lives in docs/, organized by audience — see docs/README.md for the full index:
- User Guide — for ICR board members using the platform day to day
- Handoff — for ICR leadership and future maintainers: ownership, credentials, deployment, backups, support, contingency
- Development — for developers working on the codebase: architecture, API reference, integration setup, testing
Folder structure
.
├── frontend # Next.js App Router (leveraging server and client sided environments)
├── docs/ # Documentation (see above)
└── README.md
Everything under .github/ runs automatically on push/PR to master or on a schedule.
workflows/test.yml— lint, typecheck, unit, component, integration, Playwright e2e (see Running Tests below), and adoc-freshnessjob that fails if README.md /docs/03-development/project-structure.mdcite a Node or Next.js major version that no longer matchesfrontend/package.json(via.github/scripts/check-doc-versions.sh)workflows/codeql.yml— CodeQL static analysis for security vulnerabilities, on every PR plus a weekly scheduled scanworkflows/bump-node-version.yml— monthly check for a new Node.js Active LTS release; opens a PR bumping.nvmrc/package.json/test.ymlif one exists (Vercel's supported versions still need a manual check before merging)workflows/calver-bump.yml— monthly CalVer bump (see Versioning); opens a PR resettingPATCHto0on the 1st of each monthdependabot.yml+workflows/dependabot-auto-merge.yml— weekly dependency-update PRs; thesafe-updatesgroup (patch- and minor-level bumps, prod or dev) auto-merges once CI is green — major bumps and all GitHub Actions bumps are left for manual review, since those are the ones most likely to carry breaking changes CI doesn't always catch
- Node.js 24.x (see
frontend/.nvmrc) - Yarn
- A Neon Postgres project (or any Postgres instance) for
DATABASE_URL
cd frontend
yarn install
# add a .env file — see docs/03-development/environment-variables.md for every variable needed
yarn devOpens at http://localhost:3000. See
docs/03-development/local-setup.md for a full guided
walkthrough (env vars, running the test suite, making a first change), or
docs/03-development/project-structure.md and
docs/03-development/integration-guides.md for
architecture and per-service setup (Postgres, Google OAuth, Google Calendar, Zoom).
yarn lint # ESLint (part of test:all below)
yarn lint:css # stylelint — separate from yarn lint (part of test:all below)
yarn typecheck # tsc --noEmit — full cross-file type-checking (part of test:all below)
yarn test:unit # pure functions, seconds, no setup
yarn test:component # individual components in isolation, seconds, no setup
yarn test:integration # route handlers against an embedded Postgres instance
yarn test:e2e # full Playwright E2E suite (needs `yarn playwright install --with-deps chromium` once)
yarn test:all # lint + lint:css + typecheck + unit + component + integration + e2e, in that orderSee docs/03-development/testing/README.md for how the suite and CI work.
Summer 2025 – Summer 2026 Developers
- Sophie L Wang & Tuni Le
Spring 2025 Developers
- Tech Leads: Sophie L Wang & Tuni Le
- David Valarezo
- Leane Ying
- Grace Matsuoka
- Samantha Cruz
- Nathan Dang
- Sheki Okwayo
- Tanya Aravind
- Victoria Yu
Fall 2024 Developers
- Tech Leads: Owen Chen & Tuni Le
- Sophie L Wang
- Leane Ying
- Phoebe Qian
- Brandon Lerit
- Alisha Varma
- Tanvi Mavani
- Sophie Strausberg
Spring 2024 Developers
- Tech Lead: Joseph Ugarte
- Mohammad Islam
- Sophie L Wang
- Sneha Rajaraman
- Sanya Mahajan
- Srija Ghosh
This project uses CalVer (YYYY.MM.PATCH). For a detailed history of changes about across versions, please refer to our release notes.