Skip to content

willwillis/fast-api-scripture-app

Repository files navigation

Fast Scriptures

CI codecov License: MIT Python 3.9+ FastAPI React

A modern, mobile-first scripture reading application that makes exploring the LDS scriptures fast, beautiful, and accessible.

Scripture App Screenshot

💪 Motivation

  • 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 for Vite 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

✨ Features

  • Read the scriptures
  • Search the scriptures
  • Get a random scripture
  • open scripture API

🚀 Getting Started

Welcome!

👋 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

Quick Start

Want to see it in action? Visit the live app: scriptures-fast-api.onrender.com

Quick Local Setup

# 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!

🏗️ Architecture

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.

🤝 Contributing

This is a personal project, and the functinoality is a bit contrived, but if you want to contribute, here's how to get involved:

  1. Start with our Getting Started Guide - Everything you need to know
  2. Browse the Documentation - Organized by what you want to do
  3. Check Issues - Find something to work on
  4. Join the conversation - Create issues, ask questions, share ideas

Quick Contribution Flow

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:

📡 API Reference

The FastAPI backend provides a RESTful API for accessing scripture data.

Try It Live

Quick API Example

# 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.

📚 Documentation

Our documentation is organized to help you find exactly what you need:


License

This project is open source and available under the MIT License.