# Requirements ## Functional **FR1:** System shall integrate with Open Library API to search books by title, author, or ISBN **FR2:** System shall display book search results with cover images, title, author, and page count **FR3:** System shall allow user to select a book from search results and add it to their reading list **FR4:** System shall require user to set a deadline date when adding a book to the reading list **FR5:** System shall display active books in a list view on the main screen **FR6:** System shall allow user to log current page number for any active book via a quick-tap workflow (tap book → enter page → save) **FR7:** System shall calculate required pages per day as: (Total Pages - Current Page) ÷ (Days Until Deadline) **FR8:** System shall calculate actual reading pace as a rolling 7-day average of pages read per day **FR9:** System shall display both required pace and actual pace with clear labeling **FR10:** System shall show pages remaining and days remaining for each active book **FR11:** System shall provide color-coded status indicator: - Green: Actual pace ≥ Required pace (on track) - Yellow: Actual pace within 10% of required pace (slightly behind) - Red: Actual pace >10% below required pace (falling behind) **FR12:** System shall display a calendar view showing dates when user logged progress **FR13:** System shall highlight current date and deadline dates on the calendar **FR14:** System shall persist all book data and reading logs in PostgreSQL database **FR15:** System shall function as a Progressive Web App (PWA) installable via "Add to Home Screen" **FR16:** System shall work offline for viewing existing data and logging entries (sync when online) **FR17:** System shall validate page number inputs (must be numeric, >0, ≤ total pages) **FR18:** System shall prevent logging page numbers that are less than previously logged page for the same book (can only move forward) **FR19:** System shall recalculate required pace automatically each day as deadline approaches **FR20:** System shall cache book metadata from Open Library to reduce API calls and improve performance ## Non Functional **NFR1:** Page load time shall be <2 seconds on 3G mobile connection **NFR2:** Log entry save operation shall complete in <1 second **NFR3:** Application shall be mobile-responsive and fully functional on screen sizes from 320px to 1920px width **NFR4:** Application shall support last 2 versions of Chrome, Safari, Firefox, and Edge browsers **NFR5:** Application shall use HTTPS for all communications (enforced by Coolify/PWA requirements) **NFR6:** Application shall sanitize all user inputs to prevent XSS attacks **NFR7:** Application shall use parameterized queries or ORM to prevent SQL injection **NFR8:** Application shall deploy as Docker containers to Coolify infrastructure **NFR9:** Database shall have automated backup mechanism via Coolify PostgreSQL management **NFR10:** Application shall respect Open Library API rate limits and implement appropriate caching/retry logic **NFR11:** Frontend bundle size shall be optimized for mobile (<500KB initial load) **NFR12:** Application shall handle Open Library API failures gracefully with user-friendly error messages **NFR13:** PWA service worker shall cache static assets and implement cache-first strategy for offline support **NFR14:** Application shall be accessible and usable with keyboard navigation for basic workflows **NFR15:** All REST API endpoints shall validate inputs and return appropriate HTTP status codes and error messages ---