GitHunt
DE

demonno/generator-django-rest

Yeoman generator for a Django REST API & an optional React SPA

generator-django-rest npm Build Status GitHub license

A Yeoman generator for a Django REST API
(and optionally a React SPA)
that makes you efficient, includes features you need in a typical
modern web app, yet keeps things simple.

Note: the project is still considered to be in beta until I get a chance
to test it on more apps. That said, I am using it in my own projects :)

Features

The philosophy is to include features useful across projects
that are tedious to set up from scratch.
Some of the cool ones are:

  • quick to launch πŸš€ – start a new project and deploy it to Heroku
    in 3 commands:

      yo django-rest
      ./scripts/devsetup.sh
      ./scripts/deploy.sh
    
  • productive ⚑️ – start the Django, DB & optionally frontend dev servers easily

      ./scripts/dev.sh
    
  • sane logging πŸ“œ – defaults to
    fail nicely

  • modern JS πŸ¦„ – serve static files on / using django-spa & Whitenoise for
    nice single-page apps using React / Angular2 / Vue…

  • self-sufficient ⛡️ - option to automatically set up a create-react-app
    frontend for you with all the integration settings under the mantra
    one app, one repo, one dyno

  • Heroku-friendly packaging πŸ“¦ – if you're using the built-in React frontend,
    deploy.sh minifies the frontend and packages it up with Django
    into a separate prod branch ready for deployment as a Django web app
    (that gets deployed to Heroku by default)

  • 12-factor config πŸ€“ – environment variable configuration

    • define a variable in .env for dev e.g. REDIS_URL=redis://localhost:6379/0
    • use it in settings.py, e.g. CELERY_RESULT_BACKEND = env('REDIS_URL')
    • set variables on the prod server (just worksβ„’ with Redis on Heroku)
  • batteries included πŸ”‹

    • Celery with a Redis backend – cause you'll need an async task queue
    • Backblaze B2
      media file storage backend (optional)
  • familiar 🐢 – check out the rough
    project file layout,
    it's much like django-admin startproject myproject would set it up
    (only repeats the project name twice,
    i.e. ~/code/myproject/myproject/settigns.py)

Getting Started

To begin, you need to install node.js.
Once you have that, you need Yeoman pre-installed. Yeoman lives in the
npm package repository. You only have to ask for him
once, then he packs up and moves into your hard drive.

npm install -g yo

Then, we need the django-rest generator, i.e. plug-in. You install
generator-django-rest from
npm.

npm install -g generator-django-rest

Finally, for every new project you would initiate the generator
in an empty folder.

mkdir myproject
cd myproject
yo django-rest

Now check HACKING.md for extra instructions.

License

MIT

Contributors

MIT License
Created October 1, 2017
Updated October 1, 2017
demonno/generator-django-rest | GitHunt