# CheckFlow > 셀프호스팅 TickTick-like Todo 앱 — 계층형 체크리스트 + 메모장 + CardDAV + PWA ![CheckFlow](public/icons/icon.svg) ## 주요 기능 - ✅ **계층형 체크리스트** — 메인 태스크 + 하위 태스크 - 📝 **태스크 메모장** — 넓은 노트 영역 (Markdown 지원) - 👥 **멀티유저** — 각 사용자 데이터 완전 격리 - 📱 **PWA** — Android 홈 화면 추가, 오프라인 지원 - 📲 **CardDAV** — DAVx⁵ 앱으로 Galaxy 동기화 - 📥 **TickTick Import** — CSV/ICS 내보내기 파일 import - 🌙 **다크모드** — 시스템/수동 전환 - 🐳 **Docker** — 원클릭 배포 ## 빠른 시작 ### 1. 환경 변수 설정 ```bash cp .env.example .env # .env 파일에서 NEXTAUTH_SECRET 및 POSTGRES_PASSWORD 변경 ``` ### 2. Docker로 실행 ```bash docker compose up -d ``` 앱이 시작되면: ```bash # DB 마이그레이션 (최초 1회) docker compose exec app npx prisma migrate deploy ``` `http://localhost:3000` 접속 후 계정 생성. --- ## 개발 환경 실행 ### 요구사항 - Node.js 20+ - PostgreSQL (또는 Docker) ```bash # 의존성 설치 npm install # DB 설정 cp .env.example .env.local # .env.local의 DATABASE_URL을 DB에 맞게 수정 # DB 마이그레이션 npx prisma migrate dev # 개발 서버 시작 npm run dev ``` → `http://localhost:3000` --- ## DAVx⁵로 Galaxy 연동 1. Play Store에서 **[DAVx⁵](https://play.google.com/store/apps/details?id=at.bitfire.davdroid)** 설치 (무료) 2. DAVx⁵ 앱 → **+** → Login with URL and user name - **URL**: `http://your-server:3000/api/dav` - **Username**: CheckFlow 이메일 - **Password**: CheckFlow 비밀번호 3. Task 목록 동기화 → Samsung Reminder 또는 Tasks 앱에서 확인 --- ## TickTick에서 가져오기 1. TickTick 앱 → Settings → Export 2. **Export as CSV** 또는 **Export as iCalendar** 선택 3. CheckFlow → 사이드바 → **Import Tasks** 4. 파일 선택 후 대상 목록 지정 → Import --- ## NPM (Nginx Proxy Manager) 연동 Docker compose가 기본으로 `3000` 포트에서 실행됩니다. NPM에서 Proxy Host 추가: - **Destination**: `http://checkflow-app:3000` - SSL 인증서 설정 --- ## 환경 변수 | 변수 | 설명 | 기본값 | |------|------|--------| | `DATABASE_URL` | PostgreSQL 연결 문자열 | — | | `NEXTAUTH_URL` | 외부 접근 URL | `http://localhost:3000` | | `NEXTAUTH_SECRET` | JWT 시크릿 (32자 이상 랜덤) | — | | `POSTGRES_PASSWORD` | DB 비밀번호 | `changeme` | | `PORT` | 노출 포트 | `3000` | --- ## 기술 스택 - **Frontend**: Next.js 16 (App Router) + TypeScript + Vanilla CSS - **Backend**: Next.js API Routes - **DB**: PostgreSQL + Prisma ORM - **Auth**: NextAuth.js (JWT) - **PWA**: Service Worker + Web App Manifest - **CardDAV**: 커스텀 iCalendar VTODO 구현 - **Container**: Docker + docker-compose