A Ruby on Rails application for managing screening tests and assessments.
- Ruby 3.2.0
- Rails 7.2.2
- PostgreSQL
- Redis (for Sidekiq)
- Node.js & Yarn (for JavaScript bundling)
- Docker & Docker Compose (optional)
- User Authentication with Devise
- Authorization with Pundit
- Background Job Processing with Sidekiq
- Modern UI with Tailwind CSS
- Real-time updates with Hotwire (Turbo & Stimulus)
- Email handling with Letter Opener (development)
- Pagination with Kaminari
- Component-based UI architecture with ViewComponent
- Clone the repository
git clone https://github.com/geeekgod/Pre-Screen.git
cd Pre-Screen
- Install dependencies
bundle install
yarn install
- Setup environment variables
cp .env.example .env
# Edit .env with your configuration
- Setup the database
rails db:create
rails db:migrate
- Seed the database
rails db:seed
- Clone the repository and setup environment
git clone https://github.com/geeekgod/Pre-Screen.git
cd Pre-Screen
cp .env.example .env
- Build and start the containers
docker-compose up --build
- Setup the database
docker-compose exec app rails db:setup
The application uses Rails' built-in testing framework. To run the tests:
rails test # Run all tests
rails test:system # Run system tests
rails test:models # Run model tests
bundle exec brakeman # Run security analysis
The project follows Rails Omakase style guide. To check and fix styling:
bundle exec rubocop # Check code style
bundle exec rubocop -A # Auto-fix code style issues
AdminUser
: Manages admin authentication and associationsTopic
: Belongs to AdminUser, has many questionsQuestion
: Belongs to TopicTest
: Belongs to AdminUser
Background processing is handled by Sidekiq for:
- Email delivery
- Other async tasks (TODO)
- Tailwind CSS for styling
- Hotwire (Turbo & Stimulus) for dynamic interactions
- ViewComponent for reusable UI components
-
In development, emails are caught by Letter Opener and displayed in the browser.
-
You can also view them in mail catcher by disabling Letter Opener in
development.rb
and enable the mail catcher configuration.
TODO
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Built with Ruby on Rails and other open-source software.