MatthieuSegret / Graphql Rails Blog
Programming Languages
Projects that are alternatives of or similar to Graphql Rails Blog
GraphQL Rails Blog
This application can be used as starter kit if you want to get started building an app with Rails, React, and GraphQL. This is a simple blog engine using ordinary features which can be found in most web applications.
If you are interested by Elixir, I created a similar application with Phoenix and Absinthe that you might like: Yummy Phoenix GraphQL.
Technologies
Frontend
- TypeScript - A superset of JavaScript that compiles to clean JavaScript output.
- React - A JavaScript library for building user interfaces. It introduces many great concepts, such as, Virtual DOM, Data flow, etc.
- Create React App - is a new officially supported way to create single-page React applications. It offers a modern build setup with no configuration.
- Bulma - Bulma is a modern CSS framework based on Flexbox
- Apollo 2 - A flexible, fully-featured GraphQL client for every platform.
- React Final Form - High performance subscription-based form state management for React.
Backend
- Ruby 2.4
- Rails 5.1
- GraphQL-Ruby - GraphQL-Ruby is a Ruby implementation of GraphQL.
- GraphQL-batch - GraphQL-batch is a query batching executor for the graphql gem.
- Graphiql - Graphiql is an in-browser IDE for exploring GraphQL.
- Rack CORS - Rack Middleware for handling Cross-Origin Resource Sharing (CORS), which makes cross-origin AJAX possible.
- Optics Agent - Optics Agent for GraphQL Monitoring
- SQLite3 for development and PostgreSQL for production.
Features
- CRUD (create / read / update / delete) on posts
- Creating comments on post page
- Pagination on posts listing
- Searching on posts
- Authentication with Devise and authorizations (visitors, users, admins)
- Creating user account
- Update user profile and changing password
- Setup dev tools
- Application ready for production
GraphQL Using
- Queries et mutations
- FetchMore for pagination
- Using
apollo-cache-inmemory
- Apollo Link (dedup, onError, auth)
- Managing local state with Apollo Link
- Optimistic UI
- Static GraphQL queries
- Validation management and integration with Final Form
- Authentication and authorizations
- Protect queries and mutations on GraphQL API
- Batching of GraphQL queries into one HTTP request
- Batching of SQL queries backend side
Prerequisites
- Ruby 2.4
- Node 9.2 (Installing Node)
- SQLite3
Getting Started
-
Install Bundler
$ gem install bundler
-
Checkout the graphql-rails-blog git tree from Github
$ git clone https://github.com/MatthieuSegret/graphql-rails-blog.git $ cd graphql-rails-blog graphql-rails-blog$
-
Run Bundler to install/bundle gems needed by the project:
graphql-rails-blog$ bundle
-
Create the database:
graphql-rails-blog$ rails db:migrate
-
Load sample records:
graphql-rails-blog$ rails db:seed
-
Run the Rails server in development mode
graphql-rails-blog$ rails server
-
Run Yarn to install javascript package in other terminal:
graphql-rails-blog$ cd client graphql-rails-blog/client$ yarn
-
Start client in development mode. You should be able to go to
http://localhost:8080
:graphql-rails-blog/client$ yarn start
Next step
- [ ] Use subscription GraphQL feature
- [ ] Create mobile app with React Native
Screens
Listing posts
Creating comments
Post page
Editing post
License
MIT © Matthieu Segret