- app/cells -> small repeatable blocks within page
- app/controllers -> skinny controllers,
- mostly control-flow only, but be reasonable, do not extract one liner to use case
- DHH approach to put one action into controller
- app/forms -> Reform (form objects)
- app/helpers -> Rails helpers
- app/models -> skinny models
- app/policies
- app/presenters -> view objects
- app/queries -> query objects
- app/reflexes → https://docs.stimulusreflex.com/quickstart#hello-reflex-world
- app/services (interactors, mutations)
- a bit controversial, looks like a workaround, but pretty popular
- OrderService (bad) vs RefundOrder (good)
- https://www.toptal.com/ruby-on-rails/rails-service-objects-tutorial
- https://medium.com/the-falconry/skinny-models-skinny-controllers-fat-services-e04cfe2d6ae
- trailblazer operations
- https://github.com/cypriss/mutations
- https://github.com/AaronLasseigne/active_interaction/issues
- https://dry-rb.org/gems/dry-transaction/
- app/uploaders -> Carrierwave
- app/values -> value objects