Skip to content

Latest commit

Β 

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Scriptorium Bible App

Scriptorium Bible App

A comprehensive Bible study platform featuring a 502-day chronological reading plan spanning 13 Biblical Eras, from Genesis to Revelation. Built with React, TypeScript, Firebase, and TailwindCSS.

🌐 Live App: https://scriptorium-bible-app.web.app


✨ Features

πŸ“– 502-Day Chronological Reading Plan

  • 13 Biblical Eras with color-coded navigation
  • Complete Bible coverage from Creation to Revelation
  • Daily readings with discussion prompts & prayer focus
  • Key themes and cross-references for deeper study
  • Auto-tagging for journal entries

πŸ“š Biblical Eras

Era Name Days Content
1 🌍 Era of Beginnings 1-14 Genesis 1-11
2 β›Ί Era of the Patriarchs 15-45 Genesis 12-50
3 πŸ”₯ Era of Egypt & Exodus 46-75 Exodus, Leviticus
4 🏜️ Era of the Wilderness 76-105 Numbers, Deuteronomy
5 βš”οΈ Era of Conquest 106-125 Joshua
6 βš–οΈ Era of the Judges 126-150 Judges, Ruth
7 πŸ‘‘ Era of United Kingdom 151-200 Samuel, Kings, Chronicles
8 πŸ›οΈ Era of Divided Kingdom 201-260 Kings, Chronicles, Prophets
9 ⛓️ Era of Exile 261-290 Ezekiel, Daniel, Lamentations
10 πŸ—οΈ Era of Return 291-310 Ezra, Nehemiah, Malachi, Job
11 πŸ“œ Era of Wisdom & Worship 311-354 Psalms, Proverbs, Ecclesiastes, Song of Solomon
12 ✝️ Era of the Messiah 355-422 The Four Gospels (chronologically)
13 β›ͺ Era of the Church 423-502 Acts, Epistles, Revelation

πŸ› οΈ Core Features

  • Audio Bible - Listen to Scripture with BibleBrain integration (KJV, WEB)
  • Verse Sync - Automatic verse highlighting during audio playback
  • Journal - Personal notes with auto-tagging from readings
  • Prayer Tracking - Track prayer requests and answers
  • Groups - Community study groups
  • Discussions - Engage with discussion prompts
  • Dark/Light Mode - Full theme support
  • Progress Tracking - Resume where you left off
  • Mobile Responsive - Works on all devices

πŸ“± PWA & Offline Support (NEW)

  • Installable App - Add to home screen on any device
  • Offline Bible Reading - Read without internet connection
  • Service Worker - Automatic caching of Bible text & assets
  • IndexedDB Storage - Local caching of readings & progress
  • Sync on Reconnect - Automatic sync when back online

πŸ”” Push Notifications (NEW)

  • Daily Reading Reminders - Configurable reminder times
  • Streak Alerts - Get notified about streak milestones
  • Weekly Digest - Summary of your reading progress
  • Firebase Cloud Messaging - Reliable cross-platform delivery

πŸ† Reading Streaks & Achievements (NEW)

  • 22 Achievements - Unlock badges for milestones
  • Streak Tracking - Track consecutive reading days
  • Weekly Progress - Visual calendar of your week
  • Gamification - Encourages consistent engagement
  • Categories: Streak, Progress, Special, Social

πŸ“š Study Resources

  • Cross-References - 30,000+ verses with 396,000+ references (Treasury of Scripture Knowledge + MetaV)
  • Commentary - Matthew Henry's Concise Commentary
  • Word Study - Greek & Hebrew lexicons (Strong's) with STEPBible morphology
  • Interlinear View - Original language with translation
  • Morphology - 1,645 Greek codes + 922 Hebrew codes from STEPBible
  • Family Trees - 2,826 biblical people with relationships from STEPBible TIPNR
  • Versification - Hebrew/Greek verse numbering differences
  • Creeds & Confessions - Westminster, Heidelberg, etc.
  • Patristic Quotes - Early Church Father writings

πŸ•°οΈ Church History

  • Biblical Timeline - Interactive timeline of events
  • Church Fathers - Browse patristic writings
  • Historical Maps - Biblical geography
  • People of the Bible - Biographical information

🎡 Hymnal

  • Classic Hymns - Traditional hymn collection
  • Lyrics & History - Background on each hymn
  • Search & Browse - Find hymns by title or theme

🧠 Scriptorium Pulse (NEW)

  • Theological Diagnostic - 49-question assessment
  • 7 Categories: Faith, Scripture, Salvation, Church, Ethics, Identity, Relationships
  • Personalized Insights - Scriptural recommendations based on results
  • Progress Tracking - Save and compare results over time

πŸ“€ Sharing & Social (NEW)

  • Study Notes Sharing - Share journal entries publicly, privately, or via link
  • PDF Export - Export journal entries to PDF (single or batch)
  • Community Annotations - Add notes, insights, questions, or prayers to any verse
  • Activity Feed - See what others in the community are reading
  • Follow Users - Follow other readers and see their activity
  • Verse Sharing - Share verses with your followers

πŸ“‹ Reading Plans (NEW)

  • Custom Plans - Create your own reading plans with any passages
  • Plan Templates - Bible-in-a-Year and other pre-made templates
  • Progress Tracking - Track completion across multiple plans
  • Start/Pause/Resume - Flexible plan management

πŸ” Advanced Search (NEW)

  • Fuzzy Matching - Find results even with typos
  • Category Filters - Search journal, sermons, Bible books
  • Bible Reference Parsing - Type "John 3:16" to go directly
  • Recent Searches - Quick access to previous searches

β™Ώ Accessibility (NEW)

  • Font Size Controls - Adjustable text sizing
  • Dyslexic-Friendly Font - OpenDyslexic font option
  • Line Spacing - Normal, relaxed, or loose spacing
  • High Contrast Mode - Enhanced visibility
  • Reduce Motion - Disable animations
  • Screen Reader Mode - Optimized for assistive technology
  • Enhanced Focus Indicators - Clear keyboard navigation

πŸ”— Enhanced Cross-References (NEW)

  • 30,412 Verses Covered - Nearly complete Bible coverage (up from 2,602)
  • 396,062 Cross-References - Comprehensive verse connections
  • Two-Tier Loading - Popular verses bundled, full data loaded on-demand
  • Verse Text Preview - See referenced verse text inline
  • Filter by Testament - Old Testament / New Testament filter
  • Parallel Passages - Gospel parallels highlighted
  • Sort Options - By relevance, book order, or votes
  • Improved UI - Cards with color coding and badges

πŸ”¬ STEPBible Scholarly Data (NEW)

  • Greek Morphology - 1,645 grammatical codes with explanations
  • Hebrew Morphology - 922 grammatical codes with explanations
  • Biblical Family Trees - 2,826 people with parent/child/spouse relationships
  • Versification Mapping - Differences between English, Hebrew, and Greek numbering
  • Color-Coded Parts of Speech - Visual grammar indicators in Word Study

πŸš€ Tech Stack

Technology Purpose
React 18 UI Framework
TypeScript Type Safety
Vite Build Tool & Dev Server
TailwindCSS Styling
Firebase Auth Authentication (Google, Email, Anonymous)
Firestore Cloud Database
Firebase Hosting Deployment
Firebase Cloud Messaging Push Notifications
Firebase Analytics User Behavior Tracking
Firebase App Check API Protection
Sentry Error Tracking
vite-plugin-pwa PWA & Service Worker
Workbox Runtime Caching
IndexedDB Offline Storage
jsPDF PDF Export
React Router v6 Client-side Routing
Lucide React Icons
date-fns Date Utilities

πŸ“ Project Structure

scriptorium-react/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/             # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ layouts/            # Layout components
β”‚   β”‚   β”œβ”€β”€ StreakDisplay.tsx   # Reading streak UI
β”‚   β”‚   β”œβ”€β”€ AchievementsDisplay.tsx
β”‚   β”‚   β”œβ”€β”€ NotificationSettings.tsx
β”‚   β”‚   β”œβ”€β”€ OfflineIndicator.tsx
β”‚   β”‚   β”œβ”€β”€ PWAInstallPrompt.tsx
β”‚   β”‚   β”œβ”€β”€ AudioPlayer.tsx
β”‚   β”‚   β”œβ”€β”€ CrossReferencesPanel.tsx
β”‚   β”‚   β”œβ”€β”€ CommentaryPanel.tsx
β”‚   β”‚   β”œβ”€β”€ WordStudy.tsx
β”‚   β”‚   β”œβ”€β”€ InterlinearView.tsx
β”‚   β”‚   β”œβ”€β”€ ShareNoteModal.tsx  # Note sharing modal
β”‚   β”‚   β”œβ”€β”€ CommunityAnnotations.tsx
β”‚   β”‚   β”œβ”€β”€ ActivityFeed.tsx    # Social activity feed
β”‚   β”‚   β”œβ”€β”€ AccessibilitySettings.tsx
β”‚   β”‚   └── GuestBanner.tsx
β”‚   β”œβ”€β”€ contexts/               # React Context providers
β”‚   β”‚   β”œβ”€β”€ AuthContext.tsx     # Firebase Auth context
β”‚   β”‚   β”œβ”€β”€ ThemeContext.tsx    # Dark/Light mode
β”‚   β”‚   β”œβ”€β”€ SearchContext.tsx   # Global search
β”‚   β”‚   └── AccessibilityContext.tsx
β”‚   β”œβ”€β”€ data/                   # Static data files
β”‚   β”‚   β”œβ”€β”€ biblicalEras.ts     # 502-day reading plan
β”‚   β”‚   β”œβ”€β”€ churchFathers.ts    # Patristic data
β”‚   β”‚   β”œβ”€β”€ cross-references.json # Popular cross-refs (embedded)
β”‚   β”‚   β”œβ”€β”€ mhcc-commentary.json
β”‚   β”‚   β”œβ”€β”€ creeds/             # Creeds & confessions
β”‚   β”‚   └── stepbible/          # STEPBible data (morphology, people)
β”‚   β”‚       β”œβ”€β”€ greekMorphology.json
β”‚   β”‚       β”œβ”€β”€ hebrewMorphology.json
β”‚   β”‚       └── biblePeople.json
β”‚   β”œβ”€β”€ lib/                    # Utilities & services
β”‚   β”‚   β”œβ”€β”€ firebase.ts         # Firebase config + Analytics
β”‚   β”‚   β”œβ”€β”€ firestore.ts        # Firestore CRUD operations
β”‚   β”‚   β”œβ”€β”€ achievements.ts     # Streaks & achievements
β”‚   β”‚   β”œβ”€β”€ notifications.ts    # FCM push notifications
β”‚   β”‚   β”œβ”€β”€ offlineStorage.ts   # IndexedDB caching
β”‚   β”‚   β”œβ”€β”€ crossReferences.ts  # TSK integration
β”‚   β”‚   β”œβ”€β”€ mhccCommentary.ts   # Commentary API
β”‚   β”‚   β”œβ”€β”€ interlinearApi.ts   # Greek/Hebrew
β”‚   β”‚   β”œβ”€β”€ bibleBrain.ts       # Audio API
β”‚   β”‚   β”œβ”€β”€ sharing.ts          # Note sharing system
β”‚   β”‚   β”œβ”€β”€ pdfExport.ts        # PDF export (jsPDF)
β”‚   β”‚   β”œβ”€β”€ communityAnnotations.ts
β”‚   β”‚   β”œβ”€β”€ advancedSearch.ts   # Fuzzy search
β”‚   β”‚   β”œβ”€β”€ readingPlans.ts     # Custom reading plans
β”‚   β”‚   β”œβ”€β”€ social.ts           # Social features
β”‚   β”‚   └── a11y.ts             # Accessibility utilities
β”‚   β”œβ”€β”€ pages/                  # Page components
β”‚   β”‚   β”œβ”€β”€ auth/               # Sign in/up pages
β”‚   β”‚   β”œβ”€β”€ paths/              # Reading path pages
β”‚   β”‚   β”œβ”€β”€ resources/          # Study resources
β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx
β”‚   β”‚   β”œβ”€β”€ Achievements.tsx
β”‚   β”‚   β”œβ”€β”€ Settings.tsx
β”‚   β”‚   β”œβ”€β”€ Pulse.tsx           # Theological diagnostic
β”‚   β”‚   β”œβ”€β”€ ReadingPlans.tsx    # Reading plans management
β”‚   β”‚   β”œβ”€β”€ ReadingPlanNew.tsx  # Create reading plan
β”‚   β”‚   β”œβ”€β”€ SharedNote.tsx      # Public shared notes
β”‚   β”‚   └── ...
β”‚   └── types/                  # TypeScript types
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ icons/                  # PWA icons
β”‚   └── data/                   # Large JSON data files
β”‚       └── cross-refs/         # 66 book-specific cross-ref files
β”œβ”€β”€ scripts/                    # Build & data scripts
β”‚   └── backup-firestore.mjs    # Firestore backup
β”œβ”€β”€ .env                        # Environment variables
β”œβ”€β”€ firebase.json               # Firebase config
β”œβ”€β”€ firestore.rules             # Security rules
β”œβ”€β”€ vite.config.ts              # Vite + PWA config
└── package.json

🏁 Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Firebase project

Installation

# Clone the repository
git clone <your-repo-url>
cd scriptorium-react

# Install dependencies
npm install

# Start development server
npm run dev

Environment Variables

Create a .env file in the root directory:

# Firebase (required)
VITE_FIREBASE_API_KEY=your-api-key
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your-sender-id
VITE_FIREBASE_APP_ID=your-app-id

# Push Notifications (required for notifications)
VITE_FIREBASE_VAPID_KEY=your-vapid-key

# ESV API (optional - for ESV translation)
VITE_ESV_API_KEY=your-esv-api-key

# BibleBrain Audio API (optional)
# Get a free API key at: https://4.dbt.io/api_key/request
VITE_BIBLE_BRAIN_KEY=your-bible-brain-api-key

# Security & Monitoring (optional but recommended)
# VITE_RECAPTCHA_SITE_KEY=your-recaptcha-site-key
# VITE_SENTRY_DSN=https://your-key@sentry.io/project-id

πŸ”₯ Firebase Setup

1. Create Firebase Project

  1. Go to Firebase Console
  2. Create a new project
  3. Enable Authentication (Email/Password + Google)
  4. Create Firestore database

2. Firestore Security Rules

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Users can read/write their own data
    match /users/{userId}/{document=**} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
    
    // Public read for groups, authenticated write
    match /groups/{groupId} {
      allow read: if true;
      allow write: if request.auth != null;
    }
  }
}

3. Deploy to Firebase Hosting

# Build the app
npm run build

# Deploy to Firebase
firebase deploy --only hosting

πŸ“œ Available Scripts

Command Description
npm run dev Start development server
npm run build Build for production
npm run preview Preview production build
npm run lint Run ESLint

πŸ—‚οΈ Key Files

src/data/biblicalEras.ts

Contains the complete 502-day reading plan with:

  • Day number and title
  • Scripture references
  • Era assignment
  • Discussion prompts
  • Prayer focus
  • Key themes
  • Cross references
  • Auto-tags for journaling

src/pages/paths/ChronologicalPath.tsx

The main reading interface featuring:

  • Era-based navigation
  • Progress tracking
  • Bible text fetching (KJV via bible-api.com)
  • Mark complete functionality
  • Discussion and prayer integration

src/lib/firestore.ts

Firestore CRUD operations for:

  • Journal entries
  • Prayer requests
  • Reading progress
  • User settings

🎨 Theming

Dark mode is implemented using Tailwind's class strategy:

// Toggle dark mode
document.documentElement.classList.toggle('dark')

Colors are defined in tailwind.config.js and use CSS variables for easy customization.


πŸ“± Responsive Design

The app is fully responsive with:

  • Mobile-first approach
  • Collapsible sidebar navigation
  • Touch-friendly controls
  • Optimized reading experience

πŸ” Authentication

Firebase Authentication supports:

  • Google Sign-In - One-click authentication
  • Email/Password - Traditional credentials
  • Protected Routes - Automatic redirects for unauthenticated users
  • Persistent Sessions - Stay logged in across visits

πŸ“Š Data Models

Reading Progress

interface ReadingProgress {
  day: number
  completed: boolean
  completedAt?: Date
  notes?: string
}

Journal Entry

interface JournalEntry {
  id: string
  title: string
  content: string
  tags: string[]
  createdAt: Date
  updatedAt: Date
}

Prayer Request

interface Prayer {
  id: string
  content: string
  answered: boolean
  createdAt: Date
  answeredAt?: Date
}

🚒 Deployment

The app is deployed on Firebase Hosting:

# Build and deploy
npm run build && firebase deploy --only hosting

Live URL: https://scriptorium-bible-app.web.app


πŸ›£οΈ Roadmap

βœ… Completed

  • PWA with offline support (Service Worker + IndexedDB)
  • Push notifications for daily readings (Firebase Cloud Messaging)
  • Audio Bible integration (BibleBrain API)
  • Reading streaks & achievements (22 badges)
  • Cross-references panel (Treasury of Scripture Knowledge)
  • Commentary integration (Matthew Henry's Concise)
  • Word Study (Greek & Hebrew lexicons)
  • Interlinear Bible view
  • Creeds & Confessions library
  • Church Fathers / Patristic quotes
  • Biblical Timeline
  • Hymnal
  • People & Places of the Bible
  • Firebase App Check (API protection)
  • Sentry error tracking
  • Firebase Analytics
  • Firestore security rules
  • Scriptorium Pulse theological diagnostic
  • Guest authentication (Continue as Guest)
  • Study notes sharing (public/private/link-only visibility)
  • Export journal to PDF (single & batch export with jsPDF)
  • Community annotations on verses (notes, insights, questions, prayers)
  • Advanced search (fuzzy matching, filters, Bible reference parsing)
  • User-created reading plans (custom plans with templates)
  • Social features (following, activity feed, verse sharing)
  • Accessibility improvements (dyslexic font, line spacing, high contrast, screen reader mode, enhanced focus indicators)
  • Enhanced cross-references (verse text preview, OT/NT filters, parallel passage detection, sorting options)
  • STEPBible morphology integration (Greek/Hebrew grammatical codes)
  • Biblical family trees (2,826 people from STEPBible TIPNR)
  • Expanded cross-references (30,412 verses with 396,062 references from MetaV)

🚧 In Progress

  • More Bible translations (NIV, ESV, NASB)
  • Multi-language support

πŸ“‹ Planned

  • Sermon preparation tools
  • Bible memory verse tracker with spaced repetition
  • Reading plan templates (30-day, 90-day, etc.)
  • Daily devotional content integration
  • In-app tutorials and onboarding

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is for personal/educational use. Contact the maintainer for licensing questions.


πŸ™ Acknowledgments


Built with ❀️ for deeper Bible study


πŸ’‘ Future Enhancement Ideas

  • Expand Bible translation options (NIV, ESV, NASB, etc.)
  • Provide multi-language support for international users
  • Integrate more audio versions and languages
  • Add verse memorization tools with spaced repetition
  • Implement sermon preparation workspace
  • Create Bible study templates for small groups
  • Add daily devotional content integration
  • Build in-app tutorials and onboarding for new users

About

A comprehensive Bible study platform built with React, TypeScript, Firebase, and Vite. Features STEPBible lexicon, reading plans, and theological tools.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages