source "https://rubygems.org"

ruby "3.2.4"

# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
gem "rails", "~> 7.1.3", ">= 7.1.3.3"

# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
gem "sprockets-rails"

# Use sqlite3 as the database for Active Record
gem "sqlite3", "~> 1.4"

# Use the Puma web server [https://github.com/puma/puma]
gem "puma", ">= 5.0"

# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
gem "importmap-rails"

# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
gem "turbo-rails"

# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
gem "stimulus-rails"

# Use Tailwind CSS [https://github.com/rails/tailwindcss-rails]
gem "tailwindcss-rails"

# Build JSON APIs with ease [https://github.com/rails/jbuilder]
gem "jbuilder"

# Use Redis adapter to run Action Cable in production
gem "redis", ">= 4.0.1"

# Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
gem "bcrypt", "~> 3.1.7"

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem "tzinfo-data", platforms: %i[windows jruby]

# Reduces boot times through caching; required in config/boot.rb
gem "bootsnap", require: false

# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
gem "active_model_serializers"

# Security & Performance Monitoring
gem "airbrake", "~> 13.0"
gem "brakeman", require: false
gem "bullet" # For N+1 query alerts
gem "query_diet"

group :development, :test do
  # Debugging tools
  gem "debug", platforms: %i[mri windows]
  gem "factory_bot_rails"
  gem "faker"

  # Linting & Code Quality
  gem "rubocop", require: false
  gem "rubocop-factory_bot", require: false
  gem "rubocop-performance", "~> 1.23"
  gem "rubocop-rails", "~> 2.29"
  gem "rubocop-rspec", "~> 3.4"

  # Pre-commit hooks
  gem "overcommit", require: false
end

group :development do
  # Developer tools
  gem "spring"
  gem "spring-commands-rspec"
  gem "web-console"

  # Debugging Rails controllers
  gem "httparty"
  gem "rack-cors"
  gem "rest-client"
end

group :test do
  # Testing tools
  gem "parallel_tests"
  gem "rspec"
  gem "rspec-rails"
  gem "rspec-sidekiq"
  gem 'rubocop-rspec_rails'
  gem "shoulda-callback-matchers"
  gem "shoulda-matchers"

  # Test coverage & logging
  gem "rspec_junit_formatter"
  gem "simplecov", require: false
  gem "simplecov-cobertura", require: false
  gem "webmock"
end
