- Initialize Git repository with main branch - Create comprehensive .gitignore for Node.js, React, and environment files - Set up directory structure (frontend/, backend/, docs/) - Create detailed README.md with project overview and setup instructions - Add .env.example with all required environment variables - Configure Prettier for consistent code formatting All acceptance criteria met: ✅ Git repository initialized with appropriate .gitignore ✅ Directory structure matches Technical Assumptions ✅ README.md created with project overview and setup docs ✅ .env.example file with all required environment variables ✅ Prettier config files added for code formatting consistency 🤖 Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Core Workflows
Add Book Workflow
sequenceDiagram
actor User
participant UI as Add Book Screen
participant API as Express API
participant OL as Open Library API
participant DB as PostgreSQL
User->>UI: Enter search query
UI->>API: GET /api/books/search?q=query
API->>OL: GET /search.json?q=query
OL-->>API: Book search results (JSON)
API-->>UI: Formatted search results
UI->>User: Display book results
User->>UI: Select book
User->>UI: Set deadline date
UI->>API: POST /api/books {title, author, pages, deadline}
API->>API: Validate input
API->>DB: INSERT INTO books
DB-->>API: Created book with ID
API-->>UI: 201 Created {book}
UI->>User: Navigate to Book List
UI->>User: Show success message
Log Progress Workflow
sequenceDiagram
actor User
participant UI as Log Progress Modal
participant API as Express API
participant DB as PostgreSQL
User->>UI: Tap book card
UI->>User: Open modal
User->>UI: Enter page number
UI->>API: POST /api/books/:id/logs {currentPage, logDate}
API->>API: Validate input (page > 0, <= totalPages, >= lastPage)
API->>DB: INSERT or UPDATE reading_logs
DB-->>API: Created/updated log
API-->>UI: 201/200 {log}
UI->>UI: Close modal
UI->>API: GET /api/books (refresh list)
API->>DB: SELECT books with progress calculations
DB-->>API: Books with latest logs
API-->>UI: Books with updated progress
UI->>User: Show updated status (green/yellow/red)
Calculate Progress Workflow
sequenceDiagram
participant API as Books Controller
participant PS as Pace Service
participant DB as Prisma Client
API->>DB: Get book by ID
DB-->>API: Book {totalPages, deadlineDate}
API->>DB: Get latest log for book
DB-->>API: ReadingLog {currentPage, logDate}
API->>PS: calculateRequiredPace(totalPages, currentPage, deadlineDate)
PS->>PS: pagesRemaining = totalPages - currentPage
PS->>PS: daysRemaining = deadlineDate - today
PS->>PS: requiredPace = pagesRemaining / daysRemaining
PS-->>API: requiredPace (number)
API->>PS: calculateActualPace(bookId, 7 days)
PS->>DB: Get logs from last 7 days
DB-->>PS: ReadingLog[] (last 7 days)
PS->>PS: actualPace = (latestPage - page7DaysAgo) / 7
PS-->>API: actualPace (number or null)
API->>PS: calculateStatus(requiredPace, actualPace)
PS->>PS: if actualPace >= requiredPace: "on-track"
PS->>PS: else if actualPace >= requiredPace * 0.9: "slightly-behind"
PS->>PS: else: "behind"
PS-->>API: status (string)
API-->>Client: ProgressCalculation {pagesRemaining, daysRemaining, requiredPace, actualPace, status}