ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Knowbase
Knowledge Base To Develop knowledge on a topic on a day to day basis
An npm workspace with two packages sharing one origin in production:
Context sheets for the user-facing flows — trigger, steps, what each writes,
the invariants, and the known gaps — live in docs/flows/:
onboarding, review,
quiz.
Change the sheet in the same commit as the flow.
Vite proxies /api and /auth to :8787, so requests are same-origin locally
and session cookies behave exactly as they do in production.README 전문 보기 ↗Knowledge Base To Develop knowledge on a topic on a day to day basis
An npm workspace with two packages sharing one origin in production:
src/, index.html, admin.html | Vite + React frontend, builds to dist/ |
backend/ | Express + Postgres (Drizzle) API |
api/index.ts | Vercel serverless entry — exports the Express app |
vercel.json | Build config and the rewrites that route /api, /auth to the function |
Context sheets for the user-facing flows — trigger, steps, what each writes,
the invariants, and the known gaps — live in docs/flows/:
onboarding, review,
quiz.
Change the sheet in the same commit as the flow.
npm install # installs both workspaces
npm run dev # frontend on :5173
npm run dev:api # API on :8787, in a second terminal
Vite proxies /api and /auth to :8787, so requests are same-origin locally
and session cookies behave exactly as they do in production.
npm run db:migrate # apply migrations (uses the UNPOOLED connection)
npm run db:seed-global # seed the shared global vault
Backend env: copy backend/.env.example to backend/.env and fill it in. See
that file for what each variable does and which are optional.
Frontend and API deploy together to one Vercel project, from one origin.
That's deliberate: the session cookie is SameSite=Lax, so a split origin would
force SameSite=None and depend on third-party cookies, which browsers are
actively restricting.
npm run vercel-build builds the backend (tsc) then the frontend (vite build).
The backend must build first — api/index.ts imports backend/dist/app.js.vercel.json rewrites /api/*, /auth/* and /health to the single function.
The catch-all groups are named :vercelRest*, and that name matters: Vercel
appends any capture group the destination doesn't consume to the rewritten
request as a query parameter. Naming the group :path* silently
overwrote the app's own ?path= on every request, so /api/vaults/mine/note
looked up a note literally called vaults/mine/note and 404'd for every
path. Never name a capture group after a query param the API reads.
One function, not one per route, so middleware order (notably the raw-body
Razorpay webhook mounted before express.json) and the error handler stay in
one place.POSTGRES_URL / POSTGRES_URL_NON_POOLING when you attach a
Postgres store; db/client.ts and db/migrate.ts read either those or the
DATABASE_URL* names, so the same code runs locally and deployed.CORS_ORIGINS stays empty — same origin means CORS never engages.Set these in the Vercel project (Settings → Environment Variables):
| Variable | Needed for |
|---|---|
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | sign-in |
GOOGLE_REDIRECT_URI | must be https://<your-domain>/auth/google/callback, and match Google Cloud Console exactly |
APP_URL | where to send the user after login — https://<your-domain> |
OWNER_EMAILS | comma-separated; these get role=owner on first sign-in |
Postgres vars come from the attached store. NODE_ENV=production is set by
Vercel automatically, which is what flips the session cookie to Secure.
Optional, and dormant until set: API_KEY_ENCRYPTION_KEY (BYO LLM keys),
GEMINI_API_KEY, ANTHROPIC_API_KEY, RAZORPAY_*. The app boots and signs in
without them; only their own routes fail.
This used to deploy to GitHub Pages, which could only ever serve the static frontend —
/api/*resolved to a 404 there, so sign-in and cloud vaults never worked in that deployment. That workflow has been removed.