A Relay-based web development kit on Flask.
- Free software: BSD license
- Documentation: https://relask.readthedocs.io.
- Fast web development setup with ES6, React and Relay
- Batteries included: React Router, Webpack and Babel
- Server is powered by Python, Flask and Graphene
- JWT integrated, with a working example using Flask-Login
- Install Relask:
pip install git+https://github.com/decentfox/relask- Create a Flask application, for example: http://flask.pocoo.org/docs/quickstart/
- Initialize your Flask application with Relask (this requires npm):
FLASK_APP=xxx flask init-relask- Under the root path of your Flask application, create scripts/app.js with something like this:
import React from "react";
import ReactDOM from "react-dom";
import {Route, IndexRoute} from "react-router";
import Relay from "react-relay";
import {Relask, RelayContainer} from "babel-loader!relask";
@RelayContainer
class Hello extends React.Component {
render() {
return (
<div>Hello, {this.props.hello.name}!</div>
);
}
static relay = {
fragments: {
hello: () => Relay.QL`fragment on Hello { name }`
}
};
}
ReactDOM.render((
<Relask>
<Route path="/" component={Hello} queries={{
hello: () => Relay.QL`query { hello }`
}}/>
</Relask>
), document.getElementById('app'));- Initialize the Relask extension with something like this:
import graphene
from flask import Flask
from graphene import relay
from relask import Relask
class Hello(relay.Node):
name = graphene.String()
def resolve_name(self, args, info):
return 'World'
@classmethod
def get_node(cls, id, info):
return Hello(id=id)
class Query(graphene.ObjectType):
node = relay.NodeField()
hello = graphene.Field(Hello)
def resolve_hello(self, args, info):
return Hello.get_node(1, None)
app = Flask(__name__)
relask = Relask(app)
relask.schema.query = Query- See your result with one command - don't worry about webpack any more:
FLASK_APP=xxx flask runThis package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.