2026년 9월 6일 일요일

[창체·학급자치] 1일 1성찰 배움 일기 - 카카오톡 알림장 전송 연동 칭찬 다이어리



하교 전 3분, 감사와 배움을 나누는 '1일 1성찰 일기 & 칭찬 다이어리'

💌 초등 창체·자치 및 인성 교육 — 학생들이 매일 하교 전 교실 태블릿이나 스마트폰으로 오늘 배운 핵심 지식 1가지와 친구에게 고마웠던 점을 기록합니다. 작성된 일기는 외부 클라우드 데이터베이스 없이 카카오톡 공유 링크(Web Share API)를 통해 부모님께 직접 전송되어 따뜻한 가정 연계 소통을 완성합니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
하교 전 3문항 성찰 루틴 긴 일기 대신 ① 오늘 배운 배움 한 줄, ② 친구 칭찬 한 줄, ③ 오늘의 감정 이모지 3가지만 터치로 3분 만에 작성합니다. 하교 10분 전 교실 전자칠판에 카운트다운 타이머 띄우고 일괄 작성.
Web Share API 원클릭 전송 복잡한 서버 연동 없이 브라우저 표준 공유 기능(navigator.share)으로 카카오톡, 문자메시지를 바로 호출해 부모님께 전달합니다. "엄마! 오늘 나 이거 배웠어요" 텍스트와 함께 예쁜 카드 형태로 카카오톡 채팅방에 전송.
로컬 스토리지 1년 누적 학생의 일기는 외부 서버에 저장되지 않고 학생 태블릿의 브라우저 로컬 저장소(localStorage)에만 보관됩니다. 학기말에 '나만의 1년 배움 앨범' 인쇄 버튼으로 한 번에 PDF 출력.

2. 핵심 아키텍처 해설

① 브라우저 표준 공유: Web Share API

async function shareDiary(title, text) {
  if (navigator.share) {
    await navigator.share({
      title: title,
      text: text,
      url: window.location.href
    });
  } else {
    // 미지원 브라우저 클립보드 복사 폴백(fallback)
    navigator.clipboard.writeText(text);
    alert("일기 내용이 복사되었습니다. 카카오톡에 붙여넣으세요!");
  }
}

외부 카카오 API 키나 개발자 등록 없이도, 브라우저가 기본 제공하는 navigator.share를 호출하면 스마트폰의 카카오톡 공유 창이 즉시 열립니다.

② 학생 기기 로컬 저장 (localStorage)

function saveDiary(entry) {
  const history = JSON.parse(localStorage.getItem("my_diaries") || "[]");
  history.push(entry);
  localStorage.setItem("my_diaries", JSON.stringify(history));
}

학생의 글이 어떤 중앙 서버로도 날아가지 않으므로 학내망 원칙을 철저히 지키며, 학생 개인 기기에서만 열람할 수 있는 프라이버시 금고가 됩니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 질문 3가지(성찰 항목, 감정 이모지 종류)에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 성찰일기.html로 저장하여 태블릿에 배포합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. Web Share API 연동: '카카오톡/가정으로 보내기' 버튼 클릭 시 navigator.share를 호출하고, 미지원 브라우저에서는 클립보드 복사 폴백(fallback)을 제공한다.
3. 로컬 저장소(localStorage) CRUD: 작성한 일기를 로컬에 저장하고, 하단에 최근 7일간의 성찰 카드 목록을 조회/삭제할 수 있는 UI를 제공한다.
4. 개인정보 보호: 학생 실명 대신 자치 닉네임만 쓰며, 일기 내용은 브라우저 내부 로컬에만 저장되어 외부 통신 0을 보장한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 일기 작성 항목으로 [배운 점], [감사한 일], [내일의 다짐] 3가지를 기본으로 설정할까요?
2. 감정 선택 아이콘(기쁨, 뿌듯, 평온, 아쉬움, 피곤) 5종을 이모지로 제공할까요?
3. 모바일 화면에서 한 손 터치에 편하도록 입력 영역을 큼직하게 배치할까요?

🎯 에디터 한줄평

"하교 전 3분, 오늘 하루를 스스로 돌아보고 친구의 이름을 부르며 고마움을 전하는 아이들의 마음은 어떤 평가 점수보다 값집니다. 카카오톡으로 전송된 짧은 세 줄 일기를 본 학부모님은 '오늘 학교에서 뭐 배웠니?'라고 묻는 대신 '오늘 ○○이 도와줬구나, 정말 멋지다'라는 따뜻한 대화로 저녁 식탁을 채우게 됩니다."

📚 기술·교육 참고 링크

  • MDN Web Share API 명세 : 브라우저 네이티브 공유 인터페이스
  • 교육과정 연계: 초등 3~6학년 창의적 체험활동(자율·인성 교육), 국어(쓰기·성찰 표현)

[교무연구·자율장학] 수업 나눔 연구록 - 마크다운과 블록 카드로 엮는 교원 자율장학 아카이빙



선배 교사의 노하우가 1초 만에 검색되는 '교원 자율장학 및 수업 나눔 연구록'

📚 교무연구 및 교원 전문적학습공동체(전학공) — 매주 쏟아지는 동학년 수업 나눔, 교수학습 팁, 교과별 지도 노하우가 메신저나 종이 일지에 파편화되지 않도록 노션 형태의 블록형 태그 검색 아카이빙(archiving) 웹앱으로 구축합니다. 마크다운(Markdown) 원클릭 내보내기로 학기말 연구 보고서 작성까지 단숨에 연결되는 스마트 연구 행정 도구입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
태그 기반 다차원 필터링 학년(1~6학년), 교과(국·수·사·과·예체능), 수업 주제(토의, 놀이, 에듀테크)별로 태그 버튼을 눌러 원하는 연구록을 1초 만에 추출합니다. '#5학년 #수학 #분수나눗셈' 다중 선택으로 작년 동학년 선배의 팁 바로 확인.
마크다운(Markdown) 자동 변환 블록 카드로 작성된 연구록을 버튼 클릭 한 번으로 마크다운 텍스트나 HWP 호환 표 서식으로 내보냅니다. '전학공 일지 일괄 내보내기'로 학기말 결재 공문용 연구 보고서 조판 단축.
교내 서버 완결성 (외부 노출 0) 외부 상용 노션 워크스페이스에 교내 비공개 수업 자료를 올리지 않고, 단일 HTML 파일을 교내 공유 드라이브나 메신저에 올려 공유합니다. 선생님 컴퓨터에서 오프라인으로 100% 작동하는 안전한 내부 지식창고.

2. 핵심 아키텍처 해설

① 연구록 마스터 데이터: NOTES 상수

const NOTES = [
  {
    id: 1,
    grade: "5학년",
    subject: "수학",
    title: "분수의 나눗셈 3D 시각화 교구 활용팁",
    author: "교사 연구자 A",
    tags: ["수학", "시각화", "에듀테크"],
    content: "원형 조각보다 수직선 모델을 썼을 때 역수의 의미를 훨씬 직관적으로 이해함...",
    date: "2026.04.12"
  }
];

연구록 카드는 JSON 객체 배열 상수로 관리되어 외부 통신 없이 즉시 렌더링되며, 신규 작성된 내용은 브라우저 로컬 저장소에 병합 누적됩니다.

② 다중 태그 실시간 검색 필터

function filterNotes(keyword, activeTags) {
  return NOTES.filter(n => {
    const matchKey = n.title.includes(keyword) || n.content.includes(keyword);
    const matchTag = activeTags.length === 0 || activeTags.every(t => n.tags.includes(t));
    return matchKey && matchTag;
  });
}

검색창 키워드와 활성화된 태그 배열을 every() 조건으로 교집합 필터링하여 수백 개의 연구록 속에서도 필요한 수업 팁을 즉시 찾아냅니다.

③ 마크다운 복사 및 다운로드

선택된 연구록들을 `# 제목`, `- 태그`, `내용` 형식의 마크다운 텍스트로 즉시 변환하여 클립보드에 복사하거나 `.md` 파일로 다운로드합니다. 나이스나 학교 자체 연구 포털에 붙여넣기 가장 좋은 범용 형식입니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 연구회 성격(교과별/학년별)과 기본 태그 세트에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 수업연구록.html로 저장하여 동학년에 공유합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const NOTES = [...] 상수에 4~5개의 실전 수업 팁 샘플 데이터를 내장하여 브라우저 실행 즉시 검색과 뷰어가 동작하도록 한다.
3. 태그 필터링 & 검색: 상단 검색창 + 학년/교과/주제별 해시태그 버튼 클릭을 지원하며, 검색 결과 카드 개수를 실시간으로 표시한다.
4. 마크다운 내보내기: '선택 연구록 복사' 버튼 클릭 시 표준 마크다운(Markdown) 포맷으로 변환해 navigator.clipboard에 복사한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 연구회의 주된 분류 기준을 [학년별]과 [교과별] 중 어느 쪽에 더 무게를 둘까요?
2. 기본으로 등록해 둘 추천 태그 목록(예: #수업나눔, #학급경영, #평가도구, #에듀테크) 6가지를 정해둘까요?
3. 화면 디자인 테마를 노션 스타일의 심플한 화이트/그레이 모노톤으로 구현할까요?

🎯 에디터 한줄평

"교사의 진정한 수업 성장은 동료 교사의 작은 시행착오 메모 한 줄에서 시작됩니다. 종이 연구 바인더는 캐비닛에 갇히지만, 태그로 살아 있는 수업 나눔 웹앱은 학교의 교육과정이 다음 해로 계승되는 가장 튼튼한 다리가 됩니다. 복잡한 클라우드 결제 없이 단일 파일로 엮어낸 이 아카이빙은 교사 공동체의 가장 스마트한 자산 관리법입니다."

📚 기술·교육 참고 링크

  • 교육부 전문적 학습공동체 운영 길라잡이 : 교원 자율장학 및 수업 나눔 가이드라인
  • 마크다운 표준 안내 가이드 : 마크다운 문법 기초 및 교육 서식 활용
  • 교육과정 연계: 교원 자율장학, 전문적학습공동체, 수업 나눔 연구 활동

[과학·실과] 우리 학교 생태 위키 - 교내 식물 관찰 카드를 모아 만드는 전교생 협업 도감



전교생이 함께 쌓아가는 우리 학교 식물 생태 관찰 위키(wiki)

🌿 초등 5~6학년 실과 '좋은 친구, 좋은 생활' 및 과학 생물 단원 — 학생들이 교내 화단의 식물 이름과 개화 상태를 관찰하고, 관찰 사진 카드를 파일 안에 심어두면 모둠별 필터 및 검색 기능으로 학교 전체의 식물 도감이 자동으로 쌓입니다. 외부 데이터베이스 없이, 학생들이 직접 꾸며가는 우리 학교만의 디지털 생태 백과사전입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
계절별 개화 상태 카드 식물 이름, 관찰 일자, 개화 단계(봉오리/개화/수과), 모둠명 카드가 격자로 배치되어 학교 화단의 생태 변화를 1년 동안 지도처럼 보여줍니다. 캔바로 촬영한 식물 사진을 EMBED_PLANTS 상수에 Base64로 심기.
모둠별 관찰 필터 어떤 모둠이 언제 어떤 식물을 관찰했는지 필터 버튼 하나로 확인하며 협업 관찰 기록을 검증합니다. 화면 상단 해시태그(#봄 #수국) 클릭 시 해당 카드만 즉시 필터링.
학년 간 인수인계 도감 6학년이 졸업해도 화단 관찰 기록이 HTML 파일 안에 남아 다음 학년 선배들의 관찰 연구가 이어집니다. '우리 학교 식물 대표 종 12종'을 하단에 정리하여 사회과 및 실과 수업에서 상시 활용.

2. 핵심 아키텍처 해설

① 식물 관찰 데이터: PLANTS 상수

const PLANTS = [
  {
    id: 1,
    name: "백목향",
    season: "봄",
    stage: "개화",
    location: "교실 앞 화단 3구역",
    team: "4-1 발견 모둠",
    desc: "흰 꽃이 피어나서 향기가 진하다. 벌들이 왕왕 찾아온다.",
    imgData: "data:image/svg+xml;base64,..."
  }
];

식물의 관찰 단계(봉오리, 개화, 수과)와 모둠명은 학생 실명 대신 모둠 코드로 관리되어 외부 개인정보 노출이 일절 없습니다.

② 식물 썸네일 라이트박스(Lightbox) 뷰어

.thumbnail {
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 8px;
}
.lightbox {
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.8);
}

관찰 카드를 클릭하면 화면 전체에 크게 확대되어 잎의 표면 질감이나 꽃잎 색채를 자세히 살펴볼 수 있습니다. 모바일에서는 핀치 줌(두 손가락 확대)이 적용됩니다.

③ 워드 클라우드 활용

하단에 우리 학교 식물 이름들로 구성된 워드 클라우드(단어 구름)를 시각화하여 어떤 식물이 가장 자주 관찰되었는지 통계적 대중성을 한눈에 보여줍니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 계절 단위(봄/여름/가을/겨울) 및 식물 종에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 생태관찰위키.html로 저장하여 모둠 노트북에 배포합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const PLANTS = [...] 상수에 8~10개 교내 식물 관찰 기록(이름, 계절, 위치, 모둠, 설명, 이미지 Base64)을 내장하여 즉시 렌더링한다.
3. 모둠·계절 필터: 상단에 [전체], [봄], [여름], [가을] 및 [4-1팀], [4-2팀] 해시태그 필터를 적용하고 선택 시 해당 카드만 부드럽게 나타나도록 한다.
4. 개인정보 보호: 관찰자는 학생 실명 대신 모둠명과 자치 닉네임만 표기하며, 데이터는 파일 내 상수에만 존재한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 우리 학교 화단에 있는 대표 식물 3~4종은 무엇인가요? (예: 개나리, 진달래, 목련, 대추야자)
2. 계절 필터는 4계절 기준으로 구분할까요, 월 단위(3월~11월)로 구분할까요?
3. 관찰 카드 배경색을 파스텔 그린과 브라운 중 어떤 색으로 갈까요?

🎯 에디터 한줄평

"생명의 발달 과정을 교과서 그림으로 배우는 것과 우리 학교 화단의 목련 봉오리가 하루 하루 변해가는 것을 직접 기록하는 것, 그 차이는 학생의 생태 감수성에서 하늘과 땅만큼 차이를 만듭니다. 클릭 한 번으로 전교생의 관찰 결과가 모둠 도감으로 모이는 이 웹앱은, 교실 밖 생태 르포르타주를 가장 자연스럽게 가르쳐주는 진짜 시민 과학 첫걸음입니다."

📚 기술·교육 참고 링크

  • 국립수목원 식물 도감 : 국내 교내·외 화단용 관찰 식물 목록 및 병충해 안내
  • 교육과정 연계: 초등 5~6학년 과학(생물과 환경, 생물의 다양성), 실과(식물 재배), 미술(자연 관찰 그리기)

[도덕·창체] 우리 반 익명 건의함 - 안전한 고민 나눔 및 학급 회의 안건 모아보기



말하기 어려운 고민을 안전하게 건네는 '익명 건의함 & 담임 전용 소통 보드'

🤝 초등 도덕·학급자치 및 생활지도 — 학생들이 학교생활 중 겪는 어려움과 학급 건의사항을 실명 노출 없이 작성하면, 브라우저 세션 메모리에 안전하게 임시 적재되어 담임교사가 비밀번호 잠금으로만 열람할 수 있습니다. 대면하기 어려운 고민을 조기에 발견하여 사회 정서 지원을 연계하는 따뜻한 학급 소통 수단입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
두 가지 모드 분리 (학생/교사) 학생들은 '익명 제출 모드'에서 작성하고, 교사는 비밀번호를 입력해야만 열리는 '담임 확인 모드'에서 내용을 볼 수 있습니다. 화면 좌측 상단 자물쇠 아이콘을 클릭하고 담임 비밀번호 입력.
키워드 분류 & 주간 안건 추천 제출된 건의 내용이 친구 관계(사이), 규칙(순서), 안전, 시설, 기타 5종으로 자동 분류되어 주간 학급 회의 아젠다로 바로 활용됩니다. 월요일 아침 자치 시간에 '우리 반 주간 토픽 3선'을 화면에 띄워 토의.
완전 로컬 프라이버시 (서버 노출 0) 아이들의 고민이 어떤 외부 클라우드 서버에도 전송되지 않고, 담임교사 컴퓨터의 브라우저 세션에서만 머무는 안전한 로컬 구조입니다. 주간 조회 후 '내용 모두 지우기' 버튼으로 학생 기록 완전 파기.

2. 핵심 아키텍처 해설

① 건의사항 카테고리 자동 분류

const CATEGORIES = ["친구 관계", "규칙과 순서", "안전", "시설", "기타"];

function categorize(text) {
  const keywords = {
    "친구 관계": ["친구", "같이", "모임", "싸움", "놀지"],
    "규칙과 순서": ["선의의", "뛰기", "순서", "양보", "조용히"],
    "안전": ["위험", "부딪힘", "넘어짐", "불"],
    "시설": ["문", "조명", "리클라이너", "화장실", "미닫이"]
  };
  for (const cat in keywords) {
    if (keywords[cat].some(k => text.includes(k))) return cat;
  }
  return "기타";
}

학생이 작성한 텍스트 안의 키워드를 스캔하여 자동으로 안건 유형을 분류합니다. 교사는 카테고리별 빈도수를 한눈에 파악할 수 있습니다.

② 교사 전용 비밀번호 잠금

const TEACHER_PIN = "2026"; // 반드시 개별 설정해서 변경하세요
function unlockBoard() {
  const input = prompt("교사 확인 코드를 입력하세요");
  if (input === TEACHER_PIN) {
    document.getElementById("board").classList.add("open");
  }
}

학생들이 실수로 담임 화면을 열어볼 수 없도록 별도 비밀번호 잠금 장치를 걸어둡니다. 학생의 익명성과 교사의 확인 권한을 모두 보장합니다.

③ 세션 메모리 완전 파기

모둠 회의나 조회 시간이 끝나면 교사가 '모두 지우기' 버튼을 눌러 브라우저의 임시 기록을 완전히 소멸시킵니다. 학생들의 솔직한 마음이 수집 대상이 아닌, 소통의 다리로만 작동하도록 설계되었습니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 학생 학년과 카테고리 분류에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 익명건의함.html로 저장하여 교실 태블릿에 배포합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 학생/교사 모드 분리: 기본 화면은 학생용 익명 제출 폼(학생 개인 인식 0), 우측 상단 자물쇠 버튼에 교사 비밀번호 입력 시에만 관리용 대시보드가 열리는 구조로 설계한다.
3. 세션 메모리 한정 저장: 제출된 건의 내용은 브라우저 세션 메모리(또는 sessionStorage)에만 저장하고, 페이지 새로고침 시 기본 소멸한다.
4. 카테고리 자동 분류: 학생이 쓴 내용의 키워드를 분석하여 5가지 카테고리(친구 관계, 규칙과 순서, 안전, 시설, 기타)로 자동 분류한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 학생들이 선택할 수 있는 안건 카테고리 5종을 정해둘까요? (친구 관계, 규칙과 순서, 안전, 시설, 기타 등)
2. 관리자용 열람 코드는 몇 자리 숫자로 설정할까요?
3. 카테고리별로 친근한 이모지 아이콘(예: 우정 💚, 규칙 ⏰, 안전 🚦)을 함께 표기할까요?

🎯 에디터 한줄평

"말로 꺼내기 어려운 마음의 소리는 칠판에 남지 않고, 일기장 속에만 숨곤 합니다. 키워드 필터링이 탑재된 이 익명 건의함은 위기의 학생을 조기에 발견해주는 정서 안전망이자, 학급 규칙을 아이들이 스스로 입안하게 하는 민주적 토론 재료입니다. 학생들의 작은 목소리를 그대로 보고 싶지만 얼굴은 감춰주는 이 균형, 그것이 가장 이상적인 초등 교실 생활지도 입니다."

📚 기술·교육 참고 링크

  • 교육부 학교폭력 예방 및 생명존중 인권 교육 가이드라인
  • 교육과정 연계: 초등 3~6학년 도덕(협력과 소통), 창체(자율·자치 활동), 건강 및 안전 교육

[도서관·행정] 교내 도서관 희망도서 신청 - 중복 ISBN 검증과 원클릭 구매목록 뽑기



중복 없이 가장 필요한 책만 사서 담는 '도서관 희망도서 신청 & 중복 검증 시스템'

📖 교내 도서관 행정 및 학생 독서 교육 — 교직원과 학생들이 희망하는 책 제목과 ISBN을 입력하면, 파일 안에 심어둔 기존 보유 도서 목록(EMBED_BOOKS)과 실시간 대조하여 중복 신청을 즉시 차단합니다. 사서교사는 분기별 구매 목록을 원클릭 CSV로 추출하여 교무행정의 연간 도서 구매 예산 낭비를 원천 봉쇄합니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
ISBN 중복 즉시 검증 책 표지 뒷면의 ISBN 코드를 입력하는 순간, 보유 목록 상수와 대조하여 "이미 보유 중" 빨간 경고를 즉시 띄웁니다. 학생이 신청한 도서와 사서의 신규 구입 희망 도서가 겹치지 않도록 서버 전송 0으로 검증.
분기별 구매 목록 자동 추출 승인된 희망 도서를 분기별로 묶어 콤마 분리(CSV) 서식으로 내보내는 기능을 제공합니다. '1분기 구매 예정 15권' 목록을 클립보드 복사하거나 파일로 다운로드하여 행정 즉시 전달.
보유 도서 데이터 파일 내장 외부 데이터베이스 연동 없이, 교내 보유 도서 정보를 상수 내부에 수 백~수천 건 내장해도 브라우저 즉시 검색이 가능합니다. 초기 세팅 시 학교 보유 도서 명단이 담긴 CSV를 직접 파일 안 상수로 심는 방식.

2. 핵심 아키텍처 해설

① 보유 도서 및 신청 목록 상수

const BOOKS = [
  { isbn: "9788954623507", title: "코알라 일기", author: "정유미", year: 2018 },
  { isbn: "9788954612345", title: "가입인사", author: "기타" }
];
const WISHES = []; // 새로 신청된 희망 도서 목록

교내 보유 도서 목록을 ISBN 기준으로 파일 상단에 내장하고, 학생들의 신규 신청 요청을 배열에 담아 실시간 비교 분석합니다.

② 중복 도서 실시간 감지 로직

function checkDuplicate(isbn) {
  const exists = BOOKS.some(b => b.isbn === isbn);
  if (exists) {
    const found = BOOKS.find(b => b.isbn === isbn);
    return { dup: true, msg: `${found.title} (${found.author})은 이미 보유 중입니다.` };
  }
  return { dup: false };
}

입력된 ISBN과 내장 보유 데이터를 some() 함수로 빠르게 대조하여 중복 여부를 즉시 반환합니다.

③ 구매 확정 목록 CSV 출력

function exportCSV(approvedList) {
  const csv = "제목,저자,ISBN,신청자\n" +
    approvedList.map(b => `${b.title},${b.author},${b.isbn}`).join("\n");
  const blob = new Blob(["\ufeff" + csv], { type: "text/csv;charset=utf-8;" });
  const link = document.createElement("a");
  link.href = URL.createObjectURL(blob);
  link.download = "희망도서_구매목록.csv";
  link.click();
}

UTF-8 BOM 헤더를 붙여 엑셀에서 한글이 깨지지 않도록 안전한 CSV를 생성합니다. 학생 신청자 정보는 실명 대신 학년·반·번호와 닉네임으로 표기됩니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 교내 도서관 보유 도서 수와 학년별 신청 단위에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 희망도서신청.html로 저장하여 도서관 홈페이지에 배포합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const BOOKS = [...] 상수에 교내 보유 도서 10권 이상의 예시 데이터(ISBN, 제목, 저자)를 내장하여 즉시 검증 기능이 작동하도록 한다.
3. ISBN 중복 검사: 사용자가 입력한 13자리 ISBN이 기존 보유 목록과 겹치면 즉시 붉은 경고창으로 차단하고, 미보유 도서만 대기 목록에 추가한다.
4. CSV 구매목록 원클릭 내보내기: BOM 헤더를 포함한 UTF-8 CSV로 변환하여 엑셀에서도 한글이 안 깨지도록 설계한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 신청자 표기는 학년·반·번호와 닉네임 기준으로 할까요? (실명 제외 권장)
2. 신청 가능한 도서 갯수에 분기별 제한(예: 1인 2권)을 둘까요?
3. 검증 화면 디자인 테마를 도서관 느낌의 페이퍼 크림 톤으로 갈까요?

🎯 에디터 한줄평

"중복으로 사진 찍힌 책이 몇 권이겠어? 싶었지만, 1년 도서 구매 예산 속 중복 구입 책이 몇십 권씩 쌓였을 때 사서교사의 안타까움은 눈물로 바뀝니다. ISBN 13자리 숫자만 입력하면 서버 통신 없이도 즉시 '보유 중'과 '신규 희망'을 가려주는 이 도구는 학교 도서관 행정의 낭비를 단기간에 끝내주는 훌륭한 스마트 워크입니다."

📚 기술·교육 참고 링크

  • 국립중앙도서관 및 교육과정 연계 : 국내 도서관 자료 협력 도우미 정보 참고
  • 교육과정 연계: 초등 3~6학년 독서 및 도서 이용 교육, 교내 도서관 활용 교육, 초등 실과 정보 처리 기초

[실과·보건·체육] 건강 지킴이 트래커 - 급식·운동 데이터로 5대 영양소 밸런스 레이더 차트



내 하루 밥상을 데이터로 그리는 '건강 지킴이 일일 영양 & 신체활동 트래커'

💪 초등 5~6학년 실과 '균형 잡힌 식생활' 및 체육 '건강 증진' 단원 — 학생들이 오늘 급식 메뉴와 방과 후 운동량을 터치로 입력하면, 5대 영양소(탄수화물·단백질·지방·비타민·무기질) 섭취 밸런스와 소모 칼로리가 레이더 차트로 시각화되고 자기 몸에 맞는 건강 피드백 카드가 나옵니다. 교과서 속 영양 지식이 자기 하루 데이터와 직접 만나는 자기주도 건강 관리 앱입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
급식 메뉴 → 영양소 자동 매핑 오늘 급식 메뉴(현미밥, 콩국, 돈가스, 배추김치)를 터치하면 5대 영양소 비율이 자동으로 계산됩니다. 영양사 선생님과 협업한 급식 데이터를 상수에 심어두는 방식입니다. '오늘 급식 뭐 먹었어?' 버튼 클릭 → 급식 식단이 영양소 원뿔(Radar) 그래프로 변신.
운동량 → 소모 칼로리 계산 줄넘기기(10분당 약 100kcal), 축구(30분당 약 250kcal) 등 활동 목록을 터치하면 오늘 나의 총 소모 에너지가 즉시 계산됩니다. 오늘의 섭취 칼로리와 소모 칼로리를 저울(비율) 그래프로 비교.
건강 피드백 카드 AI가 아닌 정해진 규칙 기반의 건강 조언 엔진이 '단백질이 조금 부족해요! 저녁에 두부나 계란을 먹어볼까요?'처럼 친절하게 알려줍니다. 일주일치 데이터를 모으면 '나만의 건강 리포트' 카드가 나타납니다.

2. 핵심 아키텍처 해설

① 급식 메뉴 영양 DB: MENU_DB 상수

const MENU_DB = {
  "현미밥": { carb: 60, protein: 5, fat: 1, vitamin: 2, mineral: 3, kcal: 270 },
  "돈까스": { carb: 20, protein: 18, fat: 22, vitamin: 1, mineral: 2, kcal: 420 },
  "콩국": { carb: 10, protein: 8, fat: 4, vitamin: 3, mineral: 4, kcal: 150 }
};

학교 급식 메뉴의 대략적인 영양 성분값을 교사와 영양사가 협업해 심어두면, 학생이 메뉴를 터치하는 것만으로 5대 영양소 지표가 합산됩니다.

② 레이더 차트(Radar Chart) 캔버스 그리기

function drawRadar(ctx, values) {
  const axes = Object.keys(values);
  const center = { x: 150, y: 150 };
  const step = (2 * Math.PI) / axes.length;
  ctx.beginPath();
  for (let i = 0; i <= axes.length; i++) {
    const angle = i * step - Math.PI / 2;
    const r = (values[axes[i % axes.length]] / 100) * 120;
    const x = center.x + r * Math.cos(angle);
    const y = center.y + r * Math.sin(angle);
    i === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);
  }
  ctx.closePath();
  ctx.stroke();
}

외부 차트 라이브러리 없이 캔버스 삼각함수만으로 5각형 레이더 차트를 직접 그립니다. 학생의 섭취 비율과 표준 섭취 기준을 비교해 부족한 영양소 꼭짓점이 오목하게 들어가 보입니다.

③ 소모 칼로리 저울 시각화

섭취 칼로리 대비 운동 소모 칼로리의 비율을 저울 양쪽 접시처럼 그려서, 오늘 하루 에너지 균형(Energy Balance)을 즉각적으로 체감하게 합니다. 수학 비율 단원과 함께 연계하여 계산 검증까지 할 수 있습니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 학생 학년·성별 기준 표준 영양 섭취량에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 건강트래커.html로 저장하여 태블릿에 배포합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const MENU_DB = {...} 상수에 급식 식단 및 일반 음식 15가지의 영양 성분값을 내장하여 브라우저에서 즉시 계산이 되도록 한다.
3. 레이더 차트 캔버스: HTML5 Canvas의 삼각함수로 5각형 레이더 차트를 그리며, 오늘 섭취 비율과 표준 섭취 기준을 겹쳐 표시한다.
4. 개인정보 보호: 학생 실명과 체중 대신 모둠명과 닉네임만 쓰며, 모든 데이터는 브라우저 세션 메모리로만 유지한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 5대 영양소 외에 추가할 항목이 있나요? (수분, 식이섬유, 당류 등)
2. 운동 강도 단위는 분(줄넘기기 10분당 100kcal 등)으로 잡을까요?
3. 피드백 문구를 짧게 알림창처럼 띄울까요, 길게 카드 형태로 쓸까요?

🎯 에디터 한줄평

"'식단의 균형'이라는 글자를 외우기만 했던 과거와 달리, 이제 아이들은 자기 점심의 영양소 꼭짓점이 어디가 꺼져 있는지 눈으로 보고, 부족한 부분을 저녁 메뉴로 채우며 실제 식습관을 고쳐갑니다. 자기 몸의 데이터를 스스로 분석하는 것, 그것이 가장 견고한 건강 문해력(Health Literacy)의 출발점입니다."

📚 기술·교육 참고 링크

  • 식약처 및 교육부 급식 영양 관리 안내 : 학교 급식 영양소 기준 정보 참고
  • 교육과정 연계: 초등 5~6학년 실과(균형 잡힌 식생활), 체육(건강 증진), 수학(비율 및 통계)

[창체·학급자치] 학급 주간 소식지 - 종이 전단지 없이 폰으로 보는 모바일 카드 웹사이트



종이 인쇄비 0원, 알림장 QR로 완성하는 '학급 주간 소식지 & 활동 갤러리'

🗞️ 초등 창체·자치 및 학부모 소통 — 매주 금요일마다 가정통신문으로 인쇄하던 주간학습안내와 학급 소식지를 반응형 모바일 카드 그리드(Card Grid) 웹사이트로 전환합니다. 학생들이 쓴 배움 한 줄과 모둠 활동 사진이 카드 뉴스로 펼쳐지며, 학부모는 알림장 QR코드 한 번으로 스마트폰에서 우리 반의 한 주를 생생하게 확인합니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
스마트폰 최적화 카드 그리드 A4 종이 전단지가 아닌, 인스타그램이나 카드뉴스처럼 한 손으로 위아래 넘겨보는 모바일 웹 화면입니다. [월~금 시간표], [이주의 배움 포토], [준비물 알림]이 세로 카드로 정돈.
학생 배움 한 줄 갤러리 선생님이 다 쓰는 게 아니라, 학생들이 금요일 자치 시간에 작성한 한 줄 소감을 상수로 복사해 넣습니다. 학생 실명 대신 닉네임과 함께 활동 소감이 실시간 롤링.
종이 인쇄 예산 100% 절감 매주 수십 장씩 찍던 복사비와 종이 낭비가 완전히 사라지고, 분실 걱정 없이 학부모에게 안전하게 도달합니다. 완성된 HTML 파일을 학교 홈페이지나 하이클래스에 링크로 탑재.

2. 핵심 아키텍처 해설

① 주간 소식 데이터: WEEKLY_NEWS 상수

const WEEKLY_NEWS = {
  week: "2026년 4월 2주차",
  motto: "서로 배려하고 질문하는 우리 반",
  notices: [
    { title: "과학의 달 행사 안내", desc: "4월 15일 교내 에어로켓 및 탐구대회가 열립니다." },
    { title: "준비물", desc: "체육복, 미술 붓(수채화용)을 챙겨오세요." }
  ],
  gallery: [
    { title: "모둠 협동 뜀틀 수업", team: "햇살 모둠", photo: "data:image/svg+xml;base64,..." }
  ]
};

한 주의 안내 사항과 활동 사진을 하나의 객체 상수로 관리합니다. 매주 금요일 이 상수의 내용만 교체하면 새로운 소식지가 완성됩니다.

② 모바일 반응형 카드 CSS

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 16px;
}
.card {
  border-radius: 12px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.05);
  background: #ffffff;
}

스마트폰의 작은 화면에서는 1열로, PC나 태블릿에서는 2~3열로 자동 정렬되어 어떤 기기에서 열어도 가독성이 뛰어납니다.

③ 다크모드 및 글자 크기 조절

학부모님의 연령대와 가독성을 배려하여 상단에 글자 크기 확대(A+) 버튼을 기본 제공합니다. 부모님이 침대나 출퇴근길 지하철에서 편안하게 읽을 수 있도록 세심하게 설계되었습니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 학급 소식 구성 항목(시간표, 준비물, 갤러리)에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 학급소식지.html로 저장하여 학부모 알림장에 배포합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const WEEKLY_NEWS = {...} 상수에 주간 소식 3개, 시간표, 활동 갤러리 2개를 내장하여 즉시 브라우저에서 실행되도록 한다.
3. 모바일 카드 그리드: 스마트폰 가로 폭(360px)에서도 좌우 스크롤 없이 카드들이 세로로 미려하게 흐르는 반응형 Flex/Grid를 적용한다.
4. 개인정보 보호: 학생 얼굴 사진과 실명은 사용하지 않으며, 모둠 활동 작품 사진(Base64)과 닉네임만 표시하여 학내망 원칙을 철저히 준수한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 소식지 메인 상단에 강조할 이번 주의 학급 급훈이나 한 줄 약속이 있나요?
2. 갤러리 사진은 1장만 넣을까요, 아니면 좌우 슬라이드(캐러셀)로 넘기게 할까요?
3. 배경 색상을 따뜻한 크림 베이지와 산뜻한 민트 블루 중 어느 것으로 갈까요?

🎯 에디터 한줄평

"가방 바닥에 구겨진 채 학기말에야 발견되던 종이 주간학습안내문은 이제 안녕입니다. 스마트폰 화면에 아이들의 생생한 모둠 활동 사진과 배움 한 줄이 따뜻한 카드로 열리는 순간, 학교와 가정을 잇는 신뢰의 온도는 1도 더 올라갑니다. 종이 한 장 인쇄하지 않고도 부모님의 손안에 교실을 배달하는 스마트한 학급 경영입니다."

📚 기술·교육 참고 링크

  • 교육부 학교-가정 연계 학부모 소통 가이드라인
  • 교육과정 연계: 초등 1~6학년 창체(학급자치·적응 활동), 학교-가정 소통 연계

[보건·학교행정] 교내 감염병 대시보드 - 학년·반별 결석 현황 실시간 히트맵 집계



독감·코로나 유행 시 교무실에서 바로 띄우는 '교내 감염병 실시간 결석 현황 대시보드'

🏥 보건행정 및 학교 안전 관리 — 신학기나 환절기마다 번지는 유행성 감염병(독감, 수족구, 코로나 등) 발생 시, 담임교사들이 학생 결석 사유를 원클릭으로 선택하면 전교 학년별·반별 감염병 발생 추이가 실시간 히트맵(Heatmap)으로 자동 집계됩니다. 메신저로 묻고 엑셀로 취합하던 보건교사의 야근 업무를 단 1분으로 줄여주는 신속한 방역 지원 포털입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
학년/반 매트릭스 히트맵 1학년부터 6학년까지 각 반별 결석자 수가 숫자로 표시되며, 환자가 많은 반은 자동으로 붉은색 농도가 짙어지는 시각화입니다. 보건실 모니터에 상시 띄워두고 전교 유행 추이를 한눈에 직관적으로 파악.
감염병 질환별 분류 통계 독감(A형/B형), 수족구, 코로나, 기타 열성 질환별로 클릭 한 번에 필터링되어 어떤 질병이 집중 발생 중인지 분류됩니다. 'A형 독감 14명, 수족구 3명' 등 교육청 즉시 보고 서식으로 수치 정리.
완전 오프라인 교내 보안 학생의 결석 사유와 건강 정보는 민감한 개인정보이므로, 외부 클라우드 DB 없이 교내 인트라넷이나 교무실 로컬에서만 동작합니다. 담임교사용 비밀번호 잠금 기능으로 외부 유출을 원천 차단.

2. 핵심 아키텍처 해설

① 결석 데이터 집계: ABSENT_DATA 상수

const ABSENT_DATA = [
  { grade: 1, classNo: 2, disease: "독감(A형)", count: 3 },
  { grade: 3, classNo: 1, disease: "수족구", count: 2 },
  { grade: 5, classNo: 3, disease: "독감(B형)", count: 4 }
];

학생 실명 없이 학년, 반, 질환명, 결석 인원 수만 숫자로 관리하여 민감한 건강 정보의 노출을 구조적으로 방지합니다.

② 히트맵 컬러 농도 계산

function getHeatColor(count) {
  if (count === 0) return "#f3f4f6";
  if (count <= 2) return "#fed7aa"; // 연한 주황
  if (count <= 4) return "#fb923c"; // 짙은 주황
  return "#ef4444"; // 붉은 경고 (5명 이상)
}

반별 환자 수에 비례하여 셀의 배경색을 연한 주황에서 짙은 붉은색으로 동적 할당함으로써, 보건교사가 집단 감염 의심 반을 0.1초 만에 감지할 수 있습니다.

③ 교육청 보고용 CSV 원클릭 추출

화면 상단의 '교육청 보고 양식 내보내기' 버튼을 누르면 당일 전교 감염병 현황(일자, 학년, 반, 질환명, 결석자 수)이 표준 CSV 표로 자동 다운로드됩니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 학교 학급 규모(1~6학년 학급 수)와 주요 감염병 목록에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 감염병대시보드.html로 저장하여 보건실 PC에서 엽니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const ABSENT_DATA = [...] 상수에 전교 1~6학년 각 반의 예시 결석 데이터를 내장하여 브라우저 실행 즉시 히트맵이 나타나도록 한다.
3. 히트맵 매트릭스 렌더링: 1~6학년(행) × 1~4반(열) 그리드 테이블을 구성하고, 각 셀의 결석자 수에 따라 배경색 농도를 계산하여 시각화한다.
4. 개인정보 보호: 학생 실명은 일체 다루지 않으며, [학년/반/질환/인원수] 통계치만 취급하여 학내망 원칙을 철저히 준수한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 우리 학교의 학년당 평균 학급 수(예: 3반, 4반, 6반)는 몇 반인가요?
2. 기본으로 집계할 주요 질환 목록(독감, 수족구, 코로나, 감기, 기타) 5가지를 지정할까요?
3. 셀 클릭 시 상세 질환 팝업 창을 띄울까요, 아니면 하단에 요약 바로 띄울까요?

🎯 에디터 한줄평

"환절기 아침마다 메신저 알림창에 쏟아지는 '우리 반 독감 2명 결석이요' 쪽지들을 메모지에 적어 더하던 보건교사의 손길을 기억합니다. 학년과 반의 격자 위에 색깔로 타오르는 이 히트맵은, 단순한 숫자 취합을 넘어 집단 유행을 사전에 막아내는 학교 방역의 가장 든든한 레이더망입니다."

📚 기술·교육 참고 링크

  • 질병관리청 및 교육부 학생 감염병 예방 위기대응 매뉴얼
  • 교육과정 연계: 보건행정, 감염병 예방 수칙, 교내 방역 안전 관리

[바이브 코딩 교구] 제미나이로 만드는 초3 수학 '큰 수와 자릿값' 인터랙티브 퀴즈 웹앱 (100% 브라우저 단독 구동 & 거꾸로 프롬프트)

🔢 제미나이 바이브 코딩으로 5분 만에 완성하는 초3 수학 '큰 수와 자릿값' 단일 HTML 퀴즈 교구 (성취기준 완벽 연계)

💡 이번 교구 바이브 코딩 30초 핵심 다이제스트:
초등학교 3학년 수학 '10000 이상의 큰 수와 자릿값' 단원은 구체물 조작 없이 추상적인 숫자 기호로만 접근하면 자릿수를 건너뛰거나 수의 크기를 혼동하기 쉽습니다.
복잡한 서버 설치나 외부 프로그램 없이, 웹 브라우저에서 단일 HTML5 파일 하나로 100% 단독 구동되는 인터랙티브 퀴즈 교구를 제미나이와 함께 만들어 보세요!
학생 개인정보를 완벽히 보호하는 12가지 동물 닉네임 시스템2022 개정 교육과정 성취기준에 맞춘 6단계 비계설정 퀴즈, 그리고 수업 산출물로 제출할 수 있는 학습 인증 포토카드 PNG 다운로드까지 갖춘 완성형 수업 도구입니다.

📊 한눈에 보는 3대 핵심 교육적 변화 분석표

무엇이 바뀌었나요? (영역) 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
🔢 자릿값과 위치적 기수법 시각화 숫자 5가 백의 자리일 때(500)와 천의 자리일 때(5000), 만의 자리일 때(50000) 나타내는 크기의 차이를 직관적으로 비교합니다. "35420에서 5가 나타내는 수는?" 퀴즈를 풀며 자리마다 부여된 고유 가치를 스스로 발견하기
🛡️ 실명 없는 100% 안심 동물 닉네임 학생 실명이나 학번을 수집하지 않고, '계산왕 호랑이', '지혜로운 부엉이' 등 가상 동물 캐릭터를 선택해 즉시 시작합니다. 개인정보보호법 및 학교 보안 지침 걱정 없이 1인 1디바이스 환경에서 안심하고 수업 진행
📸 포토카드 학습 인증서 이미지 저장 퀴즈 6문항을 모두 풀면 맞힌 점수와 '큰 수 탐험가/마스터' 배지가 담긴 예쁜 인증 카드를 PNG 파일로 저장합니다. 학생들이 내려받은 포토카드 이미지를 학급 위두랑, 패들렛, 구글 클래스룸에 과제 증빙으로 제출

🎯 초등 3학년 수학 '큰 수' 교육과정 비계설정(Scaffolding) 포인트

  • 1. 10000의 필요성과 묶음 원리:
    9999보다 1 큰 수로서의 '10000'을 학습하고, 1000원짜리 지폐 10장이 모여 10000원이 되는 실생활 묶음 모델을 피드백 카드로 제공합니다.
  • 2. 자릿값(Place Value)과 숫자의 크기 구별:
    숫자 기호 자체(예: 7)와 그 숫자가 위치한 자리(만의 자리)에 따라 실제 나타내는 값(70000)의 차이를 오답 선택지로 배치하여 오개념을 선제적으로 교정합니다.
  • 3. 네 자리씩 끊어 읽는 위치적 기수법:
    우리말 수 체계의 핵심인 "일, 십, 백, 천 / 만, 십만, 백만, 천만"의 4자리 묶음 읽기 규칙을 힌트 카드로 시각화하여 자연스럽게 익히도록 돕습니다.
  • 4. 정답 즉시 노출 차단 & 메타인지 강화:
    틀렸을 때 단순히 '오답'만 띄우지 않고, "이 숫자는 천의 자리에 있으므로 500이 아니라 5000을 나타내요"라는 구체적인 인과관계 해설을 제시합니다.

💡 초보자를 위한 바이브 코딩 실전 사용 예시

📌 따라하기 3단계 순서

  1. 1단계 (거꾸로 프롬프트 복사): 아래 제공된 [제미나이 전용 큰 수 퀴즈 거꾸로 프롬프트]를 복사하여 구글 제미나이(https://gemini.google.com)에 입력합니다.
  2. 2단계 (역질문 3가지 답변): 제미나이가 되묻는 질문(자릿수 범위, 오답 힌트 방식, 디자인 테마)에 내 학급 수업 상황에 맞게 1줄로 답변합니다.
  3. 3단계 (단일 index.html 실행): 제미나이가 출력한 완성형 코드를 메모장에 넣고 math_place_value.html로 저장한 뒤 더블 클릭하면 브라우저에서 즉시 실행됩니다!

📋 복사해서 바로 쓰는 '제미나이 전용 큰 수 퀴즈 에러 제로 프롬프트'

당신은 초등 수학 교육과정 전문가이자 프론트엔드 수석 웹 개발자입니다.
2022 개정 초등학교 3학년 수학 성취기준: "큰 수의 필요성을 인식하면서 10000 이상의 큰 수에 대한 자릿값과 위치적 기수법을 이해하고, 수를 읽고 쓸 수 있다."를 구현한 객관식 퀴즈 웹앱을 단일 HTML5 파일로 제작해 주세요.

[🚨 에러 방지 및 개인정보 안심 필수 안전장치 (Zero-Error Baseline)]
1. 단일 파일 완결성: 외부 복잡한 번들러나 서버 설치 없이, 브라우저에서 바로 열리는 단일 HTML5 파일 안에 HTML, Tailwind CSS(CDN), Lucide Icons(CDN), 순수 바닐라 자바스크립트를 모두 포함할 것. 생략 주석(// TODO, /* 생략 */ 등) 없이 완전한 코드로 출력할 것.
2. 개인정보 원천 차단: 학생의 실명이나 학번을 입력받지 말고, 입장 화면에서 12가지 귀여운 동물 닉네임(계산왕 호랑이, 지혜로운 부엉이, 날쌘 다람쥐 등) 중 하나를 선택해 입장하도록 할 것.
3. 성취기준 맞춤 퀴즈 데이터 내장: 10000의 이해, 자릿값 분해, 4자리 끊어 읽기, 수의 대소 비교 등 핵심 퀴즈 6문항을 자바스크립트 배열 안에 완전히 내장하고, 선택지(①~④)와 맞춤 피드백 해설을 포함할 것.
4. Web Audio API 사운드 합성: 외부 MP3 다운로드 없이 브라우저 내장 AudioContext로 정답 차임벨(도-미-솔)과 오답 효과음을 자체 합성할 것.
5. 결과 인증 포토카드 저장: 퀴즈 종료 시 점수, 맞힌 문항 수, 획득 배지(새싹/탐험가/마스터)가 담긴 학습 카드를 html2canvas CDN을 활용해 PNG 이미지로 저장할 수 있게 할 것.

[❓ 역질문 유도 (Reverse Prompting)]
코드를 작성하기 전에, 나에게 아래 3가지 질문을 먼저 던져서 세부 구성을 확정해 줘:
1. 퀴즈 범위를 10000~99999(다섯 자리 수) 집중으로 할까요, 십만·백만·천만 단위까지 확장할까요?
2. 오답을 골랐을 때 정답만 보여줄까요, 아니면 "자릿값 묶음 분해 힌트"를 단계별로 열람할 수 있게 할까요?
3. 전체 디자인 무드를 파스텔 네이비/스카이블루 테마와 교실 칠판 테마 중 어떤 스타일로 맞출까요?

🎯 에디터 한줄평

"교육과정 성취기준의 본질을 정확히 꿰뚫는 거꾸로 프롬프트 하나만 있으면, 외부 툴이나 서버에 의존하지 않고도 교실에서 100% 안전하고 완벽하게 작동하는 수학 교구를 자유자재로 만들어낼 수 있습니다!"

🔗 교육과정 및 기술 레퍼런스:
• 2022 개정 교육과정 초등학교 수학과 교육과정 (수와 연산 - 큰 수 [4수01-01])
• Tailwind CSS CDN: https://cdn.tailwindcss.com
• Lucide Icons CDN: https://cdn.jsdelivr.net/npm/lucide@0.577.0/dist/umd/lucide.min.js
• html2canvas CDN: https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js

[바이브 코딩 교구] 제미나이로 만드는 초3 수학 '수의 계열과 크기 비교' 동적 선 잇기 웹앱 (SVG 실시간 연결 & 거꾸로 프롬프트)

🔗 제미나이 바이브 코딩으로 만드는 초3 수학 '수의 계열과 크기 비교' 선 잇기 웹앱: SVG 동적 연결선 & 에러 제로 거꾸로 프롬프트

💡 이번 교구 바이브 코딩 30초 핵심 다이제스트:
초등학교 3학년 수학 '다섯 자리 이상의 수의 범위에서 수의 계열과 크기 비교'는 단순 지필 학습지로는 뛰어세기 규칙과 자릿수 비교 과정을 시각적으로 체득하기 어렵습니다.
클릭 한 번으로 왼쪽 조건과 오른쪽 결과가 실시간 SVG 연결선으로 이어지는 인터랙티브 'A-B 매칭(선 잇기)' 디지털 교구를 제미나이와 함께 단일 HTML5 파일로 완성해 보세요!
학생 개인정보를 철저히 보호하는 12가지 동물 닉네임 시스템과 정답 확인 시 초록/빨강 시각 피드백, 그리고 결과 화면의 학습 인증 포토카드 PNG 다운로드까지 갖춘 완성형 수학 교구입니다.

📊 한눈에 보는 3대 핵심 교육적 변화 분석표

무엇이 바뀌었나요? (영역) 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
📐 실시간 동적 SVG 선 잇기 인터랙션 왼쪽 항목과 오른쪽 항목을 마우스나 손가락으로 누르면 화면에 푸른색 연결선이 부드럽게 그려집니다. 전자칠판 앞에서 학생이 직접 터치하며 '34500보다 100 큰 수'를 찾아 선으로 잇기
🔢 뛰어세기 계열 & 자릿값 대소 비교 100씩, 1000씩 뛰어세기 규칙과 높은 자리부터 비교하는 수의 대소 비교 알고리즘을 5개 실전 짝으로 학습합니다. 48200과 48190처럼 최고자리는 같고 십의 자리가 다른 수의 정밀 비교 훈련
🛡️ 개인정보 제로 & 단일 파일 완결 실명 수집과 복잡한 서버 설치 없이, 브라우저 단독 실행 단일 HTML 파일로 오프라인에서도 완벽 구동됩니다. 선 연결 완료 후 시도 횟수와 점수가 담긴 학습 인증서를 PNG 이미지로 내려받아 패들렛에 제출

🎯 초등 3학년 수학 '수의 계열과 크기 비교' 교육과정 비계설정 포인트

  • 1. 뛰어세기를 통한 수의 규칙적 계열화:
    100씩 뛰어세기(예: 34500 ➔ 34600), 1000씩 거꾸로 뛰어세기(예: 70000보다 1000 작은 수 = 69000)를 매칭하여 수의 규칙성을 손으로 직접 연결합니다.
  • 2. 수의 범위와 사이 수 추론:
    "56000과 57000 사이의 수" 조건을 제시하여 56500을 매칭하게 함으로써, 수직선 상에서 수의 상대적 위치 감각을 체득합니다.
  • 3. 최고자리부터 순차 비교하는 대소 판별:
    자릿수가 같은 두 수(48200 vs 48190)에서 만의 자리와 천의 자리가 같을 때 십의 자리(0 vs 9)를 비교하여 부등호(>, <) 관계를 도출하는 체계적 사고를 유도합니다.
  • 4. 정답 확인 및 시각적 색상 피드백:
    [정답 확인] 버튼을 누르면 올바른 연결선은 선명한 초록색, 잘못된 연결선은 붉은색 테두리로 바뀌어 학생 스스로 오개념을 수정할 기회를 제공합니다.

💡 초보자를 위한 바이브 코딩 실전 사용 예시

📌 따라하기 3단계 순서

  1. 1단계 (거꾸로 프롬프트 복사): 아래 제공된 [제미나이 전용 수의 계열 선 잇기 거꾸로 프롬프트]를 복사하여 구글 제미나이(https://gemini.google.com)에 입력합니다.
  2. 2단계 (역질문 3가지 답변): 제미나이가 되묻는 질문(매칭 문항 수, 난이도 범위, 디자인 테마)에 내 교실 상황에 맞게 1줄로 답변합니다.
  3. 3단계 (단일 index.html 실행): 제미나이가 출력한 완성형 코드를 메모장에 넣고 math_match_game.html로 저장한 뒤 더블 클릭하면 브라우저에서 즉시 선 잇기 교구가 실행됩니다!

📋 복사해서 바로 쓰는 '제미나이 전용 선 잇기 에러 제로 프롬프트'

당신은 초등 수학 교육과정 전문가이자 프론트엔드 인터랙티브 웹 개발자입니다.
2022 개정 초등학교 3학년 수학 성취기준: "다섯 자리 이상의 수의 범위에서 수의 계열을 이해하고, 수의 크기를 비교하며 그 방법을 설명할 수 있다."를 완벽히 구현한 'A와 B 동적 선 잇기(Matching Pairs)' 교구 웹앱을 단일 HTML5 파일로 제작해 주세요.

[🚨 에러 방지 및 개인정보 안심 필수 안전장치 (Zero-Error Baseline)]
1. 단일 파일 완결성: 외부 서버 설치 없이, 브라우저에서 바로 열리는 단일 HTML5 파일 안에 HTML, Tailwind CSS(CDN), Lucide Icons(CDN), 동적 SVG 선 렌더링 자바스크립트를 모두 포함할 것. 생략 주석(// TODO, /* 생략 */ 등) 없이 완전한 코드로 출력할 것.
2. 개인정보 원천 차단: 학생 실명/학번 입력을 요구하지 말고, 입장 화면에서 12가지 귀여운 동물 닉네임(탐구왕 호랑이, 지혜로운 여우 등)을 선택해 입장하도록 할 것.
3. 실시간 SVG 선 렌더링: 왼쪽 박스와 오른쪽 박스를 클릭하면 두 요소의 중심 좌표를 계산하여 실시간 SVG <line> 요소를 화면에 부드럽게 그릴 것. 연결 수정 및 재연결 로직을 직관적으로 지원할 것.
4. 성취기준 5대 매칭 데이터 내장:
   - 왼쪽 1: '34500보다 100 큰 수' ➔ 오른쪽: '34600'
   - 왼쪽 2: '56000과 57000 사이의 수' ➔ 오른쪽: '56500'
   - 왼쪽 3: '99990보다 10 큰 수' ➔ 오른쪽: '100000 (십만)'
   - 왼쪽 4: '48200과 48190의 크기 비교' ➔ 오른쪽: '48200 > 48190'
   - 왼쪽 5: '70000보다 1000 작은 수' ➔ 오른쪽: '69000'
5. 시각 및 청각 피드백: Web Audio API로 연결음과 정답음을 합성하고, [정답 확인] 클릭 시 맞힌 선은 초록색, 틀린 선은 붉은색 테두리로 표시할 것.
6. 결과 포토카드 저장: 5쌍을 모두 맞히면 html2canvas CDN을 활용해 닉네임, 점수, 시도 횟수가 담긴 학습 카드를 PNG 파일로 다운로드할 수 있게 할 것.

[❓ 역질문 유도 (Reverse Prompting)]
코드를 작성하기 전에, 나에게 아래 3가지 질문을 먼저 던져서 세부 구성을 확정해 줘:
1. 문항 난이도를 다섯 자리 수(만 단위) 집중으로 할까요, 억·조 단위 큰 수까지 혼합할까요?
2. 모바일/태블릿 터치 시 선을 드래그해서 긋는 방식과 탭-탭(Tap to Connect) 방식 중 어떤 것을 우선할까요?
3. 전체 디자인 톤을 부드러운 파스텔 크림/블루 테마와 교실 칠판 테마 중 어떤 스타일로 맞출까요?

🎯 에디터 한줄평

"눈으로만 보던 수의 크기와 규칙이, 마우스와 손끝을 따라 그려지는 푸른 연결선을 통해 직관적인 수 감각으로 완성됩니다. 지필 평가의 지루함을 한 방에 날리는 인터랙티브 교구입니다!"

🔗 교육과정 및 웹 표준 레퍼런스:
• 2022 개정 교육과정 초등학교 수학과 교육과정 (수와 연산 [4수01-02])
• HTML5 Inline SVG Line Rendering API
• Web Audio API & Tailwind CSS CDN