A deluxe weekly newsletter for your exact corner of town — what's happening, who's behind it, where to go — starting with Hyde Park, Tampa.
// live preview
// usage · live
0SubscribersHyde Park, Tampa
// the vision
Air Mail, but hyperlocal. The bet is that a beautifully-made weekly about your specific neighborhood beats the generic city daily — and that 'your neighborhood' can narrow all the way down to a niche, like Tampa tennis or a single block. First edition: Hyde Park, Tampa. It earns attention first, then ad dollars from the local businesses readers already walk past, then premium tiers; paid acquisition seeds each new locale until word of mouth takes over.
read the full vision →
// milestones · north star
- ✓Exists — repo, vision, loop, and a real zero-dep site scaffold (landing + working subscribe form + archive + /health + /metrics)
- ✓Live — stoop.walls.sh serves the landing page; subscribe form captures real emails to a durable volume; /health + /metrics green
- ✓Issue #1 — a fact-checked first weekly for Hyde Park, Tampa, rendered on-site with an on-page Sources list (/edition/issue-01-hyde-park)
- →First 50 real subscribers — actual neighbors, not test signups
- ·Publishing weekly — 4 consecutive editions, open rate measured
- ·Media kit + first sponsor conversation — /advertise page with real reach numbers + sponsor-inquiry capture LIVE; outreach to local businesses next
- ·🎯 First sponsor dollar — a local business pays. The North Star.
⚑ needs you · 6
Post the reader launch kit (growth/launch-kit.md): start with the personal text to ~20 friends/neighbors, then Nextdoor + a FB group you're in — the human-gated step to the first real subscribers
Send the founding-partner outreach in outreach/intro-emails.md to the 4 Hyde Park targets (glance at each site first, set the founding rate) — the human-gated first sponsor conversation
Watch for real sponsor inquiries + subscribers: set STOOP_ADMIN_KEY on the stoop Railway service, then visit stoop.walls.sh/admin?key=… (or read data/inquiries.json on the volume) — the human-gated sponsor close
Provide a Resend API key as RESEND_API_KEY on the stoop Railway service — the send pipeline (send.js) is built and dry-run-verified; this key is one of the two things gating a real send
Verify a sending domain (SPF/DKIM DNS for stoop.walls.sh) and set STOOP_FROM='Stoop <[email protected]>' — the second gate; then `railway run node send.js issue-01-hyde-park --test [email protected]` to preview in your inbox, then the same with --live to send Issue #1 to the list Decide the paid-acquisition budget to seed the first Hyde Park subscribers (an ad spend)
// the work · 24
- ✓Incubated — repo, vision, loop, and a real site scaffold (subscribe form verified capturing emails locally) · Jun 14
- ✓Live — deployed to Railway, durable subscriber store on a mounted volume (/app/data), and stoop.walls.sh routing to the origin via the walls proxy; /health + /metrics green end-to-end · Jun 14
- ✓Issue #1 published — on-site edition rendering + "Welcome to the Stoop," a fact-checked ~5-min inaugural for Hyde Park, Tampa, live at /edition/issue-01-hyde-park with an on-page Sources list; every claim re-verified against primary sources · Jun 14
- ✓Discoverable & shareable — SEO foundation (canonical + Open Graph + Twitter cards, JSON-LD WebSite/Article-with-citations), dynamic /sitemap.xml + /robots.txt, and a deluxe 1200x630 OG share card at /og.png (rsvg-convert, zero runtime deps); verified live · Jun 14
- ✓One-tap share/referral affordance — Web Share sheet + no-JS Text/Email/X/Facebook/Copy fallbacks on the subscribe-success state and every edition footer, linking absolute stoop.walls.sh URLs; honest word-of-mouth, no fake signups; verified live · Jun 14
- ✓Media kit live — deluxe /advertise page with honest live reach numbers (founding-sponsor framing) + a real sponsor-inquiry form (POST /sponsor-inquiry -> data/inquiries.json on the durable volume); linked from footers + sitemap; verified live · Jun 14
- ✓Hyde Park Field Guide — evergreen /guide reference (Bayshore, historic district, Hyde Park Village, eat & drink, green space) with FAQPage structured data for organic local search; built from already-verified facts, cross-linked sitewide + in sitemap; verified live · Jun 14
- ✓Email-send pipeline — mail.js (deluxe HTML+text render) + send.js CLI (dry-run by default, --live via Resend) + token-signed one-click /unsubscribe (RFC 8058); fully verified as a dry run, live send gated only on a provider key + verified sending domain · Jun 14
- ✓Sponsor outreach drafts — outreach/ has a founding-partner one-pager + personalized intro emails to 4 real, re-verified Hyde Park businesses (Buddy Brew, On Swann, Bulla Gastrobar, The Candle Pour) + reusable templates; honest 0-subscriber framing, public contacts only, closed businesses dropped; ready for Pat's send · Jun 14
- ✓Tip line — /tips 'Got a tip?' page capturing real neighbor intel to data/tips.json on the durable volume (the editorial input pipeline for future editions); states verify-before-print + anti-dox rules; linked sitewide + in sitemap; verified live · Jun 14
- ✓Landing conversion — a live 'taste of the latest issue' card (title + dek + clipped opening line, pulled from the edition store) on the home page so visitors judge the writing before the subscribe ask; auto-updates to the newest issue, shown only pre-signup; verified live · Jun 14
- ✓Branded favicon + touch icons — gold serif 'S' (svg/ico/png + apple-touch-icon) served with proper <link rel=icon> + theme-color tags; fixed the catch-all that served HTML for /favicon.ico; closes a real credibility gap; verified live (legacy .ico edge cache self-heals ~4h) · Jun 14
- ✓RSS feed — /rss.xml (+ /feed.xml alias), a well-formed RSS 2.0 feed of the archive with RFC-822 dates + permalink guids, autodiscovered in every page head + linked in the archive footer; follow Stoop without email/account; verified live via strict XML parse · Jun 14
- ✓Correctness + hardening — real 404s for unknown paths (branded 'Lost on the block' page; killed the soft-404 where the catch-all served the landing with a 200) + baseline security headers (nosniff, Referrer-Policy, X-Frame-Options) on every response; verified live · Jun 14
- ✓About page — /about, an honest trust page (what Stoop is, the public honesty bar, built-in-public as Wall #012, how to reach us) for readers + sponsors weighing a brand-new publication; linked from footer + sitemap; verified live · Jun 14
- ✓Accessibility — real visually-hidden <label for> elements on every form input (subscribe, /tips x4, /advertise x4), fixing the placeholder-only WCAG failure; look unchanged for sighted users, usable for screen-reader users; verified live · Jun 14
- ✓Operator view — token-gated /admin (default-deny: 404s unless STOOP_ADMIN_KEY is set; wrong key also 404s; noindex + no-store; not in sitemap) showing real subscriber/inquiry/tip counts + recent entries so Pat can act on sponsor leads without reading the volume by hand; verified default-off live · Jun 14
- ✓Install identity + structured data — site.webmanifest (192/512 icons, standalone display) for add-to-home-screen + a @graph JSON-LD with a NewsMediaOrganization (logo + sameAs to walls.sh) referenced by the WebSite node for richer search appearance; verified live · Jun 14
- ✓Per-edition OG share cards — bin/og-card.mjs generates a branded per-issue 1200x630 card (title on the brand ground) via rsvg; server auto-discovers og-<slug>.png and each edition's OG meta + Article JSON-LD use their own card, falling back to the generic /og.png; verified live · Jun 14
- ✓Reader launch kit — growth/launch-kit.md: ready-to-post honest, founder-disclosed, non-spammy copy (personal text, Nextdoor, FB group, flyer, one-liners) + honest-posting rules, to get the first real Hyde Park readers; the GROW twin of outreach/ · Jun 14
- ✓Durable-store reliability — closed the lost-update race on subscribe/unsubscribe (fresh re-read + atomic mutate-write, so concurrent signups can't silently drop a real subscriber) + crash-safe temp+rename writes on all three stores; verified 25 concurrent signups all persist; shipped before the launch kit drives real traffic · Jun 14
- ✓send.js --test mode + full live endpoint sweep — added the test-to-self send rung (node send.js <slug> --test [email protected] sends ONE before --live blasts the list) and verified all 22 live routes 200 with correct content-types, negatives 404, /metrics an honest 0 · Jun 14
- ✓Guide FAQ expansion — doubled /guide FAQ 4→8 (walkable? / what's SoHo? / how old? / what to do?) from already-verified Lap-2 facts; each a distinct search intent → more FAQPage rich-result slots, zero new claims; verified 8 visible + 8 JSON-LD entities live · Jun 14