ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證NYC High School AI Application Navigator
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
AI-powered NYC public high school admissions navigator. AdmitDay helps families turn a scattered admissions process into a grounded, personalized school list.
Every year, roughly 75,000 NYC families navigate high school admissions. The information exists across DOE pages, School Information Finder, NYC-SIFT, school sites, Facebook groups, and spreadsheets, but it is hard to filter and harder to personalize.
AdmitDay is built around a simple product bet: parents do not need more raw information. They need to know which schools are plausible, why they match, and what to do next.檢視完整 README ↗AI-powered NYC public high school admissions navigator. AdmitDay helps families turn a scattered admissions process into a grounded, personalized school list.
/school/[dbn]Every year, roughly 75,000 NYC families navigate high school admissions. The information exists across DOE pages, School Information Finder, school sites, Facebook groups, and spreadsheets, but it is hard to filter and harder to personalize.
AdmitDay is built around a simple product bet: parents do not need more raw information. They need to know which schools are plausible, why they match, and what to do next.
AdmitDay's live surfaces are /find discovery, school detail pages, and a signed-in shortlist:
/find: users narrow schools by hard rail filters (under a "Non-Negotiables" heading), optionally set a starting point (ZIP or subway station) to filter and sort by distance, then use the ask box for plain-language criteria that re-rank results without silently removing schools. Rows link to /school/[dbn] detail pages and can be saved to the shortlist./api/find/ask./shortlist): a signed-in family's saved schools, split into SHSAT and Main list sections, with expandable rows and a print view. Saved lists are stored in Postgres via /api/saved-schools.The older standalone /chat product surface is decommissioned.
components/ui/.dbn.text-embedding-3-small, semantic chunking by identity, current MySchools programs, academics, and activities, plus deterministic filtering.rate_limits table), with an in-memory fallback if the store errors.lib/trace.ts) for per-request LLM cost/latency/token/retrieval tracing on /api/find/ask and /api/rationale — logging only, never on the response path, and never carries question/answer/prompt/chunk text. /api/find/ask returns that request's trace id to the client; rating an answer (FeedbackRow, via /api/find/feedback) writes a Langfuse score against it, joining user feedback to the trace it belongs to./find and school pages does not. Signed-in users can delete their account (/api/account).main; GitHub Actions runs Jest on pushes and PRs, the ask eval (eval-ask.yml), a Playwright smoke test of the signed-out parent flow on production (smoke.yml), and a weekly README freshness check (readme-freshness.yml).Data currency is the core differentiator. One command runs the refresh pipeline:
npm run refresh:data
The pipeline runs build_school_data.py, validates counts and required fields, writes the validated JSON and data/schema-summary.json, rebuilds embeddings with scripts/embed-schools.ts, and then seeds Postgres with scripts/seed-schools.ts. Embeddings run before the DB update so a provider/key failure cannot leave /find data ahead of RAG. It refuses to write if the scrape looks structurally wrong, such as a large school-count drop, duplicate DBNs, or missing required fields.
The refresh fails loudly if MySchools coverage drops too far: at least 95% of schools must have a program with both program_code and provenance.source == "MySchools", or validation rejects the scrape.
Source roles:
dnpx-dfnc (the Fall 2025 InfoHub HS directory plus 2024-25 School Quality Reports, via scripts/enrich_doe_directory.py) provides the school list, DOE directory fields, School Quality Report scores, and the high-impact flag (impact percentile >= 80).lib/shsat-cutoffs.ts, mirrored in build_school_data.py) come from NYC DOE "Specialized High School Offers" press releases and carry the 2024, 2025, and 2026 offer years per specialized-school DBN, each with a source URL and the date it was last verified. getShsatCutoff(dbn) returns the latest year; getShsatCutoffs(dbn) returns all published years.Scheduled refresh runs from the VPS, where the env files already live. scripts/vps-data-refresh.sh pr runs in /root/admitday-data (a dedicated AdmitDay checkout; /root/app on the VPS is a different app), sources /root/admitday-data/.env.local if present, then the root-owned secret files /root/.env.local and /root/.env.agents, scrapes, validates, rebuilds embeddings, prunes stale remote refs, pushes a data/weekly-refresh branch, dispatches CI, and opens or updates a data PR (found by number, not branch name) with the tracked data artifacts. Its body reports the school count, added and removed DBNs, the program-count change, the open-house count, and when the run fetched the data. If the scrape or validation step fails, the runner never just logs it -- it opens or updates the single Data refresh failed GitHub issue with the failure summary. If nothing changed, no PR is opened. scripts/vps-data-refresh.sh merge is the data refresh runner's publication gate: it merges only when the generated PR changes exactly schools.json, data/schema-summary.json and data/school-embeddings.json, and the GitHub CI test check is green. The VPS never writes to Postgres: merging the data PR deploys schools.json to Vercel, and the daily Vercel cron /api/cron/seed-schools (10:00 ET, 14:00 UTC) loads it into Postgres from there -- a data PR that merges reaches Postgres at the next run of that cron. The database secret exists only in Vercel, not on the VPS.
Cadence: twice weekly (Monday and Thursday, 12:00 UTC) during admissions season, September through March; monthly (the first Monday of the month) April through August; scripts/vps-data-refresh.sh pr/merge can also be run manually at any time. The crontab lines are committed at scripts/vps-data-cron.txt -- install them on the VPS with:
crontab -l | { cat; cat scripts/vps-data-cron.txt; } | crontab -
AdmitDay uses product rules and tests to keep the AI parts bounded:
npm run eval:ask is the live eval harness for the ask box (evals/run-ask-eval.ts). It runs weekly through the Anthropic Batch API and on ask-path PRs (not forks), records Langfuse dataset runs, and gates merges; admitday_eval.py is historical.n/a (not reported) or none (not offered) mark, never a sentence./disclaimers) is linked from the footer.Key lessons from building the retrieval layer:
AdmitDay is also a testbed for a guarded autonomous coding workflow. A coordinator on a DigitalOcean VPS picks up GitHub issues labeled agent-ok, loads shared rules from AGENTS.md, runs Claude Code on task branches, verifies with tests and build checks, asks a second model to review the diff (strict verdict), and opens PRs back on GitHub.
The full operator workflow, including who uses it, where it runs, session discipline, compact task briefs, cost gates, Langfuse observability, and future model routing, lives in docs/agent-pipeline.md.
git clone https://github.com/neinna/AdmitDay.git
cd AdmitDay
npm install
cp .env.local.example .env.local
# Add ANTHROPIC_API_KEY, OPENAI_API_KEY, and Postgres vars to .env.local
npm run dev
Live in production at https://www.admitday.com. Recent work shipped the Postgres data layer, the Fall 2025 DOE data with School Quality Report scores, the shortlist, distance from a starting point, per-IP rate limiting, and the guarded autonomous agent pipeline. Five moderated user sessions with NYC parents are complete; active development is focused on the October application window.