Mirv / graphql-rails-blog

Blog App built with Rails 5, React and GraphQL

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Technologies

Frontend

  • React - A JavaScript library for building user interfaces. It introduces many great concepts, such as, Virtual DOM, Data flow, etc.
  • Babel - Babel is a JavaScript compiler which allows you to use next generation, ES6/ES7, JavaScript... today.
  • Sass - Sass is an extension of CSS, adding nested rules, variables, mixins, selector inheritance, and more.
  • Redux - Redux is a predictable state container for JavaScript apps
  • Redux Form - A Higher Order Component using react-redux to keep form state in a Redux store.
  • Apollo - A flexible, fully-featured GraphQL client for every platform.
  • Create React App - is a new officially supported way to create single-page React applications. It offers a modern build setup with no configuration.
  • ESlint - ESlint is a pluggable linting utility for JavaScript, and JSX.

Backend

  • Ruby 2.4
  • Rails 5.1
  • JWT authentication with Ruby JWT gem.
  • 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
  • Integrating with Redux and updating store
  • Optimistic UI
  • Colocate data / component with fragments
  • Validation management and integration with Redux 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.js v6 or newer + Yarn package manager
  • 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
  • Use TypeScript
  • Create mobile app with React Native

Screens

Listing posts

Listing posts

Creating comments

Creating comments

Post page

Post page

License

MIT © Matthieu Segret

About

Blog App built with Rails 5, React and GraphQL

License:MIT License


Languages

Language:JavaScript 55.4%Language:Ruby 43.1%Language:CSS 1.1%Language:HTML 0.4%