ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
같은 학교 선생님들을 위한 수업프로그램 모음 사이트. 프레임워크 없는 Node HTTP 서버 + 바닐라 JS SPA + Supabase Postgres/Storage + Vercel, 의존성은 pg 하나. 프로그램 하나에 4종 콘텐츠를 담습니다. • 🔗 수업 링크 — 젭·패들렛·AI도구 등 외부 링크 (프로그램당 여러 개) • 🖥️ 웹앱 — 기존에 배포된 웹앱 링크 • ▶ 영상 — 유튜브 임베드 (상세 화면에서 바로 재생) • 📎 첨부자료 — PPT/PDF/한글/zip/이미지 (100MB 이하, 관리자의 Supabase 비공개 버킷에만 저장) • 📌 학생 활동 보드 — 패들렛처럼 학생이 계정 없이 6자리 참여 코드로 들어와 글+활동지(한글·PDF·오피스·이미지, 20MB)를 올리는 보드. 교사는 결과물을 열람·다운로드(수합)하고, 마감하면 학생 접근이 즉시 차단되며 결과물은 계속 보관됨 만든 사람(관리자)이 언제든 즉시 회수할 수 있습니다. 다운로드 링크는 10분 유효 서명 URL이라 회수 후 기존 링크도 곧 만료됩니다.README 전문 보기 ↗
같은 학교 선생님들을 위한 수업프로그램 모음 사이트.
프레임워크 없는 Node HTTP 서버 + 바닐라 JS SPA + Supabase Postgres/Storage + Vercel, 의존성은 pg 하나.
프로그램 하나에 4종 콘텐츠를 담습니다.
| 방향 | 정책 |
|---|---|
| 관리자 → 교사 (수업자료) | 기본 보기 전용 — 다운로드 버튼 없음, 사이트 안 뷰어(PDF·이미지)로만 열람. 뷰어에 교사 이름 워터마크 + 우클릭 차단 + 60초 서명 URL. 파일별로 다운로드 허용 토글 가능. 관리자는 항상 다운로드 가능 |
| 학생 → 교사 (활동 결과물) | 교사 다운로드 허용 (수합 목적) — 원본 파일명 유지 |
만든 사람(관리자)이 언제든 즉시 회수할 수 있습니다.
| 스위치 | 위치 | 효과 |
|---|---|---|
| ① 프로그램별 비공개 | 프로그램 관리 → 공개 토글 | 교사 목록·상세·열람이 즉시 차단 |
| ② 계정 정지 (강퇴) | 교사 계정 → 정지 | 세션 즉시 삭제 — 다음 클릭부터 로그아웃, 재로그인 불가 |
| ③ 사이트 킬스위치 | 사이트 설정 → 잠금 토글 | 관리자 제외 전원 차단 (학생 보드 참여 포함) + 안내 문구 표시 |
| ④ 첨부 원본 소멸 | 파일/프로그램/게시물 삭제 | Supabase 버킷 객체까지 삭제 — 원본이 사라짐 |
| ⑤ 보드 마감 | 보드 화면 → 마감 | 학생 제출·열람 즉시 차단 (결과물은 교사·관리자가 계속 보관·열람) |
다운로드 링크는 10분 유효 서명 URL이라 회수 후 기존 링크도 곧 만료됩니다.
admin (관리자): 프로그램/계정/사이트 관리teacher (교사): 공개된 프로그램 열람·다운로드만 가능| 변수 | 필수 | 설명 |
|---|---|---|
DATABASE_URL | ✅ | Supabase → Connect → Transaction pooler URI (포트 6543) |
ADMIN_PASSWORD | 권장 | 최초 admin 비밀번호 (미설정 시 ChangeMe123!) |
SUPABASE_URL | 첨부 사용 시 | Settings → API의 프로젝트 URL |
SUPABASE_SERVICE_KEY | 첨부 사용 시 | service_role 키 |
SUPABASE_BUCKET | 선택 | 기본 files (비공개 버킷, 첫 업로드 시 자동 생성) |
# 로컬
npm install
DATABASE_URL='postgres://...' node --no-warnings server.js
Vercel 배포: 레포 연결 → 위 환경변수 입력 → 배포. 빌드 스텝 없음 (vercel.json이 라우팅 처리).
첫 로그인: superadmin / ADMIN_PASSWORD 값 (미설정 시 ChangeMe123!) → 즉시 비밀번호 변경 요구 → 교사 계정 생성.
server.js # 로컬/일반 서버 진입점 (정적 파일 + /api)
api/index.js # Vercel 서버리스 진입점
lib/db.js # 스키마·시드·설정 (Postgres)
lib/api.js # API ~18 라우트 + 킬스위치 게이트
lib/auth.js # 세션 (매 요청 active 확인 → 즉시 강퇴)
lib/password.js # scrypt 해시
lib/storage.js # Supabase Storage 서명 업로드/다운로드
public/ # SPA (index.html + app.js + style.css)
파일 업로드는 Vercel 4.5MB 한도를 우회하는 서명 업로드 3단계를 사용합니다: 서버가 서명 URL 발급 → 브라우저가 Supabase에 직접 PUT → 서버에 완료 확인.