◎ 현재 활성 문항 2 / 5
내가 잘한다고 생각하는 것 3가지를 적어보세요.
18
제출 완료
7
작성중
3
미입장
수업 입장
클래스 코드로 수업에 참여하세요
수업 진행중
수업 입장
선생님께 받은 6자리 수업 코드를 입력하세요
-
수업 코드를 모르시나요? 482-917 데모로 체험하기 →
5단원: 나의 진로 탐색 — 활동지 A
📚 진로와 직업 👩‍🏫 이수진 선생님 ⏱ 수업 진행중 18:42 클래스 코드: 482-917
진행 현황
1/5
완료 / 전체 문항
수업 정보
담임교사이수진
수업일오늘
단원5단원
참여 학생26명
Supabase Realtime으로 선생님의 문항 활성화 신호를 즉시 수신합니다.
교사 실시간 대시보드
3학년 2반 · 진로와 직업 5단원 · 수업 진행중 — 학생 카드를 클릭하면 답변을 확인할 수 있습니다
전체 학생
28
26명 입장 완료
문항 제출 완료
18
전체의 64%
현재 작성중
7
활성 문항: Q2
현재 활성 문항
Q2
내가 잘한다고 생각하는 것
학생 현황 (28명)
18 7 3
최신 제출 응답
학생Q2 응답 요약상태칠판
문항 제어
Supabase Realtime broadcast 전송 중
전자칠판 수업 화면
대형 화면 최적화 (1920px+) · Fullscreen API 포커스 모드 · Supabase Realtime 실시간 집계
3학년 2반 · 진로와 직업 5단원 — 나의 진로 탐색
인터랙티브 워크북 수업 진행중
26명 참여중
◎ 현재 활성 문항 2/5
내가 잘한다고 생각하는 것 3가지를 적어보세요.
18
제출 완료
7
작성중
3
미입장
전체 참여율89.3%
공개된 학생 응답
강서연 (1번)그림 그리기, 친구들 챙기기, 요리 만들기
김도윤 (2번)수학 풀기, 축구, 게임 전략 세우기
류승우 (5번)발표 잘하기, 토론, 리더십 발휘
박지원 (6번)독서, 글쓰기, 악기 연주
구현 포인트: CSS container query + 1920px breakpoint 전자칠판 전용 레이아웃 · Fullscreen API 포커스 모드 · Supabase Realtime broadcast로 교사→학생/전자칠판 제어 신호 동시 전파
학교 계정 관리
관리자 전용 · 학교 단위 계정 발급 및 관리
등록 학교 수
42
이번달 +3 신규
전체 교사 계정
186
활성 172
전체 학생 계정
3,840
현재 학기 활성
승인 대기
2
학교 신규 가입
교사 계정 발급
이름소속 학교학급상태
이수진강남중학교3학년 2반활성
박성훈강남중학교2학년 1반활성
김혜원해운대중학교1학년 4반초대중
학생 일괄 등록 CSV 업로드
📄
CSV 파일을 여기에 드롭하세요
이름, 출석번호 컬럼 포함 · 최대 200명
✓ 계정 생성 즉시 학교 코드 기반 이메일 자동 할당
✓ 임시 비밀번호 목록 PDF 자동 생성
학교 목록
학교명지역교사학생플랜상태등록일
서울 강남중학교서울 강남12명420명스탠다드활성2024.03.01
부산 해운대중학교부산 해운대8명310명프리미엄활성2024.03.05
인천 연수중학교인천 연수6명215명스탠다드활성2024.03.10
대구 수성중학교대구 수성9명350명베이직심사중2024.09.01
광주 첨단중학교광주 첨단7명280명스탠다드활성2024.03.15
역할 기반 접근 제어 (RBAC)
Supabase Auth JWT custom claims + PostgreSQL RLS 이중 레이어 보안 구조
🎓
학생 (Student)
클래스 코드로 수업 입장. 자신의 워크북만 읽고 쓸 수 있습니다.
  • 클래스 코드로 수업 입장
  • 본인 워크북 작성 및 자동저장
  • 본인 답변 최종 제출
  • 교사 제어 신호 수신 (Realtime)
👩‍🏫
교사 (Teacher)
담당 학급의 수업 진행 및 학생 응답 실시간 모니터링.
  • 수업 세션 생성 및 문항 제어
  • 담당 학생 전체 응답 조회
  • 문항 활성화·비활성화 broadcast
  • 전자칠판 포커스 모드 제어
  • 학생 답변 공개 설정
🏫
관리자 (Admin)
학교 단위 계정 발급 및 플랫폼 전체 관리.
  • 학교 계정 발급 및 삭제
  • 교사·학생 계정 일괄 관리
  • 전체 사용 통계 조회
  • 플랜 관리 및 설정 변경
JWT Custom Claims 구조Supabase Auth Hook
-- 로그인 시 JWT에 role + school_id 자동 삽입 CREATE OR REPLACE FUNCTION custom_access_token_hook(event JSONB) RETURNS JSONB LANGUAGE plpgsql AS $$ BEGIN -- teachers → students → admin 순 역할 판별 claims := jsonb_set(claims, '{user_role}', to_jsonb(user_role)); claims := jsonb_set(claims, '{school_id}', to_jsonb(school_id)); RETURN event; END; $$;
RLS 정책 예시PostgreSQL
-- 학생: 본인 응답만 읽기/쓰기 CREATE POLICY "students_own_responses" ON student_responses FOR ALL USING ( student_id IN ( SELECT id FROM students WHERE auth_id = auth.uid() ) ); -- 교사: 담당 세션 학생 응답 읽기 CREATE POLICY "teachers_session_read" ON student_responses FOR SELECT USING ( session_id IN ( SELECT id FROM class_sessions WHERE teacher_id = auth.uid() ) );
레이어드 보안: Next.js middleware (JWT claims 확인 → 역할별 라우트 redirect) + Supabase RLS (DB 레벨 데이터 격리) 이중 적용으로 클라이언트 우회 시도 원천 차단