This is another for-fun project: an admin interface in React JS. The package ships with a simple API and is hosted on Github, check it out.
(Unless of course you arrived here from Github, in which case please stay here and try not to get stuck in an infinite loop.)
Django is a fantastic tool to create app backends in literally: minutes, and it even comes with a built-in admin to manage all data on the site. It’s not very pretty, but it gets the job done.
Enterprise clients usually want a better and more user friendly admin interface. Therefore more often than not we end up extending Django with another tool that incorporates all sorts of dashboards and extra features that aren’t just for manipulating the data models.
When you want to extend Django with an admin tool that actual humans can use, you have two choices: tweak the built-in one so that it becomes a little friendlier, or, create another interface from scratch.
The project I’ve created is to create a simple admin interface in a fairly extendable way:
- It’s a separate web app that can (although doesn’t necessarily need to) be hosted on another server;
- built on REST API calls and standard OAuth2 (both available in Django via well managed packages)
- doesn’t even need to use Django as a backend: the login works with any OAuth2 provider, and you can write your API using your favourite framework as well.
I have yet to update the Github repository with more features, but the one already in is a good start. When I’m writing this post we are just about to release two small projects at my company that have been built on top of this React admin. I’ll report back on how those catch on, but as far as the development goes we’ve been quite happy with the setup.
We can add new features really, really quickly, the product is pretty neat, and in the long run, an automatic Django-model generator doesn’t seem to be impossible either. React JS also turned out to be quite some fun to build software with. It’s flexible enough to work together with jQuery plugins, Bootstrap, Backbone and whatever else we needed down the road.
To make this project more transportable, I used an off-site build. That means that the front-end is literally just some HTML-and-JS static files after the build, and so the hosting is a breeze. You can put it on Apache, nginx, or whatever really, you can even host it from Django’s static folder.
See the screenshots on Github, and as always, ping me on Twitter if you want to chat about this.