A modern, mobile-first scripture reading application that makes exploring the LDS scriptures fast, beautiful, and accessible.
- I wanted to kick the tires on Python's FastAPI and React (and what inspired the name
fast scriptures
) - I recently found
uv
for python and wanted to use it in a "real world" project, same forVite
on the front-end - I wanted a playground where I could run tests, use github actions, tinker with apm and observability
- I wanted to keep my web development skills fresh
- Read the scriptures
- Search the scriptures
- Get a random scripture
- open scripture API
👋 Whether you want to contribute, explore, or just run the app locally, we've got you covered:
📖 Getting Started Guide - Complete setup instructions and your first contribution
📚 Documentation Hub - All documentation organized and (hopefully) easy to navigate
Want to see it in action? Visit the live app: scriptures-fast-api.onrender.com
# Clone and setup
git clone https://github.com/willwillis/fast-api-scripture-app.git
cd fast-api-scripture-app
git submodule update --init --recursive
# Backend (Terminal 1)
cd backend && uv sync && python setup_database.py
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# Frontend (Terminal 2)
cd frontend && npm install && npm run dev
Visit http://localhost:5173 to see your local version!
Fast Scriptures is built with a modern, clean architecture:
- Frontend: React 18 + TypeScript + Tailwind CSS + Vite
- Backend: FastAPI + Python + SQLite
- Data: LDS Scriptures database (as git submodule)
- Deployment: Render (auto-deploy from main branch)
- CI/CD: GitHub Actions with comprehensive testing
See our Architecture Overview (coming soon) for detailed system design.
This is a personal project, and the functinoality is a bit contrived, but if you want to contribute, here's how to get involved:
- Start with our Getting Started Guide - Everything you need to know
- Browse the Documentation - Organized by what you want to do
- Check Issues - Find something to work on
- Join the conversation - Create issues, ask questions, share ideas
git checkout -b your-feature-name
# Make your changes
git commit -m "feat: describe your change"
git push -u origin your-feature-name
# Create a Pull Request
Other ways to be involved:
- 🐛 Report Issues: GitHub Issues
- 💡 Feature Requests: GitHub Discussions
The FastAPI backend provides a RESTful API for accessing scripture data.
- API Docs: scriptures-fast-api.onrender.com/docs - Interactive Swagger UI
- Alternative Docs: scriptures-fast-api.onrender.com/redoc - ReDoc interface
# Get a random scripture
curl -s 'https://scriptures-fast-api.onrender.com/api/scriptures/random' | jq -r '"\(.verse_title)\n\(.scripture_text)"'
# Search for "love"
curl -s 'https://scriptures-fast-api.onrender.com/api/scriptures/search?q=love&limit=3'
For complete API documentation, see our API Standards Guide.
Our documentation is organized to help you find exactly what you need:
- 📖 Getting Started - New contributor onboarding
- 📚 Documentation Hub - All docs organized by role and task
- 🛠️ Development Workflow - How we develop and collaborate
- 📋 API Standards - Comprehensive API design principles
- 🚀 Deployment Guide - How to deploy to production
- 📊 Monitoring - New Relic observability setup
This project is open source and available under the MIT License.