Skip to main content

Rocket Django

Open-source Django Starter styled with Tailwind and Flowbite.

Open-source Django Starter that incorporates a few modern technologies provided out-of-the-box, at a production-ready level. Rocket Django comes with API (via DRF), Charts, server-side DataTable, Celery for async tasks processing, and Docker support.

Rocket Django - Open-source Django Starter styled with Tailwind and Flowbite


Features​

The codebase is shipped with basic features that are usually implemented in most of the projects:

  • Up-to-date Dependencies
  • Tailwind/Flowbite Integration via WebPack
  • Extended User Model
  • API via DRF
  • Charts
  • DataTables
  • Celery (async processing)
  • Docker

System Requirements​

  • Python3 - the programming language used to code the app
  • GIT - used to clone the source code from the Github repository
  • NodeJS v18.20.0 or above (for Tailwind set up)
  • Docker - a popular virtualization software

Download Sources​

The product can be downloaded from the official page or GitHub using GIT:

$ git clone https://github.com/app-generator/rocket-django.git
$ cd rocket-django

Once the sources are available in the local filesystem, we can start the project using Docker or manual build.


Start with Docker​

# Optional (kill all existing containers)
$ docker container kill $(docker ps -q) ; docker container rm $(docker ps -a -q) ; docker network prune -f
# Start the APP
$ docker-compose up --build

Visit http://localhost:5085 in your browser. The app should be up & running. The starter comes with two default users:

  • Ordinary user: test / test@appseed.us / Pass12__ (the password)
  • Django SuperUser (admin): admin / admin@appseed.us / Pass12__ (the password)

Once authenticated with the above credentials, the sidebar shows different items.


Manual Build​

👉 Create .env from env.sample

DEBUG=False

SECRET_KEY=<STRONG_KEY_HERE>

👉 Install Django modules via VENV

$ virtualenv env
$ source env/bin/activate
$ pip install -r requirements.txt

👉 Install Tailwind/Flowbite (another terminal)

Tested with Node v18.20.0 (use at least this version or above)

$ npm install
$ npm run dev
$ npx tailwindcss -i ./static/assets/style.css -o ./static/dist/css/output.css --watch # DEVELOPMENT (LIVE reload)
$ npx tailwindcss -i ./static/assets/style.css -o ./static/dist/css/output.css # PRODUCTION

👉 Migrate DB

$ python manage.py makemigrations
$ python manage.py migrate

👉 Create Superuser & Start the Rocket Django Starter

$ python manage.py createsuperuser # create the admin
$ python manage.py runserver # start the project

At this point, we can start using the starter.


Use MySql​

By default, the starter uses SQLite for persistence. In order to use MySql, here are the steps:

  • Start the MySql Server
  • Create a new DataBase
  • Create a new user with full privileges over the database
  • Install the MySql Python Driver (used by Django to connect)
    • $ pip install mysqlclient
  • Edit the .env with the SQL Driver Information & DB Credentials

DB_ENGINE=mysql
DB_HOST=localhost
DB_NAME=<DB_NAME_HERE>
DB_USERNAME=<DB_USER_HERE>
DB_PASS=<DB_PASS_HERE>
DB_PORT=3306

Once the above settings are done, run the migration & create tables:

$ python manage.py makemigrations
$ python manage.py migrate

Production Build​

To use the starter in production mode, here are the steps:

  • Set DEBUG=False in .env
  • Execute collectstatic command
    • $ python manage.py collectstatic --no-input

As a model, feel free to take a look at build.sh, the file executed by the CI/CD flow for Render:


Deploy on Render​

At this point, the product should be LIVE.


Codebase​

< PROJECT ROOT >
|
|-- core/ # Project Settings
| |-- settings.py
| |-- wsgi.py
| |-- urls.py
|
|-- home/ # Presentation app
| |-- views.py # serve the HOMEpage
| |-- urls.py
| |-- models.py
|
|-- apps/ # Utility Apps
| |-- common/ # defines models & helpers
| | |-- models.py
| | |-- util.py
| |-- users # Handles Authentication
| |-- api # DRF managed API
| |-- charts # Showcase Different Charts
| |-- tables # Implements DataTables
| |-- tasks # Celery, async processing
|
|-- templates/ # UI templates
|-- static/ # Tailwind/Flowbite
| |-- src/ #
| |-- input.css # CSS Styling
|
|-- Dockerfile # Docker
|-- docker-compose.yml # Docker
|
|-- render.yml # CI/CD for Render
|-- build.sh # CI/CD for Render
|
|-- manage.py # Django Entry-Point
|-- requirements.txt # dependencies
|-- .env # ENV File
|
|-- *************************************************

✅ Resources​