Commit Graph

5 Commits

Author SHA1 Message Date
kennethreitz 1279fde038 Fix case-insensitive book name redirects (301)
URLs like /book/gen/chapter/1/verse/3 now properly redirect
to /book/Genesis/chapter/1/verse/3 with a 301 status.

The normalize_book_name function now does case-insensitive lookup
for both abbreviations and canonical book names.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 19:14:05 -05:00
kennethreitz 498b191afa Migrate hardcoded data to JSON files for better maintainability
Move static reference data from Python modules to JSON files in data/ directory:
- Bible metadata (testament lists, book abbreviations) → bible_metadata.json
- Chapter explanations and popularity scores → chapter_explanations.json, popular_chapters.json
- Featured verses for verse of the day → featured_verses.json
- Resource slugs for sitemap generation → resource_slugs.json

Benefits: easier content updates, better separation of data and code, enables non-developer content management. All 252 tests passing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 17:45:26 -05:00
kennethreitz 9def1c4ce9 Fix Song of Solomon book name mapping (reverse direction)
Correct the book name normalization to map FROM "Song of Solomon"
TO "Solomon's Song" (the name used in verses-1769.json).

Changes:
- Reverse all Song mappings to point to "Solomon's Song"
- Update OT_BOOKS to use "Solomon's Song" (matching verses file)
- Map "Song of Solomon", "Song of Songs", and "Canticles" → "Solomon's Song"

This fixes the 404 error on /book/Song%20of%20Solomon by ensuring
that alternative names redirect to the canonical verses file name.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 09:25:52 -05:00
kennethreitz 5f52497a43 Fix Song of Solomon book name routing
Add "Solomon's Song" to BOOK_ABBREVIATIONS mapping to fix URL
routing. The KJV verses file (verses-1769.json) uses "Solomon's Song"
as the book name, but the book data uses "Song of Solomon". This
mapping ensures normalize_book_name() correctly handles the variant.

Fixes URL: https://kjvstudy.org/book/Solomon's%20Song

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 09:23:05 -05:00
kennethreitz 83df2a37ed Refactor: Split server.py into modular packages
- Create kjvstudy_org/utils/ package:
  - books.py: Book name normalization, abbreviations, testament categorization
  - helpers.py: Utility functions (create_slug, get_verse_text, etc.)
  - search.py: Full-text search with FTS5 support
  - search_index.py: SQLite FTS5 search index implementation

- Create kjvstudy_org/routes/ package:
  - api.py: All /api/* endpoints as FastAPI router

- Update server.py:
  - Import from new modular packages
  - Include API router via app.include_router()
  - Remove duplicate API routes

- Fix test_edge_cases.py to accept 404 for reversed verse ranges

All 100 tests pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 18:59:35 -05:00