diff --git a/app/Dockerfile b/app/Dockerfile index 8e1f8ee..ee89588 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -1,5 +1,5 @@ FROM python:3.12-slim -RUN pip install --no-cache-dir fastapi "uvicorn[standard]" python-multipart +RUN pip install --no-cache-dir fastapi "uvicorn[standard]" python-multipart gspread WORKDIR /app COPY . /app RUN mkdir -p /app/static/img diff --git a/app/__pycache__/app.cpython-313.pyc b/app/__pycache__/app.cpython-313.pyc index f7ecee6..0ca86d8 100644 Binary files a/app/__pycache__/app.cpython-313.pyc and b/app/__pycache__/app.cpython-313.pyc differ diff --git a/app/app.py b/app/app.py index 24adf95..5e6f4fe 100644 --- a/app/app.py +++ b/app/app.py @@ -16,9 +16,15 @@ LEADS = DATA / "leads.jsonl" EVENTS_LIVE = DATA / "events.json" EVENTS_SEED = Path(__file__).parent / "events.json" NTFY_URL = os.environ.get("NTFY_URL", "") -# Same lead pipeline as the flyer form (scouting73.thewichersfamily.com): -# forward /join posts to that container's /submit (Google Sheet + ntfy push). -FORM_UPSTREAM = os.environ.get("FORM_UPSTREAM", "http://scouting73-form:8000/submit") +# Lead pipeline lives IN THIS REPO (no dependency on the scouting73-form +# container): direct Google Sheet append + ntfy push, same sheet and topic. +SHEET_ID = os.environ.get("SHEET_ID", "").strip() +SA_FILE = os.environ.get("SA_FILE", "/app/service_account.json") +NTFY_BASE = os.environ.get("NTFY_BASE", "").rstrip("/") +NTFY_TOPIC = os.environ.get("NTFY_TOPIC", "scouting") +NTFY_TOKEN = os.environ.get("NTFY_TOKEN", "").strip() +SHEET_HEADERS = ["Timestamp", "Parent Name", "Email", "Phone", + "Children (name + fall grade)", "Interested In", "How They Heard", "Comments"] app = FastAPI(title="Pack & Troop 73") app.mount("/static", StaticFiles(directory="/app/static"), name="static") @@ -93,8 +99,8 @@ nav.links{display:flex;align-items:center;gap:26px;flex-wrap:wrap} nav.links a{text-decoration:none;font-weight:600;font-size:15px;color:#333D52;padding:6px 0} nav.links a:hover{color:#1E2F52} nav.links a.on{font-weight:700;color:#1E2F52;border-bottom:2px solid #F0AD2D} -a.joinbtn{display:inline-block;line-height:1.2;font-family:'Archivo';font-weight:700;font-size:15px;background:#F0AD2D;color:#1E2F52 !important;padding:11px 22px;border-radius:999px;border-bottom:none !important} -a.joinbtn:hover{background:#DB9714} +nav.links a.joinbtn{display:inline-block;line-height:1.2;font-family:'Archivo';font-weight:700;font-size:15px;background:#F0AD2D;color:#1E2F52 !important;padding:11px 22px;border-radius:999px;border-bottom:none !important} +nav.links a.joinbtn:hover{background:#DB9714} .hero{position:relative;display:flex;align-items:flex-end;min-height:520px} .hero .wrap{padding-top:110px;padding-bottom:58px;width:100%} .eyebrow{font-family:'Archivo';font-weight:700;font-size:13px;letter-spacing:.2em;text-transform:uppercase;margin-bottom:12px} @@ -257,7 +263,7 @@ def home(): {hero('autumn-hike.jpg', 'center', 'Family Scouting · Zieglerville, PA', 'Where kids find their trail.', 'A Cub Scout pack and a Scout troop for kindergarten through age 17. Camp, build, lead, and grow alongside friends, right here in the Perkiomen Valley.', '
', 640)} -