Skip to main content
folksbase uses GitHub Actions for continuous integration and selective deployment. Workflows live in .github/workflows/.

CI Pipeline (ci.yml)

Runs on every pull request targeting main. All jobs must pass before merging.

Jobs

The first three jobs (lint, typecheck, test) run in parallel. The build job only runs after all three succeed, catching integration issues early without wasting CI minutes.

Claude Code Review

An AI reviewer checks every PR against the project rules in AGENTS.md. It looks for:
  • TypeScript violations (any, non-null assertions, missing types)
  • Backend layer violations (routes importing from @folksbase/db)
  • console.log usage (should use the structured logger)
  • process.env usage (should use the typed env module)
  • OFFSET-based pagination (should use cursor-based)
  • Redis calls without TTL
  • Inngest jobs without step.run() wrappers
This runs as a separate job and posts inline comments on the PR.

Concurrency

If you push again while CI is running, the previous run is cancelled. This saves CI minutes on rapid iteration.

Storybook Deployment (deploy-storybook.yml)

Deploys the Storybook component documentation to Netlify. Only triggers when relevant files change.

Trigger Paths

Changes to components, Storybook config, or shared types trigger a rebuild. Other changes (API, docs, etc.) are ignored.

Process

  1. Installs dependencies with pnpm install
  2. Builds Storybook with pnpm --filter @folksbase/web build-storybook
  3. Deploys the static output to Netlify
Requires NETLIFY_AUTH_TOKEN and NETLIFY_SITE_ID secrets in the repository settings.

Platform Auto-Deploys

These aren’t GitHub Actions — they’re platform-native deploy hooks:

Local Equivalents

The CI pipeline mirrors the local git hooks: If your code passes the local hooks, it should pass CI. The hooks are configured in .githooks/ and activated automatically by pnpm install.

Required Secrets

Add these in your GitHub repository under Settings → Secrets and variables → Actions.