장기 탐구 프로젝트의 내비게이션! — 초등 과학 자유탐구 4단계 하위 미션 실시간 진도율 트래커
🧭 초등 5~6학년 과학 '자유 탐구' 및 사회과 프로젝트 학습 단원 — 몇 주에 걸쳐 진행되는 장기 탐구에서 학생들이 중간에 길을 잃지 않도록, 4대 핵심 단계(주제 선정 ➔ 가설 설정 및 실험 설계 ➔ 데이터 수집 및 분석 ➔ 결론 도출 및 나눔)마다 세부 체크리스트를 두고 실시간 달성률(%)을 시각적 게이지 바로 안내해 주는 프로젝트 관리 웹앱입니다.
📖 한 줄 정의
심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).
학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.
1. 3대 핵심 분석 비교표
| 무엇이 바뀌었나요? / 영역 | 초보자를 위한 쉬운 설명 | 이렇게 한번 써보세요! |
|---|---|---|
| 막연한 과제 vs 4단계 12개 마이크로 미션 | "보고서 써와" 대신 4단계별로 3개씩 쪼갠 작은 체크박스를 클릭하며 성취감을 쌓습니다. | 1단계(준비물 사진 찍기) 완료 시 프로그레스 바가 즉시 8% 상승. |
| 모둠별 실시간 진도율 한눈에 보기 | 교탁 화면에 학급 전체 모둠의 진행률(0~100%)이 시각화되어 지체되는 모둠을 즉시 피드백합니다. | 진도율 75% 미만 모둠에 '탐구 도우미 교사 파견' 신호등 표시. |
| 중간 저장 브라우저 LocalStorage | 외부 서버 없이 태블릿 브라우저에 체크 상태가 자동 저장되어 다음 과학 시간에도 그대로 이어집니다. | 수업 끝날 때 '진도 보고서 내보내기'로 교사에게 결과 전달. |
2. 핵심 아키텍처 해설
① 4단계 마이크로 미션 데이터 구조
const PROJECT_STEPS = [
{
phase: 1,
title: "1단계: 문제 발견 & 주제 선정",
tasks: [
{ id: "p1_1", text: "우리 생활 주변의 궁금한 현상 3가지 브레인스토밍하기" },
{ id: "p1_2", text: "실험으로 검증 가능한 하나의 질문으로 좁히기" },
{ id: "p1_3", text: "선행 탐구 자료 및 기존 과학 지식 2건 찾아보기" }
]
},
{
phase: 2,
title: "2단계: 가설 설정 & 실험 계획",
tasks: [
{ id: "p2_1", text: "'만약 ~라면 ~할 것이다' 형태로 가설 문장 쓰기" },
{ id: "p2_2", text: "다르게 할 조건(조작변인)과 같게 할 조건(통제변인) 구별하기" },
{ id: "p2_3", text: "실험 준비물 및 안전 수칙 체크리스트 확정하기" }
]
}
];
과학 탐구의 전 과정을 12개의 마이크로 액션으로 쪼갠 심기 모드(데이터 임베딩) 표준 설계도입니다.
② 진도율 실시간 자동 계산 수식
function calculateProgress(checkedIds) {
const totalTasks = PROJECT_STEPS.reduce((acc, step) => acc + step.tasks.length, 0);
const completed = checkedIds.length;
const percentage = Math.round((completed / totalTasks) * 100);
return { percentage, completed, totalTasks };
}
체크박스를 누를 때마다 전체 12개 미션 중 완료된 개수를 백분율로 환산하여 상단 게이지 바 너비를 width: ${percentage}%로 실시간 애니메이션합니다.
③ LocalStorage 로컬 지속성
태블릿을 껐다 켜도 체크 상태가 유지되도록 브라우저 로컬 저장소에 체크된 미션 ID 배열을 저장하며, 학생 개인정보는 일절 수집하지 않습니다.
3. 초보자를 위한 바이브 코딩 실전 사용 예시
- 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
- 역질문 답변 — 제미나이가 묻는 탐구 주제와 총 진행 주차(예: 3주 완성)에 답합니다.
- HTML 파일 실행 — 메모장에 붙여넣고
탐구진도트래커.html로 저장 후 더블클릭합니다.
제미나이 전용 에러 제로 프롬프트
[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 외부 폰트 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const PROJECT_STEPS = [...] 상수에 과학 자유탐구 4단계 12개 하위 체크리스트를 기본 내장한다.
3. 실시간 진도율 시각화: 상단에 0~100% 프로그레스 바를 두고, 미션 체크 시 부드러운 애니메이션과 함께 퍼센트 수치가 갱신되도록 한다.
4. 로컬 지속성: 브라우저 localStorage를 활용하여 새로고침하거나 창을 닫아도 체크 상태가 유지되도록 한다.
5. 학생 개인정보 0: 학생 실명 대신 모둠 번호와 탐구 과제명만 입력받는다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.
[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 탐구 단계별 미션 개수는 기본(단계당 3개, 총 12개)으로 할까요?
2. 100% 완주 시 축하 팡파르(Web Audio 합성음)와 디지털 완주 배지를 띄울까요?
3. 모둠별 탐구 일지를 간단히 적을 수 있는 '오늘의 메모' 입력란도 포함할까요?
🎯 에디터 한줄평
"아이들이 장기 과제에서 좌절하는 이유는 게을러서가 아니라, '지금 내가 전체 어디쯤 서 있는지' 보이지 않기 때문입니다. 등산길의 이정표처럼 12개의 작은 깃발을 꽂아주는 것만으로도, 포기하던 아이들이 마지막 100% 깃발을 향해 자발적으로 발걸음을 옮기기 시작합니다."
📚 기술·교육 참고 링크
- 초등 과학과 자유탐구 지도 매뉴얼: 변인 통제와 데이터 분석 가이드
- 교육과정 연계: 초등 5~6학년 과학(자유 탐구), 사회(지속가능한 발전과 지역 문제), 실과(문제 해결과 프로그래밍)