하루의 순간을 기록하고 네컷 프레임으로 완성하는 웹 앱입니다. 촬영/업로드/테마 꾸미기 흐름을 제공하며, 결과물을 이미지(PNG) 또는 영상(WEBM)으로 다운로드할 수 있습니다.
- Next.js 16 (App Router)
- React 19
- TypeScript
- Tailwind CSS v4
- Zustand (클라이언트 상태 관리)
- Konva / react-konva (캔버스 편집)
- Axios (API 통신)
- 촬영 플로우: 웹캠 자동 촬영(8장) + 4장 선택 + 프레임 합성
- 업로드 플로우: 사진/영상 업로드 + 4장 선택 + 프레임 합성
- 테마 에디터: 프레임 위에 사진/스티커/텍스트를 배치하여 커스텀 테마 제작
- 인증/계정: 이메일 로그인/회원가입/비밀번호 재설정/소셜 로그인
- 마이페이지: 사용자 정보 조회, 닉네임/비밀번호 변경, 로그아웃/탈퇴
- 촬영
/shoot에서 프레임 선택/shoot/capture에서 자동 촬영(8장)/shoot/select에서 4장 선택/shoot/result에서 PNG/WEBM 다운로드
- 업로드
/upload에서 프레임 선택/upload/select에서 파일 업로드 + 4장 선택/upload/result에서 PNG/WEBM 다운로드
- 테마 꾸미기
/theme에서 프레임 선택/theme/sticker에서 에디터로 꾸미기- 저장 시 Draft로 보관 및 서버 저장
/랜딩/home기능 선택/shoot/*촬영 플로우/upload/*업로드 플로우/theme/*테마 꾸미기 플로우/login,/signup,/forgot-password인증/mypage계정 관리/history(준비 중)
lib/shootSessionStore.ts: 촬영 세션(프레임/샷/선택) 상태lib/uploadSessionStore.ts: 업로드 세션(프레임/미디어/선택) 상태lib/themeEditorStore.ts: 테마 에디터(자산, 컴포넌트, 레이어) 상태lib/themeDraftStore.ts: 테마 Draft 로컬 보관 (persist)lib/themeSessionStore.ts: 테마 플로우의 선택값 보관
lib/canvas/loaders.ts: 이미지/비디오 로더lib/canvas/draw.ts: cover 방식으로 슬롯에 맞춰 그리기lib/canvas/composeFrame.ts: 슬롯 합성 + PNG/WEBM 생성
lib/api.ts: Axios 인스턴스 (BASE URL, 쿠키 포함)lib/auth/*: 로그인/회원가입/비밀번호 재설정 APIapp/api/client/*: 프론트 서버에서 쿠키 기반 호출을 백엔드로 프록시proxy.ts: 인증 보호/리이슈 로직을 위한 미들웨어 헬퍼
NEXT_PUBLIC_BASE_URL: 백엔드 API Base URLJWT_ACCESS_SECRET: 엣지 런타임에서 accessToken 검증용 시크릿
pnpm dev: 개발 서버pnpm build: 스티커 리스트 생성 후 빌드pnpm generate:stickers:public/stickers→constants/stickers.generated.ts생성
app/: 라우트 페이지 및 API 라우트components/: UI 컴포넌트lib/: 상태 관리/유틸/캔버스/인증 로직constants/: 프레임/색상/스티커 목록public/: 스티커 이미지, 사운드 등 정적 리소스
- 촬영/업로드 결과 생성은 클라이언트 캔버스에서 수행됩니다.
- 테마 에디터는 Konva로 구현되어 레이어/텍스트/이미지 조작이 가능합니다.