# evo-auth-service-community Ruby 3.4.4 / Rails 7.1 · porta 3001 Serviço de autenticação e autorização: Bearer/JWT, OAuth 2.0 (Doorkeeper, RFC 6749), MFA (TOTP, Email OTP, backup codes), RBAC granular, isolamento por conta, discovery `.well-known` (RFC 8414), compliance GDPR/LGPD. ## Estrutura em camadas (padrão comum a Auth e CRM) ``` app/ ├── models/concerns/ # behaviors compartilhados ├── services/[domain]/ # Service Objects — lógica de negócio ├── controllers/ # HTTP handlers finos, delegam a services ├── jobs/ # Sidekiq async jobs ├── listeners/ # Wisper event subscribers ├── builders/ # construtores de objetos complexos ├── policies/ # Pundit — RBAC ├── serializers/ # JSON serializers (Plain Ruby, via Oj) ├── channels/ # ActionCable (WebSocket) └── mailers/ spec/ ├── models/, services/, requests/ (contrato de API), fixtures/ ``` ## Padrões - **Service Objects**: `app/services/domain/operation_service.rb`. - **Event-driven (Wisper)**: eventos como `contact.created`, `message.sent`. - **Pundit Policies**: `ContactPolicy.new(user, contact).show?`. - **Serializers em Plain Ruby** (sem `ActiveModel::Serializer`). ## Build & testes ```bash cd evo-auth-service-community bundle install bundle exec rails db:migrate bundle exec rails s -p 3001 bundle exec rspec # todos os testes bundle exec rspec spec/services/ # unit bundle exec rspec spec/requests/ # contrato de API ```