📚 인상 깊은 구절을 사진 한 장으로 — AI와 시작하는 독서 토론
책을 읽다가 마음에 든 구절이나 페이지를 사진으로 찍거나 텍스트로 입력하면, AI가 그 내용을 바탕으로 1:1 깊이 있는 토론을 시작합니다. 혼자 책을 읽고 끝내기엔 아쉬운, 그 한 페이지에 담긴 생각을 함께 나누고 정리하는 도구입니다.
- 📖 책 / 작가 검색: 외부 도서 API 기반 검색·선택
- 📸 인상 깊은 구절 캡처: 사진 업로드 또는 직접 텍스트 입력
- 💬 AI 독서 토론: Claude API 기반 1:1 깊이 대화
- 📝 토론 기록 저장: 본인의 독서 노트로 누적
| 영역 | 기술 |
|---|---|
| 프레임워크 | Next.js 15+ (App Router) |
| 언어 | TypeScript (strict mode) |
| 스타일링 | Tailwind CSS |
| 인증·DB·스토리지 | Supabase (Auth + Postgres + Storage) |
| AI | Claude API (Anthropic SDK, multimodal vision) |
| 배포 | Vercel |
| 테스트 | Vitest + Playwright |
Clean Architecture + Domain First 원칙으로 설계되어, 비즈니스 로직이 프레임워크·BaaS에 의존하지 않습니다. 도메인 코드는 lib/domain/에 격리되어 있어, 추후 별도 백엔드(Nest 등)로 분리하더라도 그대로 이식 가능합니다.
자세한 아키텍처 결정·디렉토리 구조·전환 매트릭스는 docs/ARCHITECTURE.md를 참조하세요.
🚧 초기 설정 중. 아래 명령어는 프로젝트 부트스트랩 후 활성화됩니다.
# 의존성 설치
pnpm install
# 환경 변수 설정
cp .env.local.example .env.local
# NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, ANTHROPIC_API_KEY 등 입력
# Supabase 로컬 실행
supabase start
# 개발 서버
pnpm devchaekdam/
├── app/ # Next.js App Router (Presentation)
├── lib/
│ ├── domain/ # 순수 도메인 로직 (외부 의존 0)
│ ├── application/ # 유스케이스
│ └── infrastructure/ # Supabase / Claude 어댑터
├── components/ # 재사용 UI 컴포넌트
├── supabase/ # 마이그레이션·RLS 정책
├── docs/ # 아키텍처·결정 기록
└── .claude/ # Claude Code 프로젝트 규칙
미정 (개인 프로젝트)