diff --git a/AGENTS.md b/AGENTS.md index a62165b..e1a5d6c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,7 +9,7 @@ 사용자의 핵심 요구사항: 1. **TickTick 스타일 To-Do 리스트 독립 웹앱**: - 체크리스트는 **메인 - 하위(Sub-task)** 계층 구조를 갖춤. - - 메인 체크리스트에 귀속된 **넓직한 메모장(Markdown 노트)** 제공. + - **적응형(Adaptive) 와이드 메모장**: 우측 패널의 대부분을 메모장이 차지하며, 작성한 마크다운이 실제 웹 문서처럼 미려한 GUI 형태로 렌더링(Preview & Live Checkbox)되어야 함. 2. **셀프호스팅 & 프라이버시 중심 멀티유저**: - SNS 형태가 아닌 개인별 프라이버시가 완벽히 보장되는 독립 멀티유저 플랫폼. - Docker 배포 지원 (PostgreSQL 포함). @@ -20,66 +20,52 @@ - 모바일/데스크톱 설치 가능 및 오프라인 캐싱 지원. 5. **디자인 시스템**: - TickTick 급의 심플함 + OneUI / Material You / Vercel 스타일의 직관적이고 미려한 UI. - - 3-Panel 반응형 레이아웃 (사이드바 - 태스크 목록 - 넓은 상세 메모 패널). -6. **추가 요구사항 (Phase 2)**: - - **다국어 (i18n)**: 영어(기본) → 한국어 → 일본어 순서 지원. + - 3-Panel 반응형 레이아웃 (사이드바 - 태스크 목록 - 와이드 상세 메모 패널). +6. **추가 요구사항 (Phase 2 & Phase 3)**: + - **다국어 (i18n)**: 영어(기본) → 한국어 → 일본어 순서 지원 (커스텀 팝오버 UI 탑재). - **테마 모드**: 시스템(System) / 라이트(Light) / 다크(Dark) 3-Way 토글. - - **DB 없는 데모/미리보기 모드**: 로컬 환경에서 DB 구동 없이도 UI/UX 및 모든 기능을 즉시 시연 및 확인할 수 있는 Demo 모드 지원. + - **DB 없는 데모/미리보기 모드**: 로컬 환경에서 DB 구동 없이도 UI/UX 및 모든 기능을 즉시 시연 및 확인할 수 있는 Demo 모드 (`/demo`, LocalStorage 연동). - **인프라**: Nginx Proxy Manager (NPM)로 역방향 프록시할 예정이므로 자체 SSL/Nginx 없이 포트 3000 컨테이너로 동작. --- -## 2. 기술 스택 (Tech Stack) +## 2. 주요 컴포넌트 구조 -- **Frontend**: Next.js 16 (App Router), TypeScript, Vanilla CSS (TailwindCSS 지양, 고품질 CSS Variable 디자인 시스템) -- **Backend / API**: Next.js API Routes (Route Handlers) -- **ORM / DB**: Prisma ORM, PostgreSQL (Production/Docker) + Local/Demo In-Memory/LocalStorage Fallback -- **Auth**: NextAuth.js (Credentials Provider, JWT 전략) -- **DAV Server**: `/api/dav/[...path]` (iCalendar VTODO 표준 구현, Basic Auth 지원) -- **PWA**: Service Worker (`public/sw.js`), Web App Manifest (`public/manifest.json`) -- **Container**: `Dockerfile` (Node 20 Alpine Standalone), `docker-compose.yml` (PostgreSQL 16 + Auto migration + App) +``` +src/ +├── app/ +│ ├── layout.tsx / page.tsx / providers.tsx +│ ├── demo/page.tsx ← DB 연결 없이 LocalStorage 기반으로 구동되는 완전한 데모 페이지 +│ ├── login/page.tsx / register/page.tsx +│ └── api/ (auth, lists, tasks, import, dav) +├── components/ +│ ├── layout/ +│ │ ├── AppShell.tsx ← 3-Panel 메인 컨테이너 +│ │ └── Sidebar.tsx ← 프로젝트 목록, 언어 셀렉터, 테마 토글, 유저 메뉴 +│ ├── tasks/ +│ │ ├── TaskList.tsx ← 중앙 체크리스트 (하위 태스크 아코디언, 빠른 추가) +│ │ ├── TaskDetail.tsx ← 우측 상세 패널 (컴팩트 메타바 + 와이드 메모장 + 하단 하위할일) +│ │ └── MarkdownNoteEditor.tsx ← 👁️ Preview / ✏️ Edit 탭, 마크다운 툴바, 인터랙티브 체크박스 +│ └── ui/ +│ └── LanguageSelector.tsx ← OneUI/Vercel 스타일 커스텀 글래스모피즘 언어 팝오버 +└── lib/ + ├── i18n/ (en, ko, ja 사전 및 useI18n 훅) + ├── mockData.ts ← Demo 모드용 LocalStorage Store + ├── auth.ts / prisma.ts +``` --- -## 3. 주요 결정 및 트러블슈팅 히스토리 +## 3. 롤백 포인트 (Checkpoints) -### [버그 1] Next.js 16 `middleware` Deprecation -- **현상**: Next.js 16 최신 버전에서 `src/middleware.ts` 빌드 시 오류 발생. -- **해결**: Next.js 16 스펙에 맞춰 `src/proxy.ts`로 마이그레이션 (`export async function proxy(...)`). - -### [버그 2] DAVx⁵ CalDAV/CardDAV 인증 차단 문제 -- **현상**: `src/proxy.ts`에서 미인증 세션을 `/login`으로 리다이렉트하여, DAVx⁵의 HTTP Basic Auth 요청이 차단됨. -- **해결**: `publicPaths`에 `/api/dav`를 추가하여 Basic Auth는 라우트 핸들러 자체에서 검증하도록 예외 처리. - -### [버그 3] DB 미연결 시 `register/page.tsx` SyntaxError -- **현상**: DB가 닫혀있을 때 서버가 500 에러를 반환하면 프론트엔드의 `res.json()` 호출 시 JSON 파싱 오류 발생. -- **해결**: 모든 API Route에 try-catch를 씌우고, 클라이언트 `res.json()` 파싱부를 안전하게 try-catch 처리. - -### [버그 4] TaskDetail 자동저장 Stale Closure & 타이머 누수 -- **현상**: debounce 저장 타이머가 태스크 전환 시 이전 태스크 ID로 저장되거나 언마운트 시 메모리 누수 위험. -- **해결**: `useRef(currentTaskId)`와 언마운트 cleanup 추가. +- **`checkpoint-v1.0`** (`backup-v1.0`): 기본 Next.js 16 + Prisma + NextAuth + CardDAV 기반 구조. +- **`checkpoint-v2.0`**: i18n(EN/KO/JA), 3-Way Theme(System/Light/Dark), Demo Mode 탑재. +- **`checkpoint-v2.1`**: **(현재 최신)** 리치 마크다운 GUI 렌더러(MarkdownNoteEditor), 적응형 와이드 메모장 레이아웃, 커스텀 LanguageSelector 팝오버 적용. --- -## 4. 롤백 포인트 (Checkpoints) +## 4. 향후 작업 가이드 (For Next Agents) -- **Git Tag `checkpoint-v1.0` / Branch `backup-v1.0`**: 기본 Full-Stack 구조 및 버그픽스 완료 시점. -- 언제든 문제가 발생하면 `git checkout checkpoint-v1.0`으로 복구 가능. - ---- - -## 5. 향후 작업 가이드 (For Next Agents) - -1. **디자인 무결성**: 바닐라 CSS 변수(`var(--accent)`, `var(--bg-primary)` 등)를 준수하고 모바일 반응형(768px 이하)을 항상 고려할 것. -2. **다국어(i18n)**: 텍스트 추가 시 `src/lib/i18n`의 en/ko/ja 사전에 키를 반드시 함께 등록할 것. -3. **데모 모드 지원**: DB 연결 불가 상태에서도 사용자가 UI를 체험할 수 있는 환경을 유지할 것. - - - -# This is NOT the Next.js you know - -This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices. - -This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean. - - +1. **메모장 우선 원칙**: 메모장은 항상 상세 패널의 메인 공간(`flex: 1`)을 차지하도록 유지할 것. +2. **마크다운 상호작용**: Preview 모드에서 `- [ ]` 체크박스 클릭 시 원본 텍스트의 체크 상태가 토글되는 기능을 유지할 것. +3. **i18n & 테마 무결성**: 새로운 텍스트는 `src/lib/i18n`의 en, ko, ja 사전에 모두 추가할 것. \ No newline at end of file diff --git a/chamgojaryo/워홀 입국 후 - TickTick.html b/chamgojaryo/워홀 입국 후 - TickTick.html new file mode 100644 index 0000000..c351b91 --- /dev/null +++ b/chamgojaryo/워홀 입국 후 - TickTick.html @@ -0,0 +1,225 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx스노코 + 매트리스, 이불, 베개xxxxxxxxxx아마존 재팬, 라쿠텐, 이케아, 무인양품, 니토리아마존 프라임 가입해서 배송일 입주일로 지정해서 주문하기스노코 + 매트리스 or 일체형 (매트리스 단독이면 곰팡이 이슈, 겨울에 추움)https://www.nitori-net.jp/ec/product/5651774/