Python, React, GraphQL. Batteries included.
Get started quickly building modern web applications with Python and React.
Build applications, not build systems.
Creating your first MoWAKi project is as simple as:
curl -sL https://git.io/mowaki-create | bash -s - ./newproject
Or if you don't feel like running some untrusted script from the Internet, have a look at the source code here.
Also, visit the MoWAKi project on GitHub for more information.
What's in the box?
In the starter project, we provide several components, beautifully configured to nicely work together:
- Python micro-framework, used to expose a GraphQL endpoint.
Comes configured with CORS support (so you can serve your API from a different dommain than your frontend) and websockets (via flask-sockets).
- GraphQL server, via graphql-core
- The example schema is defined using graphql-core, but you can use something higher-level like Graphene if you wish.
Work is in progress to build an even better GraphQL schema definition library, named PyQL.
- We provide SQLAlchemy integration with Flask viaflask-sqlalchemy-core.
Why the need for another integration library you might ask? While you don't technically need one (just define your database connection pool globally), it offers a few nice features, eg. cleaner support for nested transactions, which come in especially handy for speeding up test runs.
- React, via neutrinojs
- Neutrino.js is by far the best "scaffolding" framework for React we tested so far.
It provides very convenient setup, yet with a powerful plugin system to allow customization (without "ejecting" like you would have to in create-react-app, for example).
- Apollo Client
- Apollo Client is a powerful GraphQL client library, supporting features like caching / request tracking. No need to write complicated Redux actions / reducers for every object you want to query is a great plus!
- GraphQL subscriptions
- Websockets (powering GraphQL subscriptions) has always been tricky to set up. You need special configuration on the server, a message queue to transport events to the right websocket endpoint, ...
We provide all you need, right out of the box.
- Write applications, not build systems
- We provide everything you need to start writing your application code right away, without having to care about configuration and build systems.
- REST → GraphQL
- No more hacking your way around RESTful limitations, or having to manually write Redux actions / reducers. Apollo client will use introspection on the GraphQL schema to figure out how to cache things on the client.
- A kit, not a framework
- We simply provide a starting point for your project. The way you customize it is entirely up to you. You won't be unnecessarily constrained by any "framework needs". In fact, what you end up with is a "Flask + React (neutrino)" project, not a "MoWAKi project". Replace anything you want to as you go.