Sticky-note-board

연수 협업 보드판

연수(교원 자율연수) 참여 선생님들이 각자 접속해 실시간으로 함께 사용하는 포스트잇 협업 보드판입니다. 빌드 도구 없이 순수 HTML/CSS/JS로 만들어져 있고, 데이터는 Firebase Firestore에 실시간으로 저장/동기화됩니다.

폴더 구조

public/
  index.html         홈 화면 (보드판 목록, 만들기)
  board.html          보드판 화면 (포스트잇/단원명, 캡쳐, 삭제)
  css/style.css
  js/firebase.js      Firebase 프로젝트 설정 및 초기화
  js/home.js          홈 화면 로직
  js/board.js          보드판 화면 로직
firestore.rules       Firestore 보안 규칙
firebase.json          Firebase Hosting 설정
.firebaserc             연결된 Firebase 프로젝트 (sticky-note-board-4cefc)

기능 요약

Firebase 연동 상태

Firestore 데이터 구조

boards (collection)
  {boardId}
    schoolName: string
    password: string (숫자 4자리)
    createdAt: timestamp
    notes (subcollection)
      {noteId}
        type: "sticky" | "unit"
        text: string
        x: number
        y: number
        createdAt: timestamp

보안 규칙 (firestore.rules)

로그인 시스템이 없는 내부용 연수 도구 특성상, 비밀번호 확인은 앱(클라이언트) 단에서 처리하고 Firestore 규칙은 앱을 통한 정상적인 사용을 막지 않도록 읽기/쓰기를 열어두었습니다. 민감한 개인정보를 다루지 않는 용도로만 사용해 주세요.

콘솔에서 규칙을 반영하려면 Firebase 콘솔 → Firestore Database → 규칙 탭에 firestore.rules 내용을 붙여넣고 게시하면 됩니다. Firebase CLI가 있다면 아래 명령으로도 배포할 수 있습니다.

firebase deploy --only firestore:rules

배포 방법 (Firebase Hosting)

  1. Firebase CLI 설치 (최초 1회): npm install -g firebase-tools
  2. 로그인: firebase login
  3. 이 저장소 루트에서 배포: firebase deploy --only hosting
  4. 배포가 끝나면 안내되는 https://sticky-note-board-4cefc.web.app 주소로 접속하면 됩니다.

Firebase Hosting이 아니어도 public/ 폴더를 그대로 올릴 수 있는 정적 호스팅(예: Netlify, Vercel, GitHub Pages 등)이면 동일하게 동작합니다.

로컬에서 미리 보기

cd public
python3 -m http.server 8080

브라우저에서 http://localhost:8080 접속.

알려진 제한 사항