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:
Jack Levy
2026-03-15 01:35:01 -04:00
commit 4c86a5b9ca
150 changed files with 19859 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
"""add member bio and contact fields
Revision ID: 0007
Revises: 0006
Create Date: 2026-03-01
"""
import sqlalchemy as sa
from alembic import op
revision = "0007"
down_revision = "0006"
branch_labels = None
depends_on = None
def upgrade():
op.add_column("members", sa.Column("congress_url", sa.String(), nullable=True))
op.add_column("members", sa.Column("birth_year", sa.String(10), nullable=True))
op.add_column("members", sa.Column("address", sa.String(), nullable=True))
op.add_column("members", sa.Column("phone", sa.String(50), nullable=True))
op.add_column("members", sa.Column("terms_json", sa.JSON(), nullable=True))
op.add_column("members", sa.Column("leadership_json", sa.JSON(), nullable=True))
op.add_column("members", sa.Column("sponsored_count", sa.Integer(), nullable=True))
op.add_column("members", sa.Column("cosponsored_count", sa.Integer(), nullable=True))
op.add_column("members", sa.Column("detail_fetched", sa.DateTime(timezone=True), nullable=True))
def downgrade():
op.drop_column("members", "congress_url")
op.drop_column("members", "birth_year")
op.drop_column("members", "address")
op.drop_column("members", "phone")
op.drop_column("members", "terms_json")
op.drop_column("members", "leadership_json")
op.drop_column("members", "sponsored_count")
op.drop_column("members", "cosponsored_count")
op.drop_column("members", "detail_fetched")