-
Notifications
You must be signed in to change notification settings - Fork 0
01 Project Plan
이현민 edited this page Jun 15, 2026
·
4 revisions
뮤런(Murun) 은 애니뮤 러닝 소모임의 정기 운동을 한 페이지에서 기록하고, 시즌이 쌓일수록 아카이브로 자라나는 동아리 내부용 웹 서비스다.
정기 운동의 기록이 다음과 같이 흩어져 있다.
- 운영진의 메모장 / 카카오톡 단톡방 공지
- 개인 스트라바·런데이 앱 (본인만 접근 가능)
- 단체사진은 단톡방 사진첩에 흘러감
시즌이 끝나거나 운영진이 바뀌면 사실상 소실. 신입 부원은 "지난 시즌 우리가 어떻게 뛰었는지" 확인할 방법이 없다.
뮤런의 핵심 모델은 그날의 운동 페이지(Session) = 게시글, 각자 본인이 적는 기록(Participation) = 댓글 에 가깝다.
| 역할 | 설명 | 권한 |
|---|---|---|
| 호스트(Host) | 그날의 운동을 주최한 멤버 1명 | 세션(게시글) 생성·수정. 본문(날짜·장소·사진·메모) 작성. |
| 참여자(Participant) | 그날 함께 뛴 멤버 N명 | 본인 행만 추가/수정/삭제. 거리·기록·노트 입력. |
| 관리자(Admin) | 서버 운영자 (스스로 본인) | 회원 가입 승인, 모든 데이터 수정 가능. |
가입 흐름: SNU 구글 계정(@snu.ac.kr) OAuth → 화이트리스트 대기 → 관리자 승인 → 정상 사용.
비로그인 접근: 없음. 모든 페이지가 로그인 + 승인된 회원만. 단톡방 공유 미리보기(OG 이미지)만 비로그인에서 보임.
- 호스트(주 1명/주): 운동 직후 5분 안에 세션 페이지를 만든다. 모바일에서 빠르게.
- 참여자(주 10명/주): 본인이 직접 자기 거리·기록을 적는다. 30초 이내.
- 신입/예비 부원: 가입 전엔 못 들어옴. 가입 후 아카이브를 둘러본다.
- 호스트가 페이지 생성을 1분 안에 끝낼 수 있어야 매주 지속된다.
- 참여자 본인이 자기 기록을 직접 적는 게 "운영진 일괄 입력" 보다 누락이 적고 정확하다.
- 단체사진 1장 + 본인 페이스 1줄이 매주 쌓이는 것 자체가 가치.
다음만 동작하면 MVP.
- 로그인: Google OAuth, @snu.ac.kr 도메인 강제
- 가입 승인 흐름: 신규 사용자는
approved=false, 관리자 페이지에서 승인 - 세션 생성 (호스트): 날짜·장소·시작 시간·날씨·단체사진·코스 메모
- 세션 페이지 (참여자 진입): 본인 행이 없으면 "내 기록 추가", 있으면 본인 행만 수정 가능
- 참여 기록: 거리(km), 기록(분:초), 노트 — 모두 optional
- 세션 아카이브 리스트: 최신순 카드. 참여 인원 수 표시.
- OG 이미지: 세션 URL을 단톡방에 던지면 단체사진 미리보기
- 모바일 375px 정상 동작 (dogfooding 기준)
- N100 prod 배포 완료 (
murun.duckdns.org+ HTTPS)
- 개인 페이지: 누적 거리, 참여 횟수, 평균 페이스, 페이스 추이 차트
- 검색·필터: 참여 인원 수, 장소, 멤버, 기간
- 시즌/월별 그룹화 — 후속 TODO
- duckdns 도메인 연결 + HTTPS
- 회원 가입 승인 대기 알림 (관리자 페이지 배지) — 후속 TODO
- PWA 매니페스트 (홈화면 추가)
- 실시간 GPS 트래킹 / 스트라바 연동
- 푸시·이메일 알림
- 호스트가 아닌 사람이 다른 멤버 행을 임의 추가/수정 (위임 기능)
- 본인 인증 후 화이트리스트 자동 통과 (관리자 승인 1단계는 유지)
- 결제, 회비 관리, 다국어, 다크모드, 댓글/반응
| 지표 | 목표 |
|---|---|
| 실제 시즌 기록 입력 횟수 | ≥ 3건 (지난 3회 운동) |
| 호스트의 세션 생성 시간 (모바일) | ≤ 90초 |
| 참여자의 본인 기록 입력 시간 | ≤ 30초 |
| Lighthouse Performance (모바일) | ≥ 80 |
| 빌드·배포 자동화 | main push → prod 자동 배포, dev push → image build 안전망 |
| 내 워크플로우로 구현한 feature 비율 | ≥ 70% |
| 리스크 | 영향 | 대응 |
|---|---|---|
| Google OAuth 콜백이 도메인 없이 안 됨 | prod 로그인 실패 | 로컬은 localhost 콜백, prod는 https://murun.duckdns.org/api/auth/callback/google 등록 |
| 가정 회선 다운/정전 | 서비스 중단 | UPS는 추후. 우선 백업(주 1회 cron으로 SQLite 파일·uploads dir 외부 복사) |
| 단체사진 원본 크기 큼 (모바일 5~10MB) | 업로드 느림 | 클라이언트 리사이즈 X, 대신 업로드 상한 15MB + 진행률 UI. next/image가 서빙 시 webp 변환. |
| 호스트 승인 대기 중 부원이 로그인해도 못 씀 | 운영 부담 | "승인 대기" 안내 페이지로 명확히 → 관리자가 단톡방 보고 1분 내 승인 |
| Agent가 권한 체크를 빠뜨림 | 보안 사고 | Server Action 첫 줄 인증·권한 체크를 SKILL.md에 명시, 06-Checkpoints로 사람 검증 |