version: '3' tasks: default: desc: "Show available tasks" cmds: - task --list dev: desc: "Start development environment (Docker, database, Rails + Tailwind + Jobs)" cmds: - task: docker:up - task: db:prepare - rails tailwindcss:build - echo "🚀 Starting TurboVault..." - echo "📱 App at http://localhost:3000" - echo "📧 Mailpit at http://localhost:8025" - echo "⚙️ Background jobs (Solid Queue) enabled" - echo "" - echo "👤 Demo Account (development):" - echo " Email demo@turbovault.com" - echo " Password password123" - echo "" - bin/dev setup: desc: "Initial project setup (Docker, dependencies, database)" cmds: - task: docker:up - task: install - task: db:setup install: desc: "Install Ruby dependencies" cmds: - bundle install docker:up: desc: "Start PostgreSQL and Mailpit containers" cmds: - docker compose up -d - echo "Waiting for services to be ready..." - sleep 3 - echo "PostgreSQL at localhost:5432" - echo "Mailpit UI at http://localhost:8025" docker:down: desc: "Stop all Docker containers" cmds: - docker compose down docker:logs: desc: "View Docker logs (all services)" cmds: - docker compose logs -f docker:logs:postgres: desc: "View PostgreSQL logs only" cmds: - docker compose logs -f postgres docker:logs:mailpit: desc: "View Mailpit logs only" cmds: - docker compose logs -f mailpit docker:reset: desc: "Stop containers and remove all data" cmds: - docker compose down -v mailpit: desc: "Open Mailpit web UI in browser" cmds: - echo "Opening Mailpit at http://localhost:8025" - open http://localhost:8025 || xdg-open http://localhost:8025 || echo "Please visit http://localhost:8025 in your browser" db:create: desc: "Create database" cmds: - rails db:create db:migrate: desc: "Run database migrations" cmds: - rails db:migrate db:seed: desc: "Seed database with initial data" cmds: - rails db:seed db:setup: desc: "Setup database (create, migrate, seed)" cmds: - task: db:create - task: db:migrate - task: db:seed db:prepare: desc: "Prepare database (creates if needed, runs pending migrations)" cmds: - rails db:prepare db:reset: desc: "Reset database (drop, create, migrate, seed)" cmds: - rails db:drop - task: db:setup db:rollback: desc: "Rollback last migration" cmds: - rails db:rollback server: desc: "Start Rails server" cmds: - rails server dev: desc: "Start Rails server with bin/dev (if using Procfile.dev)" cmds: - bin/dev console: desc: "Start Rails console" cmds: - rails console test: desc: "Run all tests" cmds: - rails test test:system: desc: "Run system tests" cmds: - rails test:system lint: desc: "Run RuboCop linter" cmds: - bundle exec rubocop lint:fix: desc: "Auto-fix RuboCop issues" cmds: - bundle exec rubocop -A security: desc: "Run security checks (Brakeman + Bundler Audit)" cmds: - bundle exec brakeman - bundle exec bundler-audit check --update routes: desc: "Show all routes" cmds: - rails routes clean: desc: "Clean temporary files and logs" cmds: - rm -rf tmp/cache/* - rm -rf log/*.log - echo "Cleaned tmp and logs" igdb:sync: desc: "Manually run IGDB sync job (for testing)" cmds: - rake igdb:sync igdb:status: desc: "Check IGDB sync status" cmds: - rake igdb:status igdb:clear: desc: "Clear IGDB sync lock (if job is stuck)" cmds: - rake igdb:clear_lock typecheck: desc: "Run Sorbet type checker" cmds: - bundle exec srb tc typecheck:watch: desc: "Run Sorbet type checker in watch mode" cmds: - bundle exec srb tc --watch tapioca:init: desc: "Initialize Tapioca (run once after adding Sorbet)" cmds: - bundle exec tapioca init tapioca:gems: desc: "Generate RBI files for gems" cmds: - bundle exec tapioca gems tapioca:dsl: desc: "Generate RBI files for DSLs (Rails models, etc.)" cmds: - bundle exec tapioca dsl tapioca:all: desc: "Generate all RBI files (gems + DSLs)" cmds: - bundle exec tapioca gems - bundle exec tapioca dsl