ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
전체 EST, SAT, ACT 연습 플랫폼: 시간 제한 모의고사, 모든 답 해설, 주제별 점수 제공 첫 시험 무료
Your complete EST, SAT and ACT practice platform: timed mock exams, an explanation for every answer and a score by topic. Your first exam is free.
교육GitHub @bobos12온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Commercial EST I preparation platform: public site and exam library, a timed examination engine, and a private admin dashboard. Next.js 16 (App Router, Cache Components) + Supabase (Postgres, Auth, Storage).
docs/EST_BLUEPRINT.mdsupabase/migrations| Phase | Scope | State |
|---|---|---|
| 1 | Inspect project & source materials | ✅ |
| 2 | Schema, security, auth, brand foundation | ✅ |
| 3 | Public website & exam library | ✅ |
| 4 | Examination engine (timer, autosave, resume, grading, results) | ✅ |
| 5 | Admin dashboard, students, exams editor, knowledge base | ✅ (needs live admin test) |
| 6 | AI exam generation → review → publish | ✅ (needs ANTHROPIC_API_KEY) |
| 7 | Plans, Paymob checkout, verified webhooks, renewals | ✅ (needs Paymob keys + sandbox test) |
| 8 | End-to-end testing | in progress — see "Launch checklist" |
eu-central-1).anon key and service_role key.Either with the Supabase CLI:
npx supabase login
npx supabase link --project-ref <your-project-ref>
npx supabase db push
…or paste each file in supabase/migrations/ into SQL Editor in filename order.
cp .env.example .env.local # then fill in the three Supabase values
npm install
npm run dev
Sign up through the site, then run once in the SQL Editor:
update public.profiles set role = 'admin' where email = '[email protected]';
After that, admins manage roles from the dashboard (every change is written to the audit log).
Authentication → URL Configuration: set Site URL to your domain (e.g. https://16hundred.app) and add
http://localhost:3000/** to Redirect URLs for local development. The default confirmation email works as is.
Optionally, for links that also work across devices, change Email Templates → Confirm signup to:
{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=email&next=/dashboard
Database → Extensions → enable pg_cron, then:
select cron.schedule('close-expired-attempts', '* * * * *', 'select public.close_expired_attempts()');
select cron.schedule('expire-subscriptions', '*/15 * * * *', 'select public.expire_subscriptions()');
Access checks never depend on these jobs — they only tidy statuses.
update public.profiles set role = 'admin' where email = '[email protected]';SUPABASE_SERVICE_ROLE_KEY in .env.local (needed for payments).ANTHROPIC_API_KEY. Then: Admin → Knowledge base → upload each EST paper and its answer key
(link the key to its paper) → open the paper → Analyse with AI. Then Admin → Generate exams.PAYMOB_* values. Create a plan in Admin → Plans & payments.
The webhook URL is sent automatically with every checkout: <NEXT_PUBLIC_SITE_URL>/api/webhooks/paymob
— it must be publicly reachable (deploy, or use a tunnel for local testing).NEXT_PUBLIC_SITE_URL to the real domain, and add it to
Supabase → Authentication → URL Configuration.pg_cron and schedule the two jobs in "Scheduled jobs" below./admin)| Area | What it does |
|---|---|
| Overview | Students, active/expired subscriptions, published exams, attempts, revenue, payment outcomes |
| Exams | Create, edit details, add/edit/reorder questions with live preview and image upload, shared passages/tables, preview with answer key, approve, publish / unpublish / archive. Published exams are locked against edits. |
| Generate exams | Subject, topics/domains, question count, difficulty mix, duration, number of exams → drafts in review. A second independent AI pass flags any answer key it disagrees with. |
| Knowledge base | Upload official PDFs (private, de-duplicated by hash, never overwritten), analyse paper + answer key together, review extracted questions |
| Students | Search/filter, profile with attempts, subscriptions, payments; grant/revoke premium and change role — every action in the audit log |
| Plans & payments | Create/edit plans and prices, payment history with filters, subscriptions, webhook problems |
questions, question_options or
exam_questions (RLS). The exam screen loads through get_attempt_payload, which strips correct answers.start_attempt sets deadline_at; save_answer and
submit_attempt reject or expire work after the deadline (+15 s network grace). Refreshing resumes the
same open attempt.origin = 'source' can't be added to
student exams; they feed analysis and AI generation only.approved with exactly one correct option (enforced in the database).payment_events, never by a
browser redirect.requireAdmin) and by RLS.Requires a local Postgres 16:
PGHOST=localhost PGUSER=postgres supabase/tests/run.sh
Applies all migrations to a scratch database with Supabase auth stubs and runs 56 checks covering permissions, answer-key privacy, resume, server-side expiry, grading, access grants and audit, payment idempotency, tampered amounts, renewals, and the published-content lock.