feat: PocketVeto v1.0.0 — initial public release
Self-hosted US Congress monitoring platform with AI policy briefs, bill/member/topic follows, ntfy + RSS + email notifications, alignment scoring, collections, and draft-letter generator. Authored by: Jack Levy
This commit is contained in:
56
README.md
Normal file
56
README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user