ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
겨루기/품새/격파 규칙 퀴즈 + 학번·비밀번호 학생 로그인 + 학생별 응시 기록(내 결과) + 관리자 대시보드(전체 학생 시계열 모니터링)를 갖춘 실제 웹앱입니다. Claude Artifact가 아니라 진짜 서버(데이터베이스 포함)를 쓰기 때문에, 학생이 어떤 기기로 접속하든 로그인만 하면 기록이 서버에 쌓이고 교수자가 한 화면에서 전체 현황을 볼 수 있습니다. 학생은 처음 접속 시 학번+이름+비밀번호로 계정을 만들고(비밀번호는 암호화 저장), 이후에는 학번+비밀번호로 로그인합니다. 로그인해야만 퀴즈를 풀 수 있고, 퀴즈 결과는 로그인한 본인 계정으로만 저장되므로 다른 사람 이름으로 응시하거나 남의 기록을 조회할 수 없습니다. 이 컴퓨터에는 Node.js가 설치되어 있지 않아서, 이 대화에서는 로컬로 실행/빌드 테스트를 하지 못했습니다. 아래 순서대로 하면 내 컴퓨터에 아무것도 설치하지 않고 클라우드에서 바로 빌드·배포됩니다 (GitHub과 Vercel이 알아서 설치·빌드해줍니다). 만약 배포 중 오류가 나면, 오류 메시지를 그대로 저에게 붙여넣어 주시면 고쳐드리겠습니다.README 전문 보기 ↗
겨루기/품새/격파 규칙 퀴즈 + 학번·비밀번호 학생 로그인 + 학생별 응시 기록(내 결과) + 관리자 대시보드(전체 학생 시계열 모니터링)를 갖춘 실제 웹앱입니다. Claude Artifact가 아니라 진짜 서버(데이터베이스 포함)를 쓰기 때문에, 학생이 어떤 기기로 접속하든 로그인만 하면 기록이 서버에 쌓이고 교수자가 한 화면에서 전체 현황을 볼 수 있습니다.
학생은 처음 접속 시 학번+이름+비밀번호로 계정을 만들고(비밀번호는 암호화 저장), 이후에는 학번+비밀번호로 로그인합니다. 로그인해야만 퀴즈를 풀 수 있고, 퀴즈 결과는 로그인한 본인 계정으로만 저장되므로 다른 사람 이름으로 응시하거나 남의 기록을 조회할 수 없습니다.
이 컴퓨터에는 Node.js가 설치되어 있지 않아서, 이 대화에서는 로컬로 실행/빌드 테스트를 하지 못했습니다. 아래 순서대로 하면 내 컴퓨터에 아무것도 설치하지 않고 클라우드에서 바로 빌드·배포됩니다 (GitHub과 Vercel이 알아서 설치·빌드해줍니다). 만약 배포 중 오류가 나면, 오류 메시지를 그대로 저에게 붙여넣어 주시면 고쳐드리겠습니다.
taekwondo-quiz 등), 데이터베이스 비밀번호는
따로 저장해두세요(나중에 안 씁니다).supabase/schema.sql 파일을 열어서 내용 전체를 복사하고,
SQL Editor에 붙여넣은 뒤 Run 을 누릅니다. (응시 기록 테이블과 학생 계정 테이블, 총 2개가
만들어집니다.)https://xxxxx.supabase.co)anon 키가 아니라 service_role 키입니다 — 절대 외부에 공개하지 마세요)taekwondo-quiz-app 등 원하는 대로,
Public/Private 아무거나 상관없습니다. "Add a README" 체크는 끄세요.quiz-webapp 폴더 안의 모든 파일/폴더를 웹 화면으로 통째로 드래그해서 올립니다
(폴더 구조가 그대로 유지되어 업로드됩니다). node_modules는 애초에 없으니 신경 쓰지 않아도 됩니다.https://vercel.com 에서 Continue with GitHub 로 가입/로그인합니다.
Add New → Project 를 누르고, 방금 만든 GitHub 저장소를 선택해 Import 합니다.
Framework는 자동으로 "Next.js"로 잡힙니다. 그대로 두고, Environment Variables 항목을 펼쳐서
아래 네 가지를 입력합니다 (.env.example 파일 참고):
| Key | Value |
|---|---|
SUPABASE_URL | 1단계에서 복사한 Project URL |
SUPABASE_SERVICE_ROLE_KEY | 1단계에서 복사한 service_role 키 |
ADMIN_PASSWORD | 교수님이 정하는 관리자 비밀번호 (원하는 문자열) |
COOKIE_SECRET | 아무 긴 임의의 문자열 (예: 키보드를 막 눌러 30자 이상) |
Deploy 를 누릅니다. 1~2분 정도면 빌드가 끝나고 https://프로젝트이름.vercel.app 링크가 생깁니다.
이 링크가 학생들에게 공유할 최종 주소입니다.
ADMIN_PASSWORD 입력 → 대시보드에서 방금 응시 기록이
보이는지 (겨루기/품새/격파 시계열 그래프, 학생별 요약, 전체 로그)lib/banks/gyeorugi.js, pumsae.js, gyeokpa.js 파일 안의 배열을 수정한 뒤, 같은 파일을
GitHub 저장소에 다시 업로드(덮어쓰기)하면 Vercel이 자동으로 재배포합니다. 코드를 몰라도
{q:"...", c:["...","...","...","..."], a:0, note:"..."} 형식만 그대로 지키면 됩니다
(a는 정답 보기의 번호, 0부터 시작).
Node.js 20 버전 이상을 설치한 뒤, 이 폴더에서:
npm install
cp .env.example .env.local # 값을 채워넣기
npm run dev
http://localhost:3000 으로 접속하면 됩니다. 다만 이 과정은 필수가 아니며, 위 GitHub+Vercel
방법만으로도 배포·운영에 아무 문제 없습니다.
app/ — 페이지들 (Next.js App Router)app/login — 학생 로그인 / 최초 비밀번호 설정 화면app/api/auth/* — 학생 회원가입/로그인/로그아웃/로그인 상태 확인 APIapp/api/attempts — 퀴즈 결과 저장 API (로그인한 본인 계정으로만 저장됨)app/api/admin/* — 관리자 로그인/로그아웃/전체 조회 API (비밀번호 필요)lib/banks/*.js — 겨루기/품새/격파 문제 은행 (기존 아티팩트에서 그대로 이식)lib/studentAuth.js — 학생 로그인 쿠키를 서명/검증하는 로직 (HMAC, 30일 유지)lib/adminAuth.js — 관리자 로그인 쿠키를 서명/검증하는 로직 (HMAC, 12시간 유지)components/QuizRunner.js — 퀴즈 진행 UI (클라이언트)components/MyResultsClient.js — 내 결과 화면 UI (클라이언트)components/AdminDashboardClient.js — 관리자 대시보드 UI (시계열 그래프는 recharts 사용)supabase/schema.sql — Supabase에 한 번 실행할 테이블 생성 SQL (attempts, students)students 테이블에서 해당 학번 행을 삭제하면 그 학번으로 다시 등록(비밀번호 재설정)할
수 있습니다. (기존 응시 기록은 attempts 테이블에 그대로 남아있어요.)student_id가 실제 학번과 다르게 입력되어 있을 수 있습니다. 필요하면 Supabase SQL Editor에서
attempts 테이블을 직접 확인/수정해주세요.