Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/backpackerhh/upgrow-docs

[mirror] A sustainable architecture for Ruby on Rails by Shopify
https://github.com/backpackerhh/upgrow-docs

Last synced: 4 days ago
JSON representation

[mirror] A sustainable architecture for Ruby on Rails by Shopify

Awesome Lists containing this project

README

        

## Note

The website https://upgrow.shopify.io was taken down for some reason. You
can access it through the archive.org at https://web.archive.org/web/20210304183319/https://upgrow.shopify.io/

# Upgrow

Ruby on Rails is the framework of choice for web apps at Shopify. It is an
opinionated stack for quick and easy development of apps that need standard
persistence with relational databases, an HTTP server, and HTML views.

By design, Rails does not define conventions for structuring business logic and
domain-specific code, leaving developers to define their own architecture and
best practices for a sustainable codebase.

In fast product development teams, budgets and deadlines interfere with this
architectural work, leading to poorly written business logic and complicated
code that is very hard to maintain long term. Even when developer teams take
the time to think about what a good architecture in Rails look like, this work
is likely required to be done all over again when a new Rails app needs to be
created.

This project aims to make it easier for both new and existing Rails apps to
adopt patterns that are proven to make code more sustainable long term, and
codebases easier to maintain and extend. We will recommend a set of abstractions
and practices that are simple, yet powerful in organizing code in Rails apps in
a way that allows fast-growing apps to remain easy to change.

## Guide

1. [Introduction](guide/1-introduction.md)
2. [The Goal of Good Software Design](guide/2-the-goal-of-good-software-design.md)
3. [Code Smells in Rails Apps](guide/3-code-smells-in-rails-apps.md)
4. [Software Design Principles](guide/4-software-design-principles.md)
5. [A Better Architecture](guide/5-a-better-architecture.md)
6. [The Missing Pieces](guide/6-the-missing-pieces.md)
7. [Extensions](guide/7-extensions.md)
8. [Caveats](guide/8-caveats.md)
9. [Final Words](guide/9-final-words.md)