Commit Graph

466 Commits

Author SHA1 Message Date
kennethreitz a41e2d2d9e Update biblical timeline dates to revised chronology
Patriarchs: Abraham 2068 BC, Isaac 2067 BC, Jacob 2007 BC, Joseph 1877 BC
Exodus: Bondage 1887-1447 BC, Exodus 1447 BC, Sinai 1447 BC
Conquest: Canaan 1407 BC, Judges 1367-1047 BC
Kingdom: Saul 1047 BC, David 1010 BC, Temple 967 BC, Division 931 BC

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 23:43:17 -05:00
kennethreitz 8546e58713 Add TOC to study guides and new Spirits & Demons guide
- Add table of contents navigation to study guide detail pages
- New study guide covering biblical teaching on demons and spiritual warfare:
  - The Reality of Evil Spirits
  - Satan: The Adversary
  - Demon Possession in the Gospels (Legion, etc.)
  - Christ's Victory Over Demons
  - Spiritual Warfare
  - Testing the Spirits
  - Demons' Final Doom

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 22:41:10 -05:00
kennethreitz 9aab232937 Fix missing bible import in study guides routes
The bible module was only imported inside get_books() but was
referenced in study_guide_detail() for verse lookups, causing
all verse texts to fail silently.

Also excludes .venv from Docker volume mount to prevent
local/container environment conflicts.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:45:55 -05:00
kennethreitz 5c1e4034f5 Remove Christ in Every Book guide, fix verse lookup fallback
- Remove Christ in Every Book study guide (redundant with Gospel in OT)
- Fix verse text lookup to initialize variable before use
- Add fallback "(See Reference)" with link when verse text unavailable
- Add chapter-only reference linking in study guides

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:43:21 -05:00
kennethreitz 56b88ee5d9 Add chapter-only reference linking in study guides
Links like "Psalm 2" and "Psalm 45" now link to chapter pages.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:37:36 -05:00
kennethreitz d6e190ddce Add format_lists filter for numbered lists in study guides
Converts (1), (2), etc. patterns into proper HTML <ol> lists.
Text after the list is wrapped in a new <p> tag.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:36:17 -05:00
kennethreitz 40970e7c3a Add 10 doctrinal and thematic study guides
Doctrinal Studies:
- The Sovereignty of God
- The Attributes of God
- The Doctrine of Scripture
- The Problem of Evil
- Covenant Theology

Thematic Studies:
- The Gospel in the Old Testament
- Christ in Every Book
- The Law and the Christian
- Faith and Works
- The Scarlet Thread

All guides follow Reformed theological framework.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:33:13 -05:00
kennethreitz 65601d8b7f Add 11 systematic theology resources and simplify sidebar
New theological resources:
- The Trinity, Christology, Pneumatology, Soteriology
- Ecclesiology, Eschatology, Kingdom of God
- Types and Shadows, Messianic Prophecies
- The Blood in Scripture, Names and Titles of Christ

Updates:
- Add new resources to homepage Theological Studies grid
- Add Systematic Theology category to /resources page
- Simplify sidebar with single "All Resources" link
- Export new data variables from data/__init__.py

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:16:35 -05:00
kennethreitz d621301b78 Consolidate resource pages into single generic template
- Created resource_index.html as a unified template for all resource pages
- Updated routes to use the generic template with configurable data
- Added link_verses and link_names filters to descriptions for automatic linking
- Added 6 new resources to /resources page (Miracles, I Am Statements,
  Beatitudes, Ten Commandments, Armor of God, Prayers)
- Deleted 6 redundant individual templates (miracles.html, prayers.html,
  beatitudes.html, ten_commandments.html, armor_of_god.html, i_am_statements.html)

This reduces code duplication and ensures consistent verse linking across
all resource pages.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:28:30 -05:00
kennethreitz 02ede39842 Expand Introduction to Spiritual Warfare section
Added 7 additional verses covering the full scope of spiritual warfare:
- Ephesians 6:13 (standing in the evil day)
- James 4:7 (resist the devil)
- Colossians 2:15 (Christ's triumph over powers)
- 1 John 4:4 (greater is He in you)
- Romans 8:37-39 (more than conquerors)
- Revelation 12:11 (overcoming by the blood)
- 2 Timothy 2:3-4 (good soldier of Christ)

Also enhanced description to emphasize Christ's victory at the cross.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:23:55 -05:00
kennethreitz e769dd29ec Add new resource pages to sidebar navigation
Added 6 new pages to the Theology section:
- I Am Statements
- Miracles of Jesus
- The Beatitudes
- Ten Commandments
- Armor of God
- Prayers of the Bible

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:20:09 -05:00
kennethreitz 651bd1fd96 Expand biblical resource pages with additional content
- Add 7 missing Minor Prophets (Obadiah, Nahum, Habakkuk, Zephaniah,
  Haggai, Zechariah, Malachi) completing all 12
- Add 3 miracles: Second Catch of Fish, Syrophoenician Woman's
  Daughter, Healing the Multitudes
- Add 4 New Testament prayers: Philippians, Thief on Cross,
  Choosing Matthias
- Add 5 Psalms of Prayer: Psalms 63, 27, 86, 143

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:51:07 -05:00
kennethreitz e6a05c9697 test 2025-11-25 18:36:27 -05:00
kennethreitz c56ee66260 Remove help cursor from sidenote numbers
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:05:08 -05:00
kennethreitz 0fd8f8bfa3 Fix template name for fruits of the spirit page
Correct template reference from fruits_of_the_spirit.html to
fruits_of_spirit.html to match actual filename.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:03:46 -05:00
kennethreitz f8cd706010 Add passage about KJV as wellspring of English language
Include cultural references (Lincoln, King) in sidenote margin.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 01:54:15 -05:00
kennethreitz 32bd177cc8 Increase homepage visual centering offset to -150px
Adjust margin-left offset for title-page and nav-links to better
visually center content accounting for the sidebar space.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 21:11:53 -05:00
kennethreitz 9c85c160da Offset homepage header to center visually with sidebar
Add margin-left offset to title-page, search, and nav-links
to compensate for sidebar space. Remove offset on mobile.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 21:09:54 -05:00
kennethreitz 9b87cb3bee Increase sidebar font size
Change from 0.7rem to 0.85rem for better readability.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 21:04:45 -05:00
kennethreitz 5d04aeb3cc Add help cursor to verse reference links with tooltips
Use CSS attribute selectors to target links to verse pages
that display tooltips on hover.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 21:03:48 -05:00
kennethreitz 93b9790dde Center search box and add help cursor to sidenotes
- Center the search/lookup section on homepage with subtle border
- Add cursor: help to sidenote numbers site-wide via base template

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 21:02:36 -05:00
kennethreitz 9cde3a125c Clean up homepage design
- Refine title page styling with lighter h1 weight and border separator
- Simplify subtitle to single line with middot separator
- Add epigraph class for verse of the day with constrained width
- Wrap search in section element

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:59:20 -05:00
kennethreitz 61be013906 Fix all deprecation warnings
- Change `example=` to `examples=[]` in FastAPI Path/Query params
- Replace `on_event("startup")` with lifespan context manager
- Update TemplateResponse to use new signature (request, name, context)

All 100 tests pass with no warnings.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:50:20 -05:00
kennethreitz bcae0d8832 Restore inject_word_markers filter for word studies
Re-add the filter function that was accidentally removed during
refactoring. This filter injects sidenote markers into verse text
for word study annotations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:39:19 -05:00
kennethreitz 3492bcf182 Fix missing inject_word_markers filter in chapter template
Remove call to non-existent filter that was breaking tests.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:36:26 -05:00
kennethreitz 23527fe2e8 Fix verse of the day centering on homepage
Move verse of the day inside title-page div to inherit centered styling.
Also change verse page wrapper from div to section.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:33:08 -05:00
kennethreitz 1e91f0b1f4 Add complete reading plans and center verse of the day
- Create comprehensive reading plans data file with complete daily readings:
  - One Year Plan (365 days with OT, NT, Psalms)
  - New Testament in 90 Days
  - Gospels and Acts in 30 Days
  - Psalms and Proverbs 31-day cycle
  - Paul's Epistles in 30 Days
  - Chronological plan (partial)

- Center verse of the day section on homepage with max-width constraint
- Add mobile responsive styling for verse of the day

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:24:02 -05:00
kennethreitz 67774f43d2 Merge modular code restructuring from friendly-roentgen
Major refactoring to split server.py into modular components:

- routes/api.py: API endpoints
- routes/resources.py: Biblical resources pages
- routes/family_tree.py: Family tree/genealogy
- routes/study_guides.py: Study guides
- routes/commentary.py: Commentary system (4,130 lines)
- routes/utility.py: Sitemap, robots.txt, health

- utils/books.py: Book name normalization
- utils/helpers.py: Common helpers
- utils/search.py: Full-text search
- utils/search_index.py: SQLite FTS5 index

- data/resources.py: Biblical resource data

Server.py reduced from ~12,600 to 2,045 lines (84% reduction).
All 100 tests passing.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:06:06 -05:00
kennethreitz 27cc988d1e Extract utility routes to routes/utility.py
- Create new utility module (~340 lines) containing:
  - sitemap.xml generation with daily caching
  - robots.txt for search engine crawlers
  - health check endpoint

- Update routes/__init__.py with new exports

- Reduce server.py from 2,394 to 2,045 lines

All 100 tests passing.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:02:19 -05:00
kennethreitz b48f3f09f9 Extract commentary system to routes/commentary.py
- Create new commentary module (4,130 lines) containing:
  - Commentary route handler
  - All commentary generation functions
  - Book introduction and historical context generators
  - Literary features, themes, and theological significance
  - Word study sidenotes and verse analysis

- Update routes/__init__.py with new exports

- Reduce server.py from 7,100+ to 2,394 lines (-66% reduction)

All 100 tests passing.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 19:54:21 -05:00
kennethreitz ba92dd674e Extract study guides routes to separate module
- Create routes/study_guides.py (943 lines) with:
  - Study guides index page
  - Individual study guide detail pages
  - All theological content for 15 study guides

- Reduce server.py from 7,969 to 7,081 lines (~888 lines removed)
- All 100 tests pass

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 19:31:51 -05:00
kennethreitz 63c826db98 Extract family tree routes to separate module
- Create routes/family_tree.py (793 lines) with:
  - All family tree routes (main, generation, person, search, lineage, etc.)
  - GEDCOM parsing functions
  - Kekulé numbering for ancestral calculations
  - SVG lineage visualization

- Reduce server.py from 8,437 to 7,969 lines (~468 lines removed)
- All 100 tests pass

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 19:25:14 -05:00
kennethreitz b974c1ff7f Extract biblical resources routes to separate module
- Create data/ package with centralized resource data (1,287 lines)
  - BIBLICAL_LOCATIONS, ANGELS_DATA, PROPHETS_DATA, NAMES_DATA
  - PARABLES_DATA, COVENANTS_DATA, APOSTLES_DATA, WOMEN_DATA
  - FESTIVALS_DATA, FRUITS_DATA

- Create routes/resources.py with thin route handlers (562 lines)
  - Maps, angels, prophets, names of God, parables
  - Covenants, apostles, women, festivals, fruits of spirit
  - Tetragrammaton special page

- Reduce server.py from 11,518 to 8,437 lines (~3,081 lines removed)
- Eliminate data duplication between list and detail routes
- All 100 tests pass

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 19:17:27 -05:00
kennethreitz e010401f96 Remove duplicate helper functions from server.py
- Remove 650+ lines of duplicate functions now imported from utils:
  - create_slug, normalize_book_name, get_related_content
  - get_chapter_popularity_score, get_chapter_popularity_explanation
  - is_verse_reference, parse_verse_reference, perform_full_text_search
  - calculate_relevance_score, highlight_search_terms, get_verse_text

- Rename local parse_verse_reference to verse_reference_to_url
  (different function - converts references to URL paths for templates)

- server.py reduced by ~650 lines, all 100 tests still pass

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 19:03:45 -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
kennethreitz 0dd02c6bf9 Add modular code structure with utils and routes packages
- Create utils/ package with:
  - books.py: Book name normalization and abbreviations
  - search.py: Full-text search functionality
  - helpers.py: Common utilities (verse parsing, daily verse, etc.)

- Create routes/ package with:
  - api.py: All /api/* endpoints extracted to APIRouter

- Update server.py to:
  - Import from new modular structure
  - Include API router for cleaner organization

This is the first step toward breaking up the 12,600+ line server.py
into maintainable modules. The old API routes in server.py are still
present as a transition - they can be removed once tests confirm the
new router works correctly.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 17:42:42 -05:00
kennethreitz d694c822ee Improve homepage layout while preserving scholarly character
- Add 3-column grid for study resources (easier to scan)
- Create dedicated Theological Studies section with explore grid
- Improve visual hierarchy with better spacing and borders
- Preserve all scholarly content: Hebrew/Greek samples, sidenotes, theological descriptions
- Keep Tufte CSS styling and newthought patterns
- Maintain mobile responsiveness

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 17:26:10 -05:00
kennethreitz 43a6b0651f Add footnote markers to cross-references
Add sequential superscript numbers to cross-references on verse pages,
making them appear like traditional footnotes. Each cross-reference now
has a numbered marker (1, 2, 3, etc.) for easy reference.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 17:01:16 -05:00
kennethreitz c51378cb89 Disable tooltips on verse number links
Prevent verse tooltips from showing when hovering over the verse
number links at the beginning of each verse paragraph. Tooltips now
only appear for verse references within the text content.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 16:55:54 -05:00
kennethreitz a5a6bacc11 Add color-coded book categories to sidebar
Apply the same color-coding scheme to the sidebar navigation:
- Each book has a colored left border matching its category
- Law (blue), Historical (green), Wisdom (purple)
- Major/Minor Prophets (orange/red)
- Gospels (gold), Acts (teal), Epistles (indigo/pink)
- Apocalyptic (crimson)

Provides visual consistency across books page and sidebar.
Colors work in both light and dark modes.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 13:42:43 -05:00
kennethreitz 0c61cb5e46 Add color-coded book categories to books page
Categorize all 66 books by type with subtle color-coding:
- Law (blue): Genesis-Deuteronomy
- Historical (green): Joshua-Esther
- Wisdom (purple): Job-Song of Solomon
- Major Prophets (orange): Isaiah-Daniel
- Minor Prophets (red): Hosea-Malachi
- Gospels (gold): Matthew-John
- Acts (teal): Acts
- Pauline Epistles (indigo): Romans-Philemon
- General Epistles (pink): Hebrews-Jude
- Apocalyptic (crimson): Revelation

Colors use subtle gradients and work well in both light/dark modes.
Legend at bottom shows all categories.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 13:35:54 -05:00
kennethreitz fae302ec37 Add /api/health endpoint to API documentation
Added /api/health endpoint for monitoring and status verification.
Returns service status, name, and version information.
Now visible in Swagger docs at /api/docs.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:48:38 -05:00
kennethreitz 6716a9daff Add API endpoints for complete book and Bible text
New endpoints:
- /api/books/{book}/text - Get all text content of a book
- /api/bible - Get the entire Bible text (all 66 books, 31,102 verses)

Both endpoints return structured JSON with verses organized by chapters.
Updated API index to include all available endpoints.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:47:35 -05:00
kennethreitz 9caac02883 Add API documentation link to homepage footer
Added link to /api/docs at the bottom of the homepage,
alongside the GitHub link.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:41:02 -05:00
kennethreitz 972025b597 Add default examples to all API endpoint parameters
Prepopulate Swagger UI input boxes with reasonable defaults:
- /api/search: q="faith", limit=10
- /api/verse: John 3:16
- /api/verse-range: Psalms 23:1-6
- /api/interlinear: John 1:1
- /api/books/{book}: Genesis
- /api/books/{book}/chapters/{chapter}: Romans 8
- /api/cross-references: John 3:16
- /api/topics/{topic_name}: faith
- /api/reading-plans/{plan_id}: chronological

Also fixed Path import conflict by aliasing pathlib.Path as PathLib.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:39:54 -05:00
kennethreitz 6248fcca81 Fix reading-plans API endpoint
Fixed TypeError where get_plan_summary() was incorrectly called with
an argument. The function takes no arguments and returns all plans,
so simplified the endpoint to use it directly.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:36:36 -05:00
kennethreitz f0bb199be5 Add comprehensive API endpoints for site content
Expose all major site content through RESTful API endpoints:
- /api/books - List all Bible books with testament categorization
- /api/books/{book} - Get book details and chapter counts
- /api/books/{book}/chapters/{chapter} - Get all verses in a chapter
- /api/cross-references/{book}/{chapter}/{verse} - Get cross-references
- /api/topics - List all topical index entries
- /api/topics/{topic_name} - Get complete topic data with subtopics
- /api/reading-plans - List all reading plans
- /api/reading-plans/{plan_id} - Get reading plan details

All endpoints support book name normalization and return structured JSON.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:33:12 -05:00
kennethreitz f8b2e495cc Add interlinear API endpoint
Add /api/interlinear/{book}/{chapter}/{verse} endpoint to fetch
word-by-word interlinear data including:
- Original Hebrew/Greek text
- Transliteration
- Strong's concordance numbers
- Parsing information
- English translations
- Definitions

The endpoint returns interlinear_available flag and gracefully
handles verses without interlinear data by returning an empty
words array.

Updated API index to include the new interlinear endpoint.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:29:48 -05:00
kennethreitz f27316ad6b Fix OpenAPI schema generation and add API index
Fix the custom OpenAPI function to use FastAPI's get_openapi
utility instead of calling app.openapi() recursively, which
was causing internal server errors.

Add an API index endpoint at /api/ that provides:
- API name, version, and description
- Links to documentation (Swagger UI, ReDoc, OpenAPI JSON)
- List of available endpoints with URL patterns

This resolves the 404 on /api/ and the OpenAPI schema errors.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:28:14 -05:00
kennethreitz f3bd35b832 Filter API docs to only show /api endpoints
Add custom OpenAPI schema generation to filter documentation
to only include routes starting with /api/. This keeps the
API docs clean and focused on the actual API endpoints without
cluttering them with web page routes.

The /api/docs will now only show:
- /api/search
- /api/verse-of-the-day
- /api/verse/{book}/{chapter}/{verse}
- /api/verse-range/{book}/{chapter}/{start}/{end}

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 12:26:10 -05:00