Restaurant Directory
Search the build
-
c1761222026-07-18 snapshot: bump submodule pointer(s) -
a5febef2026-07-03 chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew) -
24ff02d2026-05-19 snapshot — gitify backup 2026-05-19 -
e59f5b82026-05-13 snapshot: register iterations subrepo pointer (1 files) -
e3227072026-05-13 snapshot: initial structure (PLAN, REVIEW, db, migrations, scripts) — iterations/ skipped (nested empty .git) -
963d23a2026-05-08 rel=alternate JSON + HTTP Link header on / and /c/:slug -
bdac86f2026-05-08 Remove all health-code/inspection/violation rendering and drop tables -
79f5c902026-05-07 add canonical .gitignore per standing rule
Authors
- Steve8
Agents used
Skills used
- /restaurants3
- /partials3
- /head2
- /json2
- /server2
- /npm1
- /npx1
- /homebrew1
- /inspection1
- /violation1
- /inspection-violation-20260507-2358461
- /list1
- /next1
- /city1
- /detail1
- /foot1
- /weekly-ingest1
- /los-angeles1
- /la-eh-violations1
Creative ideas + design notes
963d23a · 2026-05-08 · rel=alternate JSON + HTTP Link header on / and /c/:slug
Applies the cross-fleet directory pattern (VCL fbd4be4, NPH 51036bf) to lacountyeats. /api/restaurants already exists as the JSON mirror; this commit just surfaces it via the standard rel=alternate signals. Changes: - views/partials/head.ejs: conditional <link rel="alternate" type="application/json"> when alternateJsonUrl is in render context - src/api/server.ts: HTTP Link header (RFC 8288) on / and /c/:slug routes; alternateJsonUrl computed per-request reflecting current filter state (q + city + cuisine + limit + offset on /, or city= filter on /c/:slug) Smoke (PORT=9746): - GET / → 200, Link header present with canonical + alternate (?limit=50&offset=0) - HTML head includes <link rel="alternate" type="application/json"> Cross-fleet rel=alternate tally now: VCL + NPH + lacountyeats = 3 of 5 directory targets. Remaining: lawyer-directory (autocomplete-SPA, doesn't fit this pattern), professional-directory, animals. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bdac86f · 2026-05-08 · Remove all health-code/inspection/violation rendering and drop tables
Steve directive 2026-05-08: 'remove all the health code details - render + drop DB.' Backup taken at backups/inspection-violation-20260507-235846.sql (local tables already empty before drop). Removed: - views/list.ejs: grade column, ?grade= select, grade-pill rendering, grade param dropped from URLSearchParams (prev/next pagination) - views/city.ejs: grade-row tally header, grade-stat link blocks, grade pill on rest-meta, 'health grades' wording from lede - views/detail.ejs: entire grade-block, inspections section + table, inspector-notes / violation-block, risk_tier dt/dd, 'Health grade' meta - views/partials/foot.ejs: 'health-permitted' + 'Inspection grades reflect' - views/partials/head.ejs: 'health-permitted' + 'Health grade' from default meta description - src/api/server.ts: i.grade LATERAL JOIN in LIST_QUERY, ?grade= filter on / and /api/restaurants, grades query in /c/:slug, inspections+violations queries in /r/:slug, score / last_inspection / risk_tier from selects, grade prop from res.render calls, grade from FacilityRow type - scripts/weekly-ingest.sh: drop ingest-inspections.ts call; drop -t inspection -t violation from pg_dump; rewrite header doc DB (LOCAL): - DROP TABLE inspection CASCADE (was 0 rows) - DROP TABLE violation CASCADE (was 0 rows) Cron: - launchctl unload com.steve.lacountyeats-weekly (then reloaded after commit) Smokes (PORT=9743): - / 200 in 4.8s, 0 health refs - /c/los-angeles 200 in 7.2s, 0 health refs - /r/<slug> 200 in 49ms, 0 health refs - /api/restaurants?grade=A returns count (param now no-op) Pending on Steve: - Push to Kamatera prod (Tailscale auth blocked) - Drop inspection + violation on prod PG - Optional: delete data/la-eh-violations.csv raw file Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
File tree
- .gitignore
- PLAN.md
- REVIEW-2026-05-04.md
- backups/inspection-violation-20260507-235846.sql
- data/la-eh-inspections.csv
- data/la-eh-inventory.csv
- data/la-eh-violations.csv
- data/raw/facility-FA0000999-1778044392355.html
- data/raw/facility-FA0001114-1778044390713.html
- data/raw/facility-FA0017029-1778044394420.html
- data/raw/facility-FA0026149-1778044392392.html
- data/raw/facility-FA0043152-1778044396642.html
- data/raw/facility-FA0043203-1778044394776.html
- data/raw/facility-FA0043205-1778044394879.html
- data/raw/facility-FA0043766-1778044396445.html
- data/raw/facility-FA0044360-1778044398927.html
- data/raw/facility-FA0049124-1778044396607.html
- data/raw/facility-FA0049797-1778044396152.html
- data/raw/facility-FA0055090-1778044397569.html
- data/raw/facility-FA0056601-1778044399877.html
- data/raw/facility-FA0058552-1778044398617.html
- data/raw/facility-FA0066918-1778044399292.html
- data/raw/facility-FA0070428-1778044398980.html
- data/raw/facility-FA0071281-1778044399643.html
- data/raw/facility-FA0072172-1778044400564.html
- data/raw/facility-FA0072463-1778044401134.html
- data/raw/facility-FA0073987-1778044401054.html
- data/raw/facility-FA0175782-1778044402031.html
- data/raw/facility-FA0242422-1778044401726.html
- data/raw/facility-FA0278045-1778044404378.html
- data/raw/facility-FA0280046-1778044402107.html
- data/raw/facility-FA0290180-1778044402657.html
- data/raw/facility-FA0301223-1778044404048.html
- data/raw/facility-FA0308315-1778044403431.html
- data/raw/facility-FA0311139-1778044404256.html
- data/raw/facility-FA0312985-1778044405841.html
- data/raw/facility-FA0317223-1778044405681.html
- data/raw/facility-FA0318611-1778044405144.html
- data/raw/facility-FA0320482-1778044406946.html
- data/raw/facility-FA0320715-1778044406995.html
- data/raw/facility-FA0323583-1778044406920.html
- data/raw/facility-FA0326511-1778044407418.html
- data/raw/facility-FA0331261-1778044407234.html
- data/raw/facility-FA0331676-1778044408068.html
- data/raw/facility-FA0331891-1778044408425.html
- data/raw/facility-FA0332349-1778044412887.html
- data/raw/facility-FA0333309-1778044408871.html
- data/raw/facility-FA0333725-1778044411994.html
- data/raw/facility-FA0352273-1778044409001.html
- data/raw/facility-FA0353037-1778044410501.html
- data/raw/facility-FA0357860-1778044409637.html
- data/raw/facility-FA0399223-1778044409786.html
- db/migrations/002_enrichment_index.sql
- db/pool.ts
- db/schema.sql
- docs/_work/concat.txt
- docs/_work/ledger.json
- docs/_work/narr-intro.mp3
- docs/_work/narr-intro.txt
- docs/_work/narr-t1.mp3
- docs/_work/narr-t1.txt
- docs/_work/narr-t2.mp3
- docs/_work/narr-t2.txt
- docs/_work/narr-t3.mp3
- docs/_work/narr-t3.txt
- docs/_work/narr-t4.mp3
- docs/_work/narr-t4.txt
- docs/_work/narr-t5.mp3
- docs/_work/narr-t5.txt
- docs/_work/narr-t6.mp3
- docs/_work/narr-t6.txt
- docs/_work/narration.mp3
- docs/_work/narration.txt
- docs/_work/recording/page@a6fe4250755f5160a95bc6a46116c723.webm
- docs/_work/silence-1s.mp3
- docs/_work/task-1.png
- docs/_work/task-2.png
- docs/_work/task-3.png
- docs/_work/task-4.png
- docs/_work/task-5.png
- docs/_work/task-6.png
- docs/lacountyeats-demo-20260502-0924.mp4
- docs/long-beach-cpra-email.md
- docs/session-debrief-20260504T005116Z.mp4
- exports/lacountyeats-paid-ads-targets-2026-05-05.csv
- iterations
- logs/launchd-cuisine-sync.err
- logs/launchd-cuisine-sync.out
- logs/launchd-weekly.err
- logs/launchd-weekly.out
- migrations/003_front_page_crawl.sql
- package-lock.json
- package.json
- public/css/site.css
- public/favicon.svg
- public/robots.txt
- scripts/cross-db-website-join.sh
- scripts/enrich-cuisine.ts
- scripts/enrich-website-ddg.py
- scripts/enrich-website-google-places.py
- scripts/ingest-inspections.ts
- scripts/ingest-inventory.ts
- scripts/ingest-pasadena.ts
- scripts/ingest-violations.ts
- scripts/sync-enrichment-to-kamatera.sh
- scripts/weekly-ingest.sh
- src/api/_pg-defaults.ts
- src/api/server.ts
- src/crawl/front_page.ts
- src/enrich/ad_signals.ts
- src/web/views/city.ejs
- src/web/views/detail.ejs
- src/web/views/list.ejs
- src/web/views/map.ejs
- src/web/views/not-found.ejs
- src/web/views/partials/foot.ejs
- src/web/views/partials/head.ejs
- tsconfig.json
- videos/_build_20260503T233208Z/narration.aiff
- videos/_build_20260503T233208Z/narration.m4a
- videos/_build_20260503T233208Z/narration.txt
- videos/_build_20260503T233355Z/findings.png
- videos/_build_20260503T233355Z/narration.aiff
- videos/_build_20260503T233355Z/narration.m4a
- videos/_build_20260503T233355Z/narration.txt
- videos/_build_20260503T233355Z/outro.png
- videos/_build_20260503T233355Z/title.png
- videos/_build_20260503T233444Z/concat.txt
- videos/_build_20260503T233444Z/findings.png
- videos/_build_20260503T233444Z/narration.aiff
- videos/_build_20260503T233444Z/narration.m4a
- videos/_build_20260503T233444Z/narration.txt
- videos/_build_20260503T233444Z/outro.png
- videos/_build_20260503T233444Z/sxs-dark.png
- videos/_build_20260503T233444Z/sxs-light.png
- videos/_build_20260503T233444Z/title.png
- videos/_build_20260503T233457Z/avatar-loop.mov
- videos/_build_20260503T233457Z/concat.txt
- videos/_build_20260503T233457Z/findings.png
- videos/_build_20260503T233457Z/narration.aiff
- videos/_build_20260503T233457Z/narration.m4a
- videos/_build_20260503T233457Z/narration.txt
- videos/_build_20260503T233457Z/outro.png
- videos/_build_20260503T233457Z/silent.mp4
- videos/_build_20260503T233457Z/sxs-dark.png
- videos/_build_20260503T233457Z/sxs-light.png
- videos/_build_20260503T233457Z/title.png
- videos/_build_20260503T233602Z/avatar-loop.mov
- videos/_build_20260503T233602Z/concat.txt
- videos/_build_20260503T233602Z/findings.png
- videos/_build_20260503T233602Z/narration.aiff
- videos/_build_20260503T233602Z/narration.m4a
- videos/_build_20260503T233602Z/narration.txt
- videos/_build_20260503T233602Z/outro.png
- videos/_build_20260503T233602Z/silent.mp4
- videos/_build_20260503T233602Z/sxs-dark.png
- videos/_build_20260503T233602Z/sxs-light.png
- videos/_build_20260503T233602Z/title.png
- videos/_review_20260503T233457Z/frame-12s.png
- videos/_review_20260503T233457Z/frame-1s.png
- videos/_review_20260503T233457Z/frame-22s.png
- videos/_review_20260503T233457Z/frame-28s.png
- videos/_review_20260503T233457Z/frame-5s.png
- videos/_review_v2/frame-12s.png
- videos/_review_v2/frame-1s.png
- videos/_review_v2/frame-22s.png
- videos/_review_v2/frame-28s.png
- videos/_review_v2/frame-5s.png
- videos/build-before-after.sh
- videos/lacountyeats-before-after-20260503T233457Z.mp4
- videos/lacountyeats-before-after-20260503T233602Z.mp4
- videos/render-cards.mjs
- videos/session-tasks.json