{"id":15064542,"url":"https://github.com/solid-process/rails-way-app","last_synced_at":"2025-04-09T06:11:02.528Z","repository":{"id":255717458,"uuid":"853376761","full_name":"solid-process/rails-way-app","owner":"solid-process","description":"Eighteen versions of a web application and REST API, developed using Ruby on Rails, aim to fully leverage MVC/Rails by promoting modularization and orthogonality.","archived":false,"fork":false,"pushed_at":"2024-10-01T09:30:49.000Z","size":1391,"stargazers_count":386,"open_issues_count":1,"forks_count":18,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-01T18:21:42.129Z","etag":null,"topics":["domain-model","mvc-architecture","rails-way","ruby","ruby-on-rails","solid-process","vanilla-rails"],"latest_commit_sha":null,"homepage":"https://github.com/solid-process/rails-way-app","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solid-process.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-06T14:32:55.000Z","updated_at":"2025-03-22T16:04:35.000Z","dependencies_parsed_at":"2024-09-29T09:41:10.007Z","dependency_job_id":"f1ff86a9-7a2b-4d5a-b25b-cb5f8fc40baa","html_url":"https://github.com/solid-process/rails-way-app","commit_stats":{"total_commits":2,"total_committers":2,"mean_commits":1.0,"dds":0.5,"last_synced_commit":"1ee1c4efe9475cc67b69d8621cb1230711ad11be"},"previous_names":["solid-process/rails-way-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solid-process%2Frails-way-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solid-process%2Frails-way-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solid-process%2Frails-way-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solid-process%2Frails-way-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solid-process","download_url":"https://codeload.github.com/solid-process/rails-way-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247987285,"owners_count":21028895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["domain-model","mvc-architecture","rails-way","ruby","ruby-on-rails","solid-process","vanilla-rails"],"created_at":"2024-09-25T00:20:23.048Z","updated_at":"2025-04-09T06:11:02.506Z","avatar_url":"https://github.com/solid-process.png","language":null,"readme":"\u003csmall\u003e\n\n\u003e `MENU` **README** | [How to run locally](./docs/00_INSTALLATION.md) | [REST API doc](./docs/01_REST_API_DOC.md) | [Web app screenshots](./docs/02_WEB_APP_SCREENSHOTS.md) | [Branch descriptions](./docs/03_BRANCH_DESCRIPTIONS.md)\n\n\u003c/small\u003e\n\n# 🚆 Rails Way App \u003c!-- omit in toc --\u003e\n\n_**Eighteen versions**_ (gradually implemented) of a Web and REST API app made with [Ruby on Rails](https://guides.rubyonrails.org/) that aims to get the most out of the `MVC`/`Rails Way`.\n\n## 📚 Table of contents \u003c!-- omit in toc --\u003e\n\n- [📢 Disclaimer](#-disclaimer)\n- [🙌 Repository branches](#-repository-branches)\n- [👋 About](#-about)\n\n## 📢 Disclaimer\n\n[Ruby on Rails](https://rubyonrails.org/) is a highly productive MVC framework whose [primary value proposition is to be a one-person framework](https://www.youtube.com/watch?v=iqXjGiQ_D-A). In other words, to empower and make individuals as productive as entire teams.\n\nHowever, this proposal applies not only to individuals but also to giant teams. [Shopify](https://shopify.engineering/), for example, has thousands of developers working on a monolithic and modular application with millions of lines of code.\n\n**The main challenge of any medium to colossal system is to accommodate its complexity well**. As the code grows, we need to have the freedom and capacity to separate responsibilities in the best possible way.\n\nThe project's main objective is to demonstrate different approaches to improving the design of a Rails application without compromising its conventions and structure.\n\nIt is a `Web` and `REST API` app with over `4,000` lines of code (implementation + tests) and was implemented in **18 versions**. This is to gradually demonstrate the pros and cons of each approach. Enjoy! ✌️😊\n\n\u003cp align=\"right\"\u003e\u003ca href=\"#-table-of-contents-\"\u003e⬆ back to top\u003c/a\u003e\u003c/p\u003e\n\n## 🙌 Repository branches\n\nThis repository has **eighteen** branches that represent the application's evolution.\n\nEvery branch contains a `README.md` which explains the changes made in the codebase. However, you can access the documentation of all branches in the [`docs/03_BRANCH_DESCRIPTIONS.md`](./docs/03_BRANCH_DESCRIPTIONS.md) file.\n\n| LOC / GRADE  | Branch |\n| ------------ | ------ |\n| 1326 / 89.23 | [010-one-controller-per-entity](https://github.com/solid-process/rails-way-app/blob/010-one-controller-per-entity?tab=readme-ov-file#-rails-way-app-) |\n| 1350 / 90.34 | [011-one-controller-per-entity_user-concerns](https://github.com/solid-process/rails-way-app/blob/011-one-controller-per-entity_user-concerns?tab=readme-ov-file#-rails-way-app-) |\n| 1342 / 91.34 | [020-multi-controllers-per-entity](https://github.com/solid-process/rails-way-app/blob/020-multi-controllers-per-entity?tab=readme-ov-file#-rails-way-app-) |\n| 1361 / 91.56 | [021-multi-controllers-per-entity_rest-actions-only](https://github.com/solid-process/rails-way-app/blob/021-multi-controllers-per-entity_rest-actions-only?tab=readme-ov-file#-rails-way-app-) |\n| 1361 / 91.56 | [030-resources-within-namespaces](https://github.com/solid-process/rails-way-app/blob/030-resources-within-namespaces?tab=readme-ov-file#-rails-way-app-) |\n| 1355 / 91.56 | [031-resources-within-namespaces_base-controllers](https://github.com/solid-process/rails-way-app/blob/031-resources-within-namespaces_base-controllers?tab=readme-ov-file#-rails-way-app-) |\n| 1355 / 91.56 | [032-resources-within-namespaces_partials-grouped-by-context](https://github.com/solid-process/rails-way-app/blob/032-resources-within-namespaces_partials-grouped-by-context?tab=readme-ov-file#-rails-way-app-) |\n| 1356 / 91.56 | [033-resources-within-namespaces_mailers-under-entity-context](https://github.com/solid-process/rails-way-app/blob/033-resources-within-namespaces_mailers-under-entity-context?tab=readme-ov-file#-rails-way-app-) |\n| 1356 / 91.56 | [034-resources-within-namespaces_nested-namespaces](https://github.com/solid-process/rails-way-app/blob/034-resources-within-namespaces_nested-namespaces?tab=readme-ov-file#-rails-way-app-) |\n| 1356 / 91.56 | [035-resources-within-namespaces_singular_resources](https://github.com/solid-process/rails-way-app/blob/035-resources-within-namespaces_singular_resources?tab=readme-ov-file#-rails-way-app-) |\n| 1359 / 91.56 | [040-models-within-namespaces](https://github.com/solid-process/rails-way-app/blob/040-models-within-namespaces?tab=readme-ov-file#-rails-way-app-) |\n| 1462 / 94.04 | [050-separation-of-entry-points](https://github.com/solid-process/rails-way-app/blob/050-separation-of-entry-points?tab=readme-ov-file#-rails-way-app-) |\n| 1456 / 95.56 | [051-separation-of-entry-points_fat-models](https://github.com/solid-process/rails-way-app/blob/051-separation-of-entry-points_fat-models?tab=readme-ov-file#-rails-way-app-) |\n| 1504 / 95.63 | [060-domain-model_account-member-poro](https://github.com/solid-process/rails-way-app/blob/060-domain-model_account-member-poro?tab=readme-ov-file#-rails-way-app-) |\n| 1519 / 95.68 | [061-domain-model_user-token-poro](https://github.com/solid-process/rails-way-app/blob/061-domain-model_user-token-poro?tab=readme-ov-file#-rails-way-app-) |\n| 1526 / 95.78 | [062-domain-model_task-constants](https://github.com/solid-process/rails-way-app/blob/062-domain-model_task-constants?tab=readme-ov-file#-rails-way-app-) |\n| 1563 / 95.77 | [063-domain-model_user-operations](https://github.com/solid-process/rails-way-app/blob/063-domain-model_user-operations?tab=readme-ov-file#-rails-way-app-) |\n| 1613 / 95.81 | [070-orthogonal-models](https://github.com/solid-process/rails-way-app/blob/070-orthogonal-models?tab=readme-ov-file#-rails-way-app-) |\n\nThe following commands were used to generate the LOC and GRADE reports:\n- **LOC** (lines of code): `bin/rails stats`\n- **GRADE** (code quality): `bin/rails rubycritic`\n\n\u003cp align=\"right\"\u003e\u003ca href=\"#-table-of-contents-\"\u003e⬆ back to top\u003c/a\u003e\u003c/p\u003e\n\n## 👋 About\n\n[Rodrigo Serradura](https://rodrigoserradura.com/) created this project. He is the creator of Solid Process, among other similar projects, such as [solid-rails-app](https://github.com/solid-process/solid-rails-app), which consists of demonstrating (in `12 gradual versions`) how the implementation of processes as code (based on the concept of use cases) can add value to a Ruby and Rails codebase.\n\nIn the Rails community, we have people at different stages of their careers and companies in various phases (validating ideas, refining, scaling products); the goal here is to help them on their journey. By sharing knowledge and practical references.\n\nRuby and the Rails framework is excellent, and my mission here is to try to add value to such great tools (Ruby and Rails rocks!!! 🤘😎).\n\n\u003cp align=\"right\"\u003e\u003ca href=\"#-table-of-contents-\"\u003e⬆ back to top\u003c/a\u003e\u003c/p\u003e\n","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolid-process%2Frails-way-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolid-process%2Frails-way-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolid-process%2Frails-way-app/lists"}