# PocketVeto A self-hosted platform for monitoring US Congress. Follow bills and legislators, get AI-generated policy briefs, track trending legislation, and receive alerts when bills you care about move. ## Features - **Bill tracking** — search and browse all active legislation with full text and status history - **AI policy briefs** — LLM-generated summaries, key points, risks, and deadlines for each bill - **Member profiles** — legislator bios, effectiveness scores, sponsored bills, vote history, and news - **Follows & alerts** — follow bills, members, or policy topics; choose between neutral, pocket-veto, or pocket-boost mode per follow - **Notifications** — ntfy, RSS, and email (SMTP); per-channel alert filters with quiet hours - **Collections** — curate shareable lists of bills with a public share link - **Alignment view** — see how legislators vote relative to your followed bills and stances - **Draft letter** — AI-assisted letter generator to contact your representative on any bill - **Admin panel** — pipeline controls, LLM switching, user management, API health checks ## Tech stack | Layer | Technology | |---|---| | Backend | FastAPI, SQLAlchemy (async), Alembic, Celery, PostgreSQL, Redis | | Frontend | Next.js (App Router), TypeScript, Tailwind CSS, React Query, Zustand | | AI | OpenAI, Anthropic, Google Gemini, or Ollama (switchable at runtime) | | Infrastructure | Docker Compose, Nginx | ## Quick start **Prerequisites:** Docker Engine 24+ and Docker Compose v2 on a Linux server (2 GB RAM minimum). **API keys you'll need:** | Key | Where to get it | Required? | |---|---|---| | `DATA_GOV_API_KEY` | [api.data.gov/signup](https://api.data.gov/signup/) — free, instant | Yes | | LLM key (OpenAI / Anthropic / Gemini) | Provider dashboard | Yes (or use Ollama) | | `NEWSAPI_KEY` | [newsapi.org](https://newsapi.org) — free tier (100 req/day) | Optional | ```bash git clone https://github.com/YOUR_USERNAME/pocketveto.git cd pocketveto cp .env.example .env # Edit .env — set JWT_SECRET_KEY, ENCRYPTION_SECRET_KEY, DATA_GOV_API_KEY, and your LLM key at minimum docker compose up --build -d ``` Open `http://YOUR_SERVER_IP` in a browser. The first registered account becomes admin. After registering, go to **Settings** and click **Trigger Poll** to load the initial bill data, then **Sync Members** to load legislator profiles. For detailed instructions — including SSL setup, email configuration, and updating — see [DEPLOYING.md](DEPLOYING.md) and [UPDATING.md](UPDATING.md). ## License [GNU General Public License v3.0](LICENSE)