ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Temukan kompetisi, beasiswa, dan magang di Indonesia. Terbuka untuk pelajar, mahasiswa, lulusan baru, dan profesional.
Translation pending
EducationTypeScript · JavaScriptGitHub @NichBry25OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Indonesia-first student opportunities platform (competitions-first MVP). Next.js 16 + TypeScript,
PostgreSQL + Drizzle ORM, Auth.js, Meilisearch, Redis + BullMQ, Cloudflare R2, Resend, Sentry.
The nightly badge reports the concurrency race scripts and the contrast auditor self-test, which the
unit suite structurally cannot check. It is here because fourteen nightly-failure notifications were
delivered in two weeks and thirteen were never opened: a badge is read where a notification is not.
Its state is also reported by /close-step, so a red night is seen at the moment a work unit closes.Read the full README ↗Indonesia-first student opportunities platform (competitions-first MVP). Next.js 16 + TypeScript, PostgreSQL + Drizzle ORM, Auth.js, Meilisearch, Redis + BullMQ, Cloudflare R2, Resend, Sentry.
The nightly badge reports the concurrency race scripts and the contrast auditor self-test, which the
unit suite structurally cannot check. It is here because fourteen nightly-failure notifications were
delivered in two weeks and thirteen were never opened: a badge is read where a notification is not.
Its state is also reported by /close-step, so a red night is seen at the moment a work unit closes.
Project instructions and the durable truth files live in CLAUDE.md and
docs/.
npm install
cp .env.example .env.local # fill in values
npm run db:migrate:guarded # apply migrations (always use the guarded script)
npm run dev
Useful scripts: npm run lint, npm run typecheck, npm run test, npm run build,
npm run env:check, npm run connectors:status.
R2 backs competition submission uploads (activated at Step 4.6). Files are uploaded directly from the browser to R2 via short-lived presigned PUT URLs; the app stores only file metadata.
Required environment variables (see .env.example):
| Variable | Purpose |
|---|---|
R2_ENDPOINT | https://<account-id>.r2.cloudflarestorage.com — encodes the Cloudflare account id |
R2_BUCKET | Bucket name |
R2_ACCESS_KEY_ID | R2 access key id |
R2_SECRET_ACCESS_KEY | R2 secret access key |
R2_REGION | Optional; defaults to auto |
Graceful degradation. The submission upload-URL endpoint
(POST /api/v1/competitions/[competitionId]/registrations/[registrationId]/submission/upload-url)
checks isR2Available() before signing. When any of the four credentials above is missing it
returns HTTP 503 submission_upload_unavailable (never an uncaught 500), so the app remains
usable without R2 configured — only the upload step is unavailable. This mirrors the Meilisearch
degradation model (isMeilisearchAvailable()).
Security note (MVP boundary): submission file keys are server-generated as
submissions/{registrationId}/{uuid}and the metadata-record endpoint validates the key prefix before any DB write. The app does not verify the object actually exists in R2 — key-prefix validation is the MVP security boundary. Presigned download (GET) is deferred to a later step.