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

JobCommandWhat It Checks
Lintpnpm lintBiome formatting and lint rules
Typecheckpnpm typecheckTypeScript strict mode across all packages
Testpnpm testVitest unit tests across all packages
Buildpnpm buildFull production build (runs after lint, typecheck, and test pass)
Claude Code ReviewAI-powered review against AGENTS.md rules
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

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true
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

paths:
  - "apps/web/src/components/**"
  - "apps/web/.storybook/**"
  - "packages/types/**"
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:
PlatformTriggerWhat Deploys
VercelPush to mainWeb app (apps/web)
RenderPush to mainAPI (apps/api)
MintlifyPush to mainDocs (apps/docs) — auto-syncs with GitHub

Local Equivalents

The CI pipeline mirrors the local git hooks:
CI JobLocal HookCommand
Lintpre-commitpnpm lint
Typecheckpre-pushpnpm typecheck
Testpre-pushpnpm test
Buildpre-pushpnpm build
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

SecretUsed By
ANTHROPIC_API_KEYClaude code review workflow
NETLIFY_AUTH_TOKENStorybook deployment
NETLIFY_SITE_IDStorybook deployment
Add these in your GitHub repository under Settings → Secrets and variables → Actions.