Demo blog application powered by Rails, react, graphql and Relay.
This blog is an exploration exercise to understand two new technologies - GraphQL and Relay. We are using standard rails application together with webpack for handling front-end dependencies.
Status
Application supports reading and creating data from and on server using GraphQL.
Tutorial:
- Introduction: https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-getting-started-955a49d251de
- Part1: https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-creating-types-and-schema-b3f9b232ccfc#.6micmekh2
- Part2: https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-first-relay-powered-react-component-cb3f9ee95eca#.ssisfzsm0
- Part3: https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-dynamic-component-rendering-2be4e208ef92#.gvw5kevg1
- Part4 https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-authentication-and-authorisation-f7c07ebb47b3#.2y1h14x2p
- Part5 - Integrating Webpack with
react-on-rails
https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-moving-to-webpack-9c6a420b4eea#.60z7xg1j0 - Final - Wrap up https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-wrap-up-500c67522cd2#.gt0b65fa7
Current features
- List posts
- List comments of the posts
- Infinite Scroll - posts and comments
- Show author info, votes and comments count
- Mutations to create comments and votes
- Edit and Update comments
- Create and Delete posts
- Add a react native app https://github.com/gauravtiwari/graphql-blog-mobile
Demo Links
Resources
- Facebook Relay: Official relay docs
- GraphQL: Official GraphQL spec
- graphql-ruby & graphql-relay-ruby: For defining GraphQL schema and Relay implementation in Ruby GraphQL classes, and getting Rails to speak GraphQL.
Webpack
: Module loader
TODOs
- Explore Relay subscriptions to hook it with ActionCable http://graphql.org/blog/subscriptions-in-graphql-and-relay/
Running locally
To run the application, please just clone the repo and run it like so:
git clone [email protected]:gauravtiwari/relay-rails-blog.git
cd relay-rails-blog
bundle install
npm install
./start (from terminal). If you get permission error, just do chmod 777 start