A Bible memorization application.
- Ruby 3.2.6 (RVM; see
.ruby-version) - Rails 7.2 (installed by
bundle install) - MySQL (development database
memverse_development, test databasememverse_test) - Redis (Sidekiq queues and ephemeral quiz state)
- Sphinx (Thinking Sphinx full-text search)
- Node.js (asset precompilation and the JavaScript tests)
- Install Ruby 3.2.6 (
rvm install 3.2.6) and Node.js, and make sure MySQL and Redis are installed. - Start MySQL (
brew services start mysqlor your distribution’s service). - Run
./bin/setup: it installs the gems with Bundler and creates, migrates and seeds the development and test databases (bin/rails db:prepare). - Run
npm cito install the JavaScript test dependencies. - Ask a maintainer for
config/master.keyif you need the encrypted credentials (Postmark, production database); development runs without it.
./bin/dev starts MySQL and Redis if needed, then the Rails server, the Sidekiq scheduler and a Sidekiq worker through foreman (see Procfile). ./bin/shutdown stops everything and ./bin/status reports what is running.
All three suites must pass before any change is considered done.
- Unit tests:
bundle exec rspec - Integration tests:
bundle exec cucumber features - JavaScript tests:
npm run test:run(single pass;npm teststarts Vitest in watch mode)
This project uses the Rails credentials system for sensitive configuration (database password, Postmark API token, secret_key_base). To edit credentials:
EDITOR="nano" rails credentials:edit
The master key (config/master.key) is required for decryption and must never be committed.
- documentation/README.md – index of every document (deployment, Sidekiq, email, API, quiz system, error monitoring, style guide, plans)
- CLAUDE.md – project guide for Claude Code and a summary of the architecture and production setup
- AGENTS.md – rules for agentic coding tools working in this repository
If you make improvements to this application, please share with others.
- Fork the project on GitHub.
- Make your feature addition or bug fix.
- Commit with Git.
- Send a pull request.