Now with static demo mode!
🚀 Easily deploy a fully working demo for recruiters—no backend required. All data is stored in the browser using localStorage. See below for details.
Want recruiters to see your app live, instantly, with no server/database setup?
-
Build a static version:
bin/build-static
This creates a
public/static-build/
directory with everything needed for a live demo. -
Deploy anywhere:
- Netlify, Vercel, GitHub Pages, S3, or any static host
- Just upload the contents of
public/static-build/
-
How it works:
- All data (users, habits, check-ins) is stored in the browser's localStorage
- No backend/database required
- Works offline and persists between sessions
- Only the Turbo (Hotwire) UI is included in the static build. The React UI is NOT included in the static build.
-
Demo credentials:
- Username:
demo
- Password:
password
- Username:
- Turbo UI:
/habits
(default)- Classic Rails+Hotwire experience
- Included in static build
- React UI:
/habits?ui=react
- Modern React SPA, powered by Vite
- Not included in static build
Both UIs share the same backend and data model in development. In static/demo mode, all data is local to the browser.
A beautiful, gamified habit tracking application built with Ruby on Rails and Tailwind CSS. Transform your daily habits into epic quests and track your progress with streaks, completion rates, and visual feedback.
- User Authentication: Secure login/signup with bcrypt
- Habit Management: Create and track personal habits
- Daily Check-ins: Mark habits as completed with one click
- Streak Tracking: Visual feedback for current and longest streaks
- Completion Analytics: Track completion rates and total check-ins
- Real-time Updates: Turbo Streams for instant UI updates
- Responsive Design: Beautiful on mobile, tablet, and desktop
- Gamified Interface: Quest-themed UI with emojis and badges
- Visual Feedback: Color-coded status indicators and progress badges
- Smooth Animations: Hover effects and transitions throughout
- Service Objects: Clean separation of business logic
- TDD Approach: Comprehensive test coverage (59 tests)
- Code Quality: RuboCop and Tailwind linting
- API-Ready: Structured for future React/JSON API integration
- Ruby 3.2 or higher
- Rails 7.1 or higher
- PostgreSQL
- Node.js (for Tailwind CSS)
-
Clone the repository
git clone https://github.com/atayl16/quest_tracker.git cd quest_tracker
-
Install dependencies
bundle install
-
Set up the database
bin/rails db:create bin/rails db:migrate bin/rails db:seed
-
Start the development server
bin/dev
-
Visit the application
http://localhost:3000
bundle exec rspec
bundle exec rspec spec/models/habit_spec.rb
bundle exec rspec spec/services/complete_habit_spec.rb
bundle exec rspec spec/requests/check_ins_spec.rb
# Run RuboCop
bundle exec rubocop
# Auto-fix RuboCop violations
bundle exec rubocop -A
# Check Tailwind compilation
bin/rails assets:precompile
- 59 tests across models, services, and requests
- 100% model coverage with comprehensive edge cases
- Service object testing with success/failure scenarios
- Request specs covering Turbo Stream functionality
- System tests for user authentication flows
- ✅ User authentication and registration
- ✅ Habit creation and validation
- ✅ Check-in functionality with service objects
- ✅ Streak calculation and completion rates
- ✅ Turbo Stream real-time updates
- ✅ Mobile-responsive design
- Ruby on Rails 7.1+: Modern Rails with importmaps
- PostgreSQL: Production-ready database
- bcrypt: Secure password hashing
- RSpec: Comprehensive testing framework
- FactoryBot: Test data factories
- Tailwind CSS 4.0+: Utility-first CSS framework
- Turbo: Real-time updates without JavaScript
- Hotwire: Modern Rails frontend stack
- Importmaps: JavaScript module management
- RuboCop: Ruby code style enforcement
- Brakeman: Security vulnerability scanning
- Docker: Containerized development environment
- User authentication system
- Habit creation and management ("quest" creation)
- Daily check-in functionality
- Streak tracking and analytics
- Service object architecture
- Comprehensive test suite (models, services, requests, system specs)
- Responsive, gamified UI (Turbo/Hotwire)
- Turbo Stream real-time updates
- Code quality enforcement (RuboCop, Tailwind)
- Static build for Netlify/static hosting (Turbo UI only, localStorage persistence)
- Static build validation spec (catches JS/HTML errors before deployment)
- Demo data and credentials in seeds
- All major user flows tested and passing (auth, quest creation, check-in, undo, deletion, UI switching)
- README and deployment instructions up to date
- User profile management
- Advanced analytics dashboard
- Habit categories (Health, Mind, Spirit)
- Calendar view for habit tracking
- Export functionality for progress data
- Email reminders and notifications
- React frontend with JSON API (for future, not in static build)
- Mobile app with React Native
- Social features and habit sharing
- Advanced analytics and insights
- Habit templates and challenges
- User: Authentication and user management
- Habit: Core habit entity with streak calculations
- CheckIn: Daily habit completion tracking
- CompleteHabit: Business logic for habit check-ins
- Future: Additional services for analytics, notifications, etc.
- SessionsController: User authentication
- UsersController: User registration
- HabitsController: Habit management
- CheckInsController: Check-in functionality
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Write tests for new functionality
- Ensure all tests pass (
bundle exec rspec
) - Run code quality checks (
bundle exec rubocop
) - Commit your changes (
git commit -m 'feat: Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- All tests passing (
bundle exec rspec
) - RuboCop clean (
bundle exec rubocop
) - Tailwind compilation successful (
bin/rails assets:precompile
) - Assets cleaned up (
rm -rf public/assets
)
type(scope): Brief description
- Detailed bullet points
- Additional context
- Breaking changes if any
Types: feat
, fix
, refactor
, style
, test
, docs
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with ❤️ using Ruby on Rails
- Inspired by gamification principles
- Designed for maximum user engagement
- Focused on code quality and maintainability