{"id":13879402,"url":"https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate","last_synced_at":"2025-10-01T18:31:43.297Z","repository":{"id":26130872,"uuid":"107313319","full_name":"wmaciejak/rails_rom_graphql_clean_architecture_boilerplate","owner":"wmaciejak","description":"Boilerplate Rails project using clean architecture, GraphQL and ROM 4.0","archived":false,"fork":false,"pushed_at":"2022-12-13T23:13:17.000Z","size":62,"stargazers_count":18,"open_issues_count":8,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-14T11:21:43.668Z","etag":null,"topics":["clean-architecture","clean-ruby-architecute","example-project","graphql","graphql-ruby","postgresql","rails","rails5","rails5-api","rom","ruby-architecture","ruby-object-mapper","ruby-on-rails","sequel"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wmaciejak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-17T19:15:57.000Z","updated_at":"2024-09-09T08:37:27.000Z","dependencies_parsed_at":"2023-01-14T04:05:08.231Z","dependency_job_id":null,"html_url":"https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wmaciejak%2Frails_rom_graphql_clean_architecture_boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wmaciejak%2Frails_rom_graphql_clean_architecture_boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wmaciejak%2Frails_rom_graphql_clean_architecture_boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wmaciejak%2Frails_rom_graphql_clean_architecture_boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wmaciejak","download_url":"https://codeload.github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234724988,"owners_count":18877296,"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":["clean-architecture","clean-ruby-architecute","example-project","graphql","graphql-ruby","postgresql","rails","rails5","rails5-api","rom","ruby-architecture","ruby-object-mapper","ruby-on-rails","sequel"],"created_at":"2024-08-06T08:02:19.841Z","updated_at":"2025-10-01T18:31:42.927Z","avatar_url":"https://github.com/wmaciejak.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/85e2b0f11f46e78fe89b/maintainability)](https://codeclimate.com/github/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/maintainability)\n\n# Rails 5 + ROM 4 + GraphQL + Clean Architecture example application\n\nThis is a sample app which shows how Rails 5, ROM 4.0, GraphQL and Clean Architecture might work together.\n\n## Requirements\n- ruby 2.4.2\n- postgresql 10\n\n## What's done already\n\n### By libs\n- [x] N+1 issue by [BatchLoader](https://github.com/exAspArk/batch-loader/) [app/graphql/types/user_type.rb](https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/blob/master/app/graphql/types/user_type.rb#L8).\n\n### By own implementation - feedback is appreciated!\n\n- [x] Abstraction on BatchLoader(more DRY implementation)[[refactor] Abstraction in resolvers | 6930a13](https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/pull/2/commits/6930a13758bd4aa250c3cd70b4bc9b081cc78d89)\n- [x] modularization of fields in QueryType [app/graphql/query_type.rb](https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/blob/master/app/graphql/query_type.rb#L6)\n- [x] Implementation of Clean Architecture\n- [x] Separation of seeds by the environment [db/seeds.rb](https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/blob/master/db/seeds.rb)\n- [x] Loading relations one-to-many without N+1, fixed by naive implementation - [BatchLoader issue#5](https://github.com/exAspArk/batch-loader/issues/5)\n- [x] Modularization project \"per feature\"([app/concepts/*](https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/commit/9d95c1f6831557c466996196b6d671937c8049bd))\n- [x] Global container([dry-container](http://dry-rb.org/gems/dry-container/)) with [auto-registration repositories](https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/commit/6cb7b909590f47b6a4c19e8a454080290eb5243b)\n\n## What's to be done\n\n- [ ] Sample use case\n- [ ] Mutations\n- [ ] Tests\n- [ ] Sample pagination\n- [ ] Translation from queries Abstract Syntax Tree to Ruby Object Mapper API - the best solution is adapter, but it's a future voice\n\n## Known issues\n\n- [x] camelCase in queries(thx [RadoMark](https://github.com/RadoMark/))[fix](https://github.com/wmaciejak/rails_rom_graphql_clean_architecture_boilerplate/commit/e0d0c7fe10f31f37ef3d997a2c056b84f29bf6ed)\n\n## Links\n\n- Application demo GraphiQL: https://rails-graphql-rom-example-app.herokuapp.com/graphiql\n\n## Example Query(can be used in graphiql)\n\n```graphql\nquery {\n  users{\n    username\n    email\n    posts{\n      id\n      content\n      title\n      created_at\n      updated_at\n      comments {\n        id\n        content\n        created_at\n        updated_at\n        author_id\n        post_id\n      }\n    }\n    comments {\n        id\n        content\n        created_at\n        updated_at\n        author_id\n        post_id\n    }\n  }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwmaciejak%2Frails_rom_graphql_clean_architecture_boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwmaciejak%2Frails_rom_graphql_clean_architecture_boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwmaciejak%2Frails_rom_graphql_clean_architecture_boilerplate/lists"}