Files
joke-app/PLAN.md
2026-10-04 03:35:12 +09:00

3.0 KiB

파티 장난 앱 — 계획서

1. 목표

친구와 함께 즐기는 되돌릴 수 있는 장난 연출 앱. 깜짝 효과(가짜 블루스크린, 가짜 바이러스 경고 등)를 띄웠다가 바로 "장난이야"로 풀어주는 파티용 프로그램.

2. 핵심 원칙 (불변 조건)

이 조건들은 기능보다 우선합니다. 하나라도 깨지면 그건 더 이상 "장난 앱"이 아닙니다.

  • 항상 보임 — 실행 중 창은 언제나 화면에 떠 있다. 트레이 숨김 / 최소화 은닉 없음.
  • 그 자리의 사람이 통제 — 앱이 도는 PC 앞의 사람이 모든 동작을 보고, 멈추고, 끌 수 있다.
  • 되돌림 가능 — 모든 연출은 키/클릭/ESC로 즉시 해제. 파일 손상·설정 변경 등 영구 효과 없음.
  • 흔적 없음 — 설치·자동실행 등록·파일 쓰기·외부 전송 없음. 끄면 끝.

3. 범위

하는 것 (In scope)

  • A. 로컬 파티 앱 — 그 PC에서 직접 실행, 버튼으로 연출을 터뜨리는 앱. ✅ 이미 구현됨(index.html).
  • B. 한 화면 2인 모드(hot-seat) — 네트워크 없이, 한 PC 앞에 둘이 앉아 한 명이 상대에게 연출을 걸어주는 모드. 창은 계속 보이고 상대가 직접 ESC로 끌 수 있음.
  • C. 연출 추가 — 가짜 다운로드 바, 가짜 업데이트 화면, 커스텀 문구/효과음 등.
  • D. 배포 편의 — 더블클릭 실행 패키징(현재는 HTML 파일 하나, 필요 시 단일 실행파일로).

안 하는 것 (Out of scope — 거절)

  • ✗ 클라이언트/서버로 나눠, 한 사람이 네트워크 너머 다른 사람 PC의 연출을 트리거하는 구조.
    • 이유: "대상 PC에 상주하는 클라이언트 + 원격에서 명령을 보내는 서버"는 연출이 무해해도 아키텍처 자체가 원격 조종 툴(RAT)의 뼈대다. 명령 목록만 바꾸면 그대로 악성툴이 되고, "동의한 장난"과 "몰래 장악"이 코드상 구분되지 않는다. 연결 승인 UI·종료 버튼을 붙여도 통제권이 대상자가 아닌 원격 조작자에게 있다는 본질은 바뀌지 않는다.
  • ✗ 트레이/백그라운드 은닉, 자동 시작, 상대 몰래 실행.

4. 현재 상태

  • index.html — 단일 파일 로컬 파티 앱. 연출 6종(가짜 블루스크린 / 가짜 바이러스→폭죽 / 화면 깨짐 / 글리치 / 폭죽 / 효과음). 시스템 크롬으로 렌더링·동작 검증 완료.
  • README.md — 실행법과 연출 설명.

5. 다음 단계 (사용자 선택 대기)

  1. B안(한 화면 2인 모드) 으로 진행 — 네트워크 없이 둘이 즐기는 형태. 계획 상세화 → 구현.
  2. C안(연출 추가) — 넣고 싶은 연출만 지정하면 현재 앱에 바로 추가.
  3. D안(단일 실행파일 패키징) — 친구가 브라우저 없이 더블클릭으로 실행하게.

참고: 3절 "안 하는 것"의 원격 트리거 구조는 어떤 포장을 해도 진행하지 않습니다.