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.