- 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>
28 lines
1.1 KiB
Markdown
28 lines
1.1 KiB
Markdown
# External APIs
|
|
|
|
## Open Library API
|
|
|
|
- **Purpose:** Search for books by title, author, or ISBN to populate book metadata
|
|
- **Documentation:** https://openlibrary.org/dev/docs/api/search
|
|
- **Base URL(s):** https://openlibrary.org
|
|
- **Authentication:** None (public API, no API key required)
|
|
- **Rate Limits:** ~100 requests per 5 minutes (unofficial limit, respect fair use)
|
|
|
|
**Key Endpoints Used:**
|
|
- `GET /search.json?q={query}` - Search for books by keyword, returns title, author, pages, cover IDs
|
|
|
|
**Cover Images:**
|
|
- Base URL: `https://covers.openlibrary.org/b/id/{cover_id}-{size}.jpg`
|
|
- Sizes: S (small), M (medium), L (large)
|
|
- Example: `https://covers.openlibrary.org/b/id/8233808-M.jpg`
|
|
|
|
**Integration Notes:**
|
|
- Cache search results for 1 hour to reduce API calls
|
|
- Implement exponential backoff if rate limited (429 response)
|
|
- Fallback to manual entry if API unavailable
|
|
- Extract `number_of_pages_median` or first `number_of_pages` value for total pages
|
|
- Some books may not have cover images (use placeholder)
|
|
- Consider Google Books API as backup if Open Library quality is insufficient
|
|
|
|
---
|