ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
중학교 1학년 과학 수업용 웹앱. 학생들이 학교 곳곳에서 발견한 생물(식물·동물·곤충 등)을 지도에 기록하고, 교사가 부적절한 게시물을 승인/삭제할 수 있습니다. Leaflet(OpenStreetMap) + Supabase(무료) + Vercel(무료)로 동작하며 별도 서버나 빌드 과정이 필요 없습니다.README 전문 보기 ↗
중학교 1학년 과학 수업용 웹앱. 학생들이 학교 곳곳에서 발견한 생물(식물·동물·곤충 등)을 지도에 기록하고, 교사가 부적절한 게시물을 승인/삭제할 수 있습니다. Leaflet(OpenStreetMap) + Supabase(무료) + Vercel(무료)로 동작하며 별도 서버나 빌드 과정이 필요 없습니다.
index.html 학생용 지도 페이지
admin.html 교사용 관리자 페이지
css/style.css 스타일
js/config.js ★ 설정 파일 (여기만 고치면 됨)
js/utils.js 공통 함수 (이미지 압축, HTML 이스케이프 등)
js/supabaseClient.js
js/map.js 지도 페이지 로직
js/myrecords.js "내 기록"(승인 상태/수정 여부 확인) 로직
js/admin.js 관리자 페이지 로직
js/backup.js 백업(CSV+사진 zip) 로직
sql/schema.sql Supabase에 실행할 SQL (테이블, 권한, 저장소)
sql/schema.sql 파일 내용을 전체 복사해서 붙여넣고 Run 실행.
observations 테이블, 접근 권한(RLS), plant-photos 저장소 버킷이 한 번에 만들어집니다.insert into public.teachers (user_id, grade)
values ('여기에_UID_붙여넣기', '1') -- 담당 학년: '1' / '2' / '3' / 전체 관리자는 'ALL'
on conflict (user_id) do update set grade = excluded.grade;
Project URLanon public / Publishable 키 (공개되어도 안전한 키입니다. 실제 보안은 2번에서 설정한 권한이 담당합니다.)js/config.js 파일을 열어 아래 값을 채우세요.
SUPABASE_URL, SUPABASE_ANON_KEY : 1단계 5번에서 복사한 값SCHOOL_LAT, SCHOOL_LNG : 우리 학교 좌표
GRADES : 학년 목록 (기본값 1~3학년)CLASSES : 반 이름과 핀 색상 (기본값 1~9반, 모든 학년이 공동으로 사용, 필요하면 자유롭게 수정)PHOTO_MAX_WIDTH, PHOTO_QUALITY : 사진 압축 설정 (기본 1200px / 75% 품질)브라우저 보안 정책상 index.html을 파일로 그냥 열면 일부 기능이 막힐 수 있어, 간단한 로컬 서버로 띄우는 것을 권장합니다.
npx serve .
실행 후 안내되는 주소(예: http://localhost:3000)로 접속해서 확인하세요.
이 프로젝트는 순수 정적 사이트(HTML/CSS/JS)라 빌드 설정이 필요 없습니다.
방법 A - Vercel CLI (가장 간단)
npm install -g vercel
vercel
폴더 안에서 위 명령을 실행하고 안내에 따르면 됩니다. 이후 배포를 업데이트할 때는 vercel --prod 를 다시 실행하세요.
방법 B - GitHub 연동
이 코드는 학교마다 완전히 독립적으로 복사해서 쓰도록 만들어졌습니다 (데이터베이스도 서로 안 섞임). 다른 학교에서 쓰고 싶다면:
js/config.js의 SUPABASE_URL / SUPABASE_ANON_KEY / SCHOOL_LAT / SCHOOL_LNG 등을 그 학교 값으로 전부 교체합니다.
config.js 맨 위에 경고 주석을 남겨뒀습니다.이렇게 하면 학교별로 지도 위치, 반/학년 구성, 교사 계정, 데이터가 전부 독립적으로 운영됩니다.
Failed to fetch로 실패하며, 대시보드에서 Restore project를 누르면 데이터는 그대로 복구됩니다(정지 후 약 90일 이내).
.github/workflows/keepalive.yml이 매일 한 번 config.js의 Supabase 주소로 조회 요청을 보냅니다. 요청이 실패하면 GitHub가 저장소 소유자에게 실패 알림 메일을 보내므로 서버 문제를 빨리 알 수 있습니다.anon key는 공개되는 것이 정상이며, 실제 권한 제어는 sql/schema.sql의 Row Level Security 정책이 담당합니다.
pending 상태로만 등록 가능, approved 상태만 조회 가능teachers 테이블에 등록된 본인 담당 학년의 기록만 조회/승인/삭제 가능 (다른 학년 데이터는 서버 단에서 원천 차단됨)