A modern Rails 8 application for Omise's internal developer conference with real-time updates, custom magic link authentication, and mobile-first design.
- Magic Link Authentication - Secure, passwordless login for company emails
- Real-time Updates - Live check-in status and feedback aggregation using Turbo Streams
- Mobile-First Design - Responsive interface optimized for all devices
- Admin Dashboard - Comprehensive analytics and attendee management
- Session Management - Conference agenda with speaker details and feedback
- Theme Switching - Dark/light mode with Omise branding
- Real-time Notifications - Live updates across all connected users
- Backend: Rails 8.0.2.1, Ruby 3.3.8
- Database: PostgreSQL 14+
- Frontend: Turbo + Hotwire, TailwindCSS, Stimulus.js
- Authentication: Custom magic link system
- Real-time: Turbo Streams for live updates
- Styling: TailwindCSS with custom Omise branding
Before you begin, ensure you have the following installed:
ruby --version # Should be 3.3.8
psql --version # Should be 14+
node --version # Should be 18+
git clone <repository-url>
cd event-command
# Install bundler if you don't have it
gem install bundler
# Install all gems
bundle install
# On macOS with Homebrew
brew services start postgresql
# On Ubuntu/Debian
sudo systemctl start postgresql
# On Windows (if using PostgreSQL installer)
# PostgreSQL should start automatically
# Create the database
rails db:create
# Run migrations
rails db:migrate
# Seed with sample data
rails db:seed
Create a .env
file in the project root (optional, for custom database settings):
# .env
DATABASE_USERNAME=postgres
DATABASE_PASSWORD=your_password
DATABASE_HOST=localhost
# Start the Rails server
rails server
# Or start with custom port
rails server -p 3001
The application will be available at http://localhost:3000
# Install PostgreSQL
brew install postgresql@14
# Start PostgreSQL
brew services start postgresql@14
# Create a database user (optional)
createuser -s postgres
# Install PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib
# Start PostgreSQL
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Create a database user
sudo -u postgres createuser -s $USER
- Download PostgreSQL from postgresql.org
- Run the installer and follow the setup wizard
- Remember the password you set for the
postgres
user
The application uses these environment variables for database configuration:
DATABASE_USERNAME=postgres # Default: postgres
DATABASE_PASSWORD= # Default: empty
DATABASE_HOST=localhost # Default: localhost
The application comes with seeded sample data including:
- Admin User:
admin@company.com
(admin privileges) - Speaker Users: Sample speakers for conference sessions
- Attendee Users: Sample attendees for testing
- Conference Sessions: Sample sessions with realistic data
- Feedback Data: Sample feedback for testing analytics
After running rails db:seed
, you can:
- Login as Admin: Use
admin@company.com
to access admin features - Login as Attendee: Use any
@company.com
email to test attendee features - View Sessions: Browse the conference agenda
- Test Feedback: Submit feedback on completed sessions
# Run all tests
rails test
# Run specific test file
rails test test/controllers/sessions_controller_test.rb
# Run with coverage
COVERAGE=true rails test
# Run RuboCop for code style
bundle exec rubocop
# Auto-fix RuboCop issues
bundle exec rubocop -a
# Run Brakeman for security
bundle exec brakeman
# Reset database (WARNING: deletes all data)
rails db:reset
# Rollback last migration
rails db:rollback
# Check database status
rails db:version
The app uses TailwindCSS for styling with custom Omise branding:
# Watch for CSS changes
rails tailwindcss:watch
# Build CSS for production
rails tailwindcss:build
- Primary Color: Omise Teal (
#00D4AA
) - Dark Theme: Default with light theme option
- Typography: Modern, clean fonts
- Icons: Heroicons for consistent iconography
The app is built mobile-first with responsive design:
- Breakpoints:
sm
(640px),md
(768px),lg
(1024px),xl
(1280px) - Touch Targets: Minimum 44px for mobile interaction
- Progressive Enhancement: Works without JavaScript
The app uses a custom magic link authentication system:
- Email Validation: Only
@company.com
domains allowed - Token Generation: 32-character secure random tokens
- Token Expiry: 15-minute expiration for security
- Email Delivery: Branded HTML emails with magic links
For development, emails are saved to tmp/mails/
directory. For production, configure SMTP settings in config/environments/production.rb
.
Set these environment variables in production:
RAILS_MASTER_KEY=your_master_key
DATABASE_URL=postgresql://user:password@host:port/database
SMTP_HOST=your_smtp_host
SMTP_PORT=587
SMTP_USERNAME=your_email
SMTP_PASSWORD=your_password
# Run migrations in production
RAILS_ENV=production rails db:migrate
# Seed production data (if needed)
RAILS_ENV=production rails db:seed
# Check PostgreSQL is running
brew services list | grep postgresql
# Restart PostgreSQL
brew services restart postgresql@14
# Clear bundle cache
bundle clean --force
# Reinstall gems
bundle install --redownload
# Clear asset cache
rails assets:clobber
# Rebuild assets
rails assets:precompile
# Kill process on port 3000
lsof -ti:3000 | xargs kill -9
# Or use different port
rails server -p 3001
- Check the Rails logs:
tail -f log/development.log
- Check PostgreSQL logs:
tail -f /usr/local/var/log/postgresql.log
- Verify all services are running:
brew services list
GET /
- Login pageGET /agenda
- Conference agenda (attendee view)GET /admin/dashboard
- Admin dashboardPOST /check_in
- Check in to conferenceGET /sessions/:id
- Session detailsPOST /feedback/session/:id
- Submit session feedback
- User enters email on login page
- System generates magic link token
- Email sent with magic link
- User clicks link to authenticate
- Session created and user redirected to agenda
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes
- Run tests:
rails test
- Commit changes:
git commit -m "Add feature"
- Push to branch:
git push origin feature-name
- Submit a pull request
This project is proprietary software for Omise internal use.
For technical support or questions:
- Check this README for common solutions
- Review the Rails logs for error details
- Contact the development team
Happy Coding! π