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
- 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
| 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 |
- 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
- 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
- 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
- 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
- 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
- Biblical Timeline - Interactive timeline of events
- Church Fathers - Browse patristic writings
- Historical Maps - Biblical geography
- People of the Bible - Biographical information
- Classic Hymns - Traditional hymn collection
- Lyrics & History - Background on each hymn
- Search & Browse - Find hymns by title or theme
- 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
- 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
- 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
- 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
- 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
- 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
- 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
| 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 |
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
- Node.js 18+
- npm or yarn
- Firebase project
# Clone the repository
git clone <your-repo-url>
cd scriptorium-react
# Install dependencies
npm install
# Start development server
npm run devCreate 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- Go to Firebase Console
- Create a new project
- Enable Authentication (Email/Password + Google)
- Create Firestore database
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;
}
}
}# Build the app
npm run build
# Deploy to Firebase
firebase deploy --only hosting| 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 |
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
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
Firestore CRUD operations for:
- Journal entries
- Prayer requests
- Reading progress
- User settings
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.
The app is fully responsive with:
- Mobile-first approach
- Collapsible sidebar navigation
- Touch-friendly controls
- Optimized reading experience
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
interface ReadingProgress {
day: number
completed: boolean
completedAt?: Date
notes?: string
}interface JournalEntry {
id: string
title: string
content: string
tags: string[]
createdAt: Date
updatedAt: Date
}interface Prayer {
id: string
content: string
answered: boolean
createdAt: Date
answeredAt?: Date
}The app is deployed on Firebase Hosting:
# Build and deploy
npm run build && firebase deploy --only hostingLive URL: https://scriptorium-bible-app.web.app
- 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)
- More Bible translations (NIV, ESV, NASB)
- Multi-language support
- 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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is for personal/educational use. Contact the maintainer for licensing questions.
- Bible text from bible-api.com (KJV)
- Cross-references from josephilipraja/bible-cross-reference-json (GPL-2.0, credit: SoulLiberty/MetaV)
- Treasury of Scripture Knowledge cross-references
- STEPBible data (morphology, people, versification) from STEPBible-Data (CC BY 4.0)
- Icons from Lucide
- Hosting by Firebase
Built with β€οΈ for deeper Bible study
- 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