{"id":13881054,"url":"https://github.com/MatthieuSegret/graphql-rails-blog","last_synced_at":"2025-07-16T17:31:42.742Z","repository":{"id":54538941,"uuid":"73476627","full_name":"MatthieuSegret/graphql-rails-blog","owner":"MatthieuSegret","description":"Blog App built with Rails 5, React and GraphQL","archived":false,"fork":false,"pushed_at":"2021-02-12T00:48:03.000Z","size":554,"stargazers_count":154,"open_issues_count":7,"forks_count":32,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-24T10:34:28.164Z","etag":null,"topics":["apollo","graphql","javascript","rails","react","ruby","starter-kit"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/MatthieuSegret.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":"2016-11-11T12:39:02.000Z","updated_at":"2023-01-04T21:33:04.000Z","dependencies_parsed_at":"2022-08-13T19:01:15.944Z","dependency_job_id":null,"html_url":"https://github.com/MatthieuSegret/graphql-rails-blog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MatthieuSegret/graphql-rails-blog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatthieuSegret%2Fgraphql-rails-blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatthieuSegret%2Fgraphql-rails-blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatthieuSegret%2Fgraphql-rails-blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatthieuSegret%2Fgraphql-rails-blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MatthieuSegret","download_url":"https://codeload.github.com/MatthieuSegret/graphql-rails-blog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatthieuSegret%2Fgraphql-rails-blog/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265527557,"owners_count":23782480,"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":["apollo","graphql","javascript","rails","react","ruby","starter-kit"],"created_at":"2024-08-06T08:03:54.228Z","updated_at":"2025-07-16T17:31:39.974Z","avatar_url":"https://github.com/MatthieuSegret.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# GraphQL Rails Blog\n\nThis application can be used as **starter kit** if you want to get started building an app with **Rails**, **React**,\nand **GraphQL**. This is a simple blog engine using ordinary features which can be found in most web applications.\n\nIf you are interested by Elixir, I created a similar application with Phoenix and Absinthe that you might like:\n[Yummy Phoenix GraphQL](https://github.com/MatthieuSegret/yummy-phoenix-graphql).\n\n## Technologies\n\n### Frontend\n\n* [TypeScript](https://github.com/Microsoft/TypeScript) - A superset of JavaScript that compiles to clean JavaScript\n  output.\n* [React](https://facebook.github.io/react) - A JavaScript library for building user interfaces. It introduces many\n  great concepts, such as, Virtual DOM, Data flow, etc.\n* [Create React App](https://github.com/facebookincubator/create-react-app) - is a new officially supported way to\n  create single-page React applications. It offers a modern build setup with no configuration.\n* [Bulma](https://bulma.io) - Bulma is a modern CSS framework based on Flexbox\n* [Apollo 2](http://dev.apollodata.com/) - A flexible, fully-featured GraphQL client for every platform.\n* [React Final Form](https://github.com/erikras/react-final-form) - High performance subscription-based form state\n  management for React.\n\n### Backend\n\n* Ruby 2.4\n* Rails 5.1\n* [GraphQL-Ruby](https://github.com/rmosolgo/graphql-ruby) - GraphQL-Ruby is a Ruby implementation of\n  [GraphQL](http://graphql.org).\n* [GraphQL-batch](https://github.com/Shopify/graphql-batch) - GraphQL-batch is a query batching executor for the graphql\n  gem.\n* [Graphiql](https://github.com/graphql/graphiql) - Graphiql is an in-browser IDE for exploring GraphQL.\n* [Rack CORS](https://github.com/cyu/rack-cors) - Rack Middleware for handling Cross-Origin Resource Sharing (CORS),\n  which makes cross-origin AJAX possible.\n* [Optics Agent](http://www.apollodata.com/optics) - Optics Agent for GraphQL Monitoring\n* SQLite3 for development and PostgreSQL for production.\n\n## Features\n\n* CRUD (create / read / update / delete) on posts\n* Creating comments on post page\n* Pagination on posts listing\n* Searching on posts\n* Authentication with Devise and authorizations (visitors, users, admins)\n* Creating user account\n* Update user profile and changing password\n* Setup dev tools\n* Application ready for production\n\n## GraphQL Using\n\n* Queries et mutations\n* FetchMore for pagination\n* Using `apollo-cache-inmemory`\n* Apollo Link (dedup, onError, auth)\n* [Managing local state](https://github.com/apollographql/apollo-link-state) with Apollo Link\n* Optimistic UI\n* [Static GraphQL queries](https://dev-blog.apollodata.com/5-benefits-of-static-graphql-queries-b7fa90b0b69a)\n* Validation management and integration with Final Form\n* Authentication and authorizations\n* Protect queries and mutations on GraphQL API\n* Batching of GraphQL queries into one HTTP request\n* Batching of SQL queries backend side\n\n## Prerequisites\n\n* Ruby 2.4\n* Node 9.2 ([Installing Node](https://nodejs.org/en/download/package-manager))\n* SQLite3\n\n## Getting Started\n\n* Install Bundler\n\n          $ gem install bundler\n\n* Checkout the graphql-rails-blog git tree from Github\n\n          $ git clone https://github.com/MatthieuSegret/graphql-rails-blog.git\n          $ cd graphql-rails-blog\n          graphql-rails-blog$\n\n* Run Bundler to install/bundle gems needed by the project:\n\n          graphql-rails-blog$ bundle\n\n* Create the database:\n\n          graphql-rails-blog$ rails db:migrate\n\n* Load sample records:\n\n          graphql-rails-blog$ rails db:seed\n\n* Run the Rails server in development mode\n\n          graphql-rails-blog$ rails server\n\n* Run Yarn to install javascript package in other terminal:\n\n          graphql-rails-blog$ cd client\n          graphql-rails-blog/client$ yarn\n\n* Start client in development mode. You should be able to go to `http://localhost:8080` :\n\n            graphql-rails-blog/client$ yarn start\n\n## Next step\n\n* [ ] Use subscription GraphQL feature\n* [ ] Create mobile app with React Native\n\n## Screens\n\n#### Listing posts\n\n\u003cimg alt=\"Listing posts\" src=\"http://documents.matthieusegret.com/listing-posts.png\" width=\"500\"\u003e\n\n#### Creating comments\n\n\u003cimg alt=\"Creating comments\" src=\"http://documents.matthieusegret.com/creating-comments.png\" width=\"500\"\u003e\n\n#### Post page\n\n\u003cimg alt=\"Post page\" src=\"http://documents.matthieusegret.com/get-post.png\" width=\"500\"\u003e\n\n#### Editing post\n\n\u003cimg alt=\"Editing post\" src=\"http://documents.matthieusegret.com/edit-post.png\" width=\"500\"\u003e\n\n## License\n\nMIT © [Matthieu Segret](http://matthieusegret.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMatthieuSegret%2Fgraphql-rails-blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMatthieuSegret%2Fgraphql-rails-blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMatthieuSegret%2Fgraphql-rails-blog/lists"}