A Rails-based interlinear Bible application providing Spanish Reina Valera 1960 text with Greek interlinear translations, Strong's concordance definitions, slideshow presentation mode, and comprehensive Bible study features.
Interlineal is an interactive Bible study application that displays Spanish text alongside Greek interlinear translations on a word-by-word basis. Built with Ruby on Rails 8.0, it features a responsive design optimized for both desktop study and presentation modes.
- Interlinear Display: Spanish Reina Valera 1960 with Greek word-by-word translations
- Strong's Concordance: Integrated Strong's numbers and definitions
- Presentation Mode: Full-screen slideshow mode for teaching and presentations
- Search Functionality: Search across Spanish text, Greek/Hebrew words, and Strong's definitions
- Navigation: Intuitive verse-by-verse, chapter, and book navigation
- Responsive Design: Mobile-friendly interface with Tailwind CSS
- Caching: Redis-backed caching for optimal performance
- Testing: Comprehensive RSpec test suite with system tests
- Backend: Ruby 3.3.x, Rails 8.0.2
- Database: SQLite3 with optimized schema
- Frontend: Hotwire (Turbo + Stimulus), Tailwind CSS
- State Management: Rails session-based settings
- Testing: RSpec, Capybara, FactoryBot, Selenium WebDriver
- Performance: Solid Cache for caching
- Development: Debug gem, Rubocop Rails Omakase
The application uses a normalized database structure:
- Books: Bible books with testament classification
- Chapters: Chapter organization within books
- Verses: Individual verses with Spanish text
- Words: Greek/Hebrew words with Strong's numbers and translations
- Strongs: Strong's concordance definitions and linguistic data
- Ruby 3.3.x
- Rails 8.0.2
- SQLite3
-
Clone the repository
git clone <repository-url> cd interlineal
-
Install dependencies
bundle install
-
Setup database
bin/rails db:setup
-
Start the development server
bin/dev
The application will be available at http://localhost:3000
.
bundle exec rspec
The application includes comprehensive tests:
- Unit Tests: Model validations, associations, and business logic
- Controller Tests: HTTP responses and routing
- System Tests: End-to-end user interactions with Capybara
- Request Tests: API-like functionality testing
- Linting: Uses Rubocop Rails Omakase for consistent code style
- Security: Brakeman for security vulnerability scanning
- CI/CD: GitHub Actions workflow for automated testing
app/controllers/bible_controller.rb
- Main Bible interface controllerapp/models/
- ActiveRecord models for Bible dataapp/views/bible/
- ERB templates for Bible displayapp/javascript/controllers/
- Stimulus controllers for interactivityspec/
- RSpec test suitedb/
- Database schema and migrations
The application provides a RESTful interface:
GET / # Homepage (redirects to first verse)
GET /books/:book_id # Book overview
GET /books/:book_id/chapters/:chapter_number # Chapter view
GET /books/:book_id/chapters/:chapter_number/verses/:verse_number # Verse view
GET /slideshow/:book_id/:chapter_number/:verse_number # Presentation mode
GET /search # Search functionality
GET /strongs/:strong_number # Strong's definitions
- Caching: Aggressive caching of Bible data, navigation, and expensive queries
- Database Optimization: Indexed columns and efficient associations
- Fragment Caching: View-level caching for frequently accessed content
- Lazy Loading: Optimized database queries with includes
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests for your changes
- Run the test suite (
bundle exec rspec
) - Commit your changes (
git commit -am 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
The application can be deployed using:
- Docker: Dockerfile included for containerization
- Kamal: Configured for deployment with Kamal
- Traditional hosting: Compatible with standard Rails hosting
Continuous Integration runs on GitHub Actions and includes:
- RSpec test suite execution
- Code quality checks with Rubocop
- Security scanning with Brakeman
- Multi-environment testing
This project is available for educational and non-commercial use. See project documentation for detailed licensing information.
For detailed development tasks and roadmap, see TASKS.md.