A Relay-based web development kit on Flask
Project description
Relask
A Relay-based web development kit on Flask.
Free software: BSD license
Documentation: https://relask.readthedocs.io.
Features
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
Usage
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 run
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2016-06-07)
First release on PyPI.