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