ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A tool for the CUSG Supreme Court (and pre-law students, or anyone
else interested in the field of law, more broadly -- broadened from
"pre-law students" specifically as of the Phase 4 round, see
docs/ARCHITECTURE.md) to find upcoming, in-person Boulder-area court
proceedings worth sitting in on -- jury trials, oral arguments, and
motions hearings -- planned at least a week or two out, plus anything
getting real local news coverage. Full spec in the original build
prompt; this README covers what was actually built and how to run it.檢視完整 README ↗A tool for the CUSG Supreme Court (and pre-law students, or anyone
else interested in the field of law, more broadly -- broadened from
"pre-law students" specifically as of the Phase 4 round, see
docs/ARCHITECTURE.md) to find upcoming, in-person Boulder-area court
proceedings worth sitting in on -- jury trials, oral arguments, and
motions hearings -- planned at least a week or two out, plus anything
getting real local news coverage. Full spec in the original build
prompt; this README covers what was actually built and how to run it.
Beyond the original spec: logged-in Justices can RSVP their own attendance
to a hearing and recommend hearings on a shared board (recommending emails
every other Justice plus anyone subscribed) with a callout on the
hearing's own page; any visitor can propose case details (a summary, a
judge's name) for the team to review, or add a post-hearing writeup to the
public Archive; the feed now also covers the Colorado Supreme Court and
Court of Appeals, restricted to cases already newsworthy or likely to
become so; a first-visit welcome page explains how to use the tool; and
the docket refreshes on a fixed daily schedule with a visible
last-updated timestamp and a rate-limited manual-refresh button; and
Justices now get invite-provisioned accounts with a public profile
(photo, bio, "why I care about court-watching") linked from their name
everywhere it appears on the site. See "Phase 2 additions" and "Phase 3
additions" in docs/ARCHITECTURE.md for the full
lists, including access-model decisions made explicitly by the CUSG
contact that reversed earlier choices in this same build -- most
recently, every Justice account now also gets full curation access
(reversing Phase 2's "keep them separate" decision).
This was built and validated against real, live data, not mocks.
During this build the docket-pull job pulled real Boulder County court
data (~5,000 hearings across a rolling 28-day window), the news-monitoring
job pulled real articles from six live Boulder-area and statewide sources,
and the federal supplement uses a real, currently-scheduled U.S. Supreme
Court case (confirmed directly against supremecourt.gov). See
docs/DATA_SOURCE_FINDINGS.md for the full
account, including several real bugs that only showed up against live data
and how they were fixed.
| Piece | Status |
|---|---|
| Docket-pull pipeline (fetch, decode, classify, filter, diff/upsert) | Real, working, tested against live data. |
| News tracking system (per-hearing Google Custom Search, weekly reading list) | Real, working, rebuilt in the Phase 8 round -- rather than polling RSS feeds and fuzzy-classifying a firehose of articles (the Phase 6 approach), searches once per eligible upcoming hearing (Jury Trial/Oral Argument) for news about that specific case. A case number found in a result auto-matches; anything else lands in a "weekly reading list" for a one-click confirm/dismiss. Real email alerting (SendGrid) if daily search-API usage approaches its quota. See "Phase 8 additions" in docs/ARCHITECTURE.md. |
| Appellate supplement (CourtListener search: federal + Colorado Supreme Court/Court of Appeals) | Real, working, seeded with one real, currently-scheduled federal case; "In the news" curation hint verified live against real Colorado Supreme Court search results. |
| Public list/detail/subscribe/recommendations/welcome views | Real, working, React frontend against the real API. |
| Admin/curation tool (review queues, blurbs, exclusion, academic calendar, activity log) | Real, working. |
| CUSG Justice features (attendance RSVP, recommendation board) | Real, working, seeded with the actual 7 Justices; requires real Justice login (reversed from an earlier no-login version at the CUSG contact's explicit request -- see docs/ARCHITECTURE.md). Not in the original spec -- added on request. |
| Public "add case details" submissions | Real, working, moderated by an Editor before anything publishes. Not in the original spec -- added on request. |
| Recommendation callout + dual email alert | Real, working: a new recommendation emails every other Justice and every subscriber to new-recommendation alerts, and shows a "★ Recommended" callout on the hearing's own page (console-logged, same as the weekly digest -- see Email delivery below). Not in the original spec -- added on request. |
| Livestream links | Real, working -- honest links to Colorado's real statewide courtroom-video portal and the U.S. Supreme Court's real live-audio page (neither offers a deep link to a specific hearing). Not in the original spec -- added on request. |
| Archive & Reflections | -- anyone (Justice or public) can add a post-hearing writeup once its date has passed; publishes immediately with spam/profanity filtering and rate-limiting, no review queue. Not in the original spec -- added on request. |
cd backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Local dev / demo database ONLY -- never run this against a real
# production database (see docs/DEPLOYMENT.md). Pulls real live data,
# but also creates two fictional curation accounts with the hardcoded
# password `changeme` ([email protected] /
# [email protected]), plus other demo-only fixture
# content. Safe to re-run locally.
python scripts/seed_demo_data.py
# Create the 7 real CUSG Justice accounts (random passwords, printed once
# to stdout -- see the script's docstring, and save them somewhere private).
python scripts/create_justices.py
uvicorn app.main:app --reload # http://localhost:8000
Demo curation logins (created by the seed script above, local dev only):
[email protected] / changeme (Editor) and
[email protected] / changeme (Contributor). Justice
logins come from whatever create_justices.py printed when you ran it.
Run the test suite (well under 30s, no network needed except a couple of
live CourtListener/CourtListener-adjacent integration tests that skip
gracefully if offline). pytest itself -- and the handful of packages only
it needs -- live in requirements-dev.txt, kept out of the production
install (see that file's own comment for why):
pip install -r requirements-dev.txt
pytest
cd frontend
npm install
npm run dev # http://localhost:5173, talks to the backend at localhost:8000
python scripts/run_docket_pull.py # state docket export, daily in production
python scripts/run_news_monitor.py # news sources, daily in production
python scripts/verify_data_sources.py # re-checks court codes, appearance-type
# distribution, and news-source reachability --
# see docs/DATA_SOURCE_FINDINGS.md
In production these run on a schedule via app/jobs/scheduler.py
(ENABLE_SCHEDULER=1) or your host's own cron/scheduled-function feature.
docs/DATA_SOURCE_FINDINGS.md -- what
was confirmed live, what broke and was fixed against real data, and the
Section 10 open questions resolved during build.docs/CASE_CATEGORY_DECODING.md --
the case-number and hearing-type decode tables, and how to extend them.docs/EXCLUSION_LOGIC.md -- exactly how
juvenile and sensitive cases (and visitor-submitted content) are, and
aren't, filtered.docs/ARCHITECTURE.md -- repo layout, schema
deltas from the original spec and why (including the post-spec Justice
and community-submission features), known limitations, next steps.docs/DEPLOYMENT.md -- step-by-step real
deployment: GitHub + Render (backend/Postgres) + Vercel (frontend) +
free scheduled jobs via GitHub Actions.Civic/legal-reference look per the build prompt's Section 3: serif headings (Source Serif 4), sans body/tables (IBM Plex Sans), muted navy/charcoal palette with a single amber accent for calls-to-action and the "in the news" flag. Screenshots of the running app are the best way to see it -- run the quickstart above.
| Fixed daily auto-refresh + manual refresh | Real, working -- 7am America/Denver via APScheduler (DST-aware) and GitHub Actions cron (UTC, drifts across DST -- documented), plus a public "Refresh now" button with a global cooldown and per-IP rate limit. Not in the original spec -- added on request. |
| Justice invite-link accounts + public profiles | Real, working -- an Editor/Justice invites a real person by email (one-time, expiring, single-use link), or a person already on an Editor-maintained allow-list can request their own link directly (self-service, gated the same way); either way the Justice sets their own password and fills out a public profile (bio, year/major, why they care, a real uploaded photo -- validated and re-encoded via Pillow, EXIF stripped). Every Justice account now also gets full curation access (see "Phase 3 additions"). Not in the original spec -- added on request. |
| Linked Justice names | Real, working -- a Justice's name links to their profile section on the unified "Meet the Justices" page wherever it appears (recommendation callout, attendance rows, Archive attendee lists/bylines), consistently styled. Not in the original spec -- added on request. |
| Homepage + "Meet the Justices" redesign, "CUSG Court" branding | Real, working -- / is a dedicated landing page (hero, "This Week's Pick," pull-quote, about band); the filterable docket moved to /hearings. Every Justice's profile now renders inline on one page instead of a click-through directory. Added in the Phase 6.2 round -- see docs/ARCHITECTURE.md. |
| Justice availability meter + public "fits your schedule" matching | Real, working -- Justices record recurring weekly free time, seen as a Justice-only red-green meter per hearing (never exposed to public users/API responses); any visitor can separately enter their own free time (browser-local, no login) and see a "Fits your schedule" badge, optionally turning it into a personalized weekly-digest subscription. Added in the Phase 6.2 round -- see docs/ARCHITECTURE.md. |
| Academic-calendar de-emphasis | Real, working, seeded with CU Boulder's actual published Fall 2026 dates. |
| "Learn" teaching feature (reusable topic library + one-off case notes) | Real, working, added in the Phase 9 round. A Justice-written LearnTopic library (/learn, filterable) auto-surfaces on every hearing matching its hearing type and/or case category -- write one, it applies everywhere that type/category appears. A separate, optional CaseTeachingNote attaches to one specific hearing for something unusual worth explaining beyond the general topic, managed inline on that hearing's page, with a "Copy to Archive" action that reuses the real Archive creation path. Video: paste a YouTube/Vimeo/direct-file URL (the reliable path for anything over a minute or two), or upload a short clip directly (25MB cap -- Render's free-tier proxy silently drops longer uploads before they even reach the app, confirmed live; direct upload is a convenience for a small clip, not the main path). See "Phase 9 additions" in docs/ARCHITECTURE.md. |
| Page redesign (Home, Recommendations, Archive, Learn) + "This Week's Pick" / pinned recommendation | Real, working, added in the Phase 10 round. An Editor can flag one hearing as the homepage's "This Week's Pick" (Hearing.is_weekly_pick), and a Justice can pin one recommendation as the Recommendations page's featured Lead card (HearingRecommendation.is_pinned) -- both real "exactly one at a time" backend flags, not the client-side heuristics/plain lists they replaced. All four pages got a warmer, editorial visual redesign (new shared design tokens, Archive's rotating/color-cycled "paper" timeline, Learn's sidebar-plus-grid with a new /learn/:id detail page) over the same real data. See "Phase 10 additions" in docs/ARCHITECTURE.md. |
| Month calendar view + clickable, color-coded hearing-type tags | Real, working, added in the Phase 11 round. The Calendar page gained a List/Month toggle (?view=month, List stays default) -- a 6-week grid with a small colored dot per hearing (capped at 3 + a "+N"/"99+" overflow count, so even a hundred-plus-case docket day never breaks the grid), a selected-day sidebar (that day's hearings, a "View full day on the docket" link, and a Justice-only day-availability gauge), and a color legend. Past 20 hearings in one day, the sidebar switches to a summary -- grouped counts by type, a "Notable" section for anything already recommended or in the news, and a search -- rather than listing all of them. Hearing-type tags are clickable everywhere they appear (Home, Calendar, Recommendations, Archive) and colored by one of 8 real groups (Hearing.tag_color, computed from the docket's actual free-text hearing types) instead of one flat gray. See "Phase 11 additions" in docs/ARCHITECTURE.md. |
| Google Calendar sync for Justice availability | Real, working (code-complete; needs a real Google Cloud OAuth application's credentials to actually run -- see "Phase 12 additions" in docs/ARCHITECTURE.md), added in the Phase 12 round. A Justice can link a Google Calendar instead of painting availability by hand, via a freebusy-only OAuth scope that can never see an event's title, guests, or any other detail -- enforced by the scope Google grants, not just a policy promise. Defaults to syncing the primary calendar (with an optional manual calendar-ID field for a different one), since listing calendars would require a much broader, event-content-reading scope. Synced data feeds the same per-hearing meter and new month-view day-gauge real manual entry already did, via a new date-specific override layer layered on top of (not replacing) the existing recurring-weekly model. |
| Email delivery | Real, working, optional. Defaults to console/log output (no account needed to run this); set EMAIL_BACKEND=sendgrid plus a SendGrid API key + verified sender for actual delivery of invites, password resets, recommendation alerts, and the digest -- see docs/DEPLOYMENT.md's "Real email delivery" section. The digest-selection/suppression logic is unaffected either way. See app/jobs/digest.py. |
| Job-failure alerting | Stubbed to console/log output, same reasoning. See app/alerting.py. |
| Hosting / Postgres / real cron | Not deployed -- this build ran locally with SQLite. DATABASE_URL switches to Postgres with no code change; see docs/ARCHITECTURE.md. |