Open Source Civic Technology

Democracy Direct

Privacy-first civic engagement. ZIP code lookups happen client-side; emails are hashed before storage.

Built with

AstroPreactTailwind CSSNeon PostgresDrizzle ORMTipTapVitestPlaywright

I built Democracy Direct because the experience of contacting your elected representatives is genuinely bad. Figuring out who represents you, finding their contact info, and actually reaching out to them involves bouncing between half a dozen government websites. The existing tools in this space are either paywalled, cluttered with donation asks, or abandoned.

I’m a software engineer. I can’t fix policy, but I can fix a bad user experience.

What It Does

Democracy Direct is a civic engagement platform for contacting your federal elected representatives. Enter your ZIP code and it tells you your 2 senators and 1 House representative. It’s federal level only, not state or local.

The app provides community-contributed letter templates that are searchable and forkable. You can copy a letter to your clipboard, print a formatted version, or pull up talking points for a phone call. Legislator profiles include contact info, social media links, and voting records. You can also search and track legislation.

Privacy First

ZIP code lookups happen entirely in your browser using pre-loaded data. We never see what you search. If you create an account (passwordless OTP authentication), your email gets hashed with SHA-256 before it’s stored. We can’t recover it even if we wanted to.

Tech Stack

It’s an Astro 5 app with SSR on Cloudflare Pages, using Preact for interactive islands and Tailwind v4 for styling. The backend is Neon serverless Postgres with Drizzle ORM. The template editor uses TipTap for rich text. Testing is Vitest and Playwright.

This is an active project.