Skip to content

About

Non-partisan ledger of U.S. officeholders: campaign money, votes, attributed scores and promises, every number linked to its primary source.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Civic Ledger

Working codename for a non-partisan site that combines public campaign money, votes, independent scores, promises and platforms for U.S. officeholders and candidates in one sortable table. Every number links to its primary source.

Status: build phase, not deployed.

Develop

Requires Node 24+ and pnpm 11 (corepack enable). No Docker: local and test databases are embedded Postgres (PGlite) under .pglite/ unless DATABASE_URL is set.

pnpm install          # workspace deps (lockfile committed)
pnpm db:migrate       # apply SQL migrations (PGlite at .pglite/dev, or DATABASE_URL)
pnpm db:seed          # load the FICTIONAL dev dataset (refuses DATABASE_URL without --allow-postgres)
pnpm check            # lint + typecheck + test + build; must pass before reporting work done

Other scripts: pnpm db:generate (Drizzle migration from schema changes), pnpm ingest <source> (operator CLI, phase 2), pnpm curate:validate (check data/curated/** YAML), pnpm --filter @civic-ledger/web dev (web app). Copy .env.example to .env for API keys; never commit it.

Path Holds
packages/db Drizzle schema, SQL migrations, person_card read model, client factory, dev seed
packages/core Capability registry + dispatch, zod schemas, curated-file schemas, ingest.run@1 contract
packages/ingest SourceAdapter contract and CLI (adapters: phase 2)
packages/mcp MCP adapter entry (phase 2)
apps/web Next.js App Router UI and /api/v1 (phase 2)
data/curated Git-reviewed YAML; see its README for the schema_version contract

About

Non-partisan ledger of U.S. officeholders: campaign money, votes, attributed scores and promises, every number linked to its primary source.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages