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 -
LIVE Demo
- 👉 Rocket Django -
Product Page
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
fromenv.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
- Create a Blueprint instance
- Go to https://dashboard.render.com/blueprints this link.
- Click
New Blueprint Instance
button. - Connect the
repo
that you want to deploy. - Fill the
Service Group Name
and click on theUpdate Existing Resources
button. - Edit the Environment and specify the PYTHON_VERSION
- Version
3.11.5
was used for this deployment
- Version
- After that, your deployment will start automatically.
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
- 👉 Access AppSeed for more starters and support
- 👉 Deploy Projects on Aws, Azure and DO via DeployPRO
- 👉 Create landing pages with Simpllo, an open-source site builder
- 👉 Build apps with Django App Generator (free service)