ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기MedBank medical MCQ bank and protected video-course learning platform
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
MedBank is a hosted browser app for medical students. The website is static on GitHub Pages, and the live hosted Supabase project is the single source of truth for auth, courses, questions, progress, enrollments, and admin data.
The app does not need a local Supabase instance, local database, or your laptop to stay running. Once GitHub Pages and the hosted Supabase project are available, students and admins can use the app from the web.README 전문 보기 ↗MedBank is a hosted browser app for medical students. The website is static on GitHub Pages, and the live hosted Supabase project is the single source of truth for auth, courses, questions, progress, enrollments, and admin data.
Open the deployed site:
https://youssef256d.github.io/Medbank-Website/The app does not need a local Supabase instance, local database, or your laptop to stay running. Once GitHub Pages and the hosted Supabase project are available, students and admins can use the app from the web.
timed/tutor), source (all/unused/incorrect/flagged), and randomizationCanonical legal-page copy lives in /Users/youssefayoub/Documents/Apps/MCQs Website/docs/legal/:
privacy.md — Privacy Policyterms.md — Terms of Servicesupport.md — Support Policydeletion.md — Data Deletion InstructionsThe public Privacy Policy URL for Apple App Store Connect and Google Play Console is:
https://youssef256d.github.io/Medbank-Website/privacy.htmlThe public account-deletion URL for Google Play Console is:
https://youssef256d.github.io/Medbank-Website/deletion.htmlThese files are source copy for generated/public legal pages. Keep them in sync when privacy, retention, support, account deletion, or platform behavior changes.
Hosted Supabase is the database for the project. Browser storage is only used for session state, route memory, theme preference, and offline/cache safety; it is not the source of truth.
Supabase is wired through:
/Users/youssefayoub/Documents/Apps/MCQs Website/supabase.config.jshttps://fzjzjzdamehxbgikiskt.supabase.cosupabase.config.js/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/migrationsNotes:
SUPABASE_SERVICE_ROLE_KEY in frontend files.profiles, courses, course_topics, questions, test_blocks, etc.).app_state sync path is now limited to non-relational settings/queues only (to avoid duplicate heavy writes and improve responsiveness).g:<storage_key>u:<auth.uid>:<storage_key>This repo now follows an online-only Supabase connection model:
index.html + bootstrap.js + main.js):
supabase-js/Users/youssefayoub/Documents/Apps/MCQs Website/supabase.config.js/api/*.js and supabase/functions/*):
SUPABASE_SERVICE_ROLE_KEYIn Supabase Dashboard:
medbank://auth/callbackYou still need to confirm these values in the Supabase project UI:
Connect
URL Configuration
Site URL to your deployed frontend URLProviders
question-images bucket if you want image upload to workSUPABASE_SERVICE_ROLE_KEYALLOWED_ORIGIN/api backend instead, set the same server env vars thereRecommended connection selection:
Project URL + publishable/anon key for this website frontend.This project is static (index.html + main.js + styles.css), so GitHub Pages works.
main.Validate Changes GitHub Action runs automatically.Quick GitHub Pages steps:
main and / (root)Alternative hosts (often easier for env management): Netlify, Vercel, Cloudflare Pages.
This repo now includes a backend function for sensitive admin actions:
/Users/youssefayoub/Documents/Apps/MCQs Website/api/admin-delete-user.js/Users/youssefayoub/Documents/Apps/MCQs Website/api/admin-set-user-access.js/Users/youssefayoub/Documents/Apps/MCQs Website/api/admin-set-user-password.js/Users/youssefayoub/Documents/Apps/MCQs Website/api/_supabase.jsWhat it does:
profiles (admin only).SUPABASE_SERVICE_ROLE_KEY (server-side only).profiles (server-side only).SUPABASE_SERVICE_ROLE_KEY (server-side only).Required environment variables (server):
SUPABASE_URL (or NEXT_PUBLIC_SUPABASE_URL / PUBLIC_SUPABASE_URL)SUPABASE_SERVICE_ROLE_KEY (or SUPABASE_SECRET_KEY)ALLOWED_ORIGIN (optional, defaults to *)Frontend config:
/Users/youssefayoub/Documents/Apps/MCQs Website/supabase.config.js now supports serverApiBaseUrl."") for GitHub Pages/static deploys."/api".https://your-api.vercel.app/api).For GitHub Pages-only deploys, serverApiBaseUrl can stay empty and the app will use Supabase Edge Functions fallback.
The production GitHub Pages deploy uses Supabase Edge Functions as the canonical admin API:
/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-delete-user/index.ts/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-create-user/index.ts/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-set-user-access/index.ts/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-set-user-password/index.tsThe /api/*.js files are deprecated in place and retained only for an optional
Vercel/Netlify-style hosting path where serverApiBaseUrl is set. Do not extend
the /api copies for production behavior; extend the Edge Functions instead.
/api backend)You can deploy these Edge Functions and keep serverApiBaseUrl empty:
/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-delete-user/index.ts/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-create-user/index.ts/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-set-user-access/index.ts/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/functions/admin-set-user-password/index.tsDeploy to the hosted Supabase project:
supabase functions deploy admin-delete-user
supabase functions deploy admin-create-user
supabase functions deploy admin-set-user-access
supabase functions deploy admin-set-user-password
Optional CORS allow-list (defaults to * if not set):
supabase secrets set ALLOWED_ORIGIN=https://your-site.example.com
How it works with this app:
serverApiBaseUrl/admin-create-user, serverApiBaseUrl/admin-delete-user, serverApiBaseUrl/admin-set-user-access, and serverApiBaseUrl/admin-set-user-password if configured.https://<project-ref>.supabase.co/functions/v1/admin-create-userhttps://<project-ref>.supabase.co/functions/v1/admin-delete-userhttps://<project-ref>.supabase.co/functions/v1/admin-set-user-accesshttps://<project-ref>.supabase.co/functions/v1/admin-set-user-passwordLong course videos should use Cloudflare Stream, not Supabase Storage. Supabase still stores the lesson row, course access, progress, and the cloudflare-stream://<video_uid> reference.
For a temporary free setup, keep cloudflareStreamEnabled: false in supabase.config.js. The app will upload lesson videos to the private Supabase Storage bucket and show the student-name watermark in the lesson player. This is useful for quick testing, but it is not as secure or scalable as Cloudflare Stream for 30 minute to 3 hour videos.
Required Supabase Edge Function secrets:
supabase secrets set CLOUDFLARE_ACCOUNT_ID=your_cloudflare_account_id
supabase secrets set CLOUDFLARE_STREAM_API_TOKEN=your_stream_api_token
supabase secrets set CLOUDFLARE_STREAM_CUSTOMER_CODE=your_customer_code
supabase secrets set ALLOWED_ORIGIN=https://youssef256d.github.io
The Cloudflare token should have Stream permissions. The customer code is the value in Stream player URLs like customer-<CODE>.cloudflarestream.com.
Deploy the video functions:
supabase functions deploy cloudflare-stream-tus-upload
supabase functions deploy cloudflare-stream-token
Protection model:
The real PostgreSQL schema lives in hosted Supabase. Keep database changes in migrations:
/Users/youssefayoub/Documents/Apps/MCQs Website/supabase/migrationsApply migrations to the hosted project only:
supabase db push --dns-resolver https
No local Postgres database is required for the website to run.
The production data path is hosted Supabase. Local browser storage remains only a cache/UX layer for route memory, theme, and offline-safe pending writes.
sessions, incorrect queue, flashcards) into user-scoped cloud keys.app_state RLS policies were migrated to support global/user-scoped key patterns.profiles, courses, course_topics, questions, question_choices, test_blocks, test_block_items, test_responses) with indexes and RLS.Applied Supabase migrations:
scale_app_state_keys_and_rls_for_2000_usersoptimize_app_state_rls_and_indexescreate_core_relational_tables_for_2000_usersadd_external_ids_and_foreign_key_indexes