This is a basic boilerplate starter for a fullstack web project with Django as the server, PostgreSQL as the database and Next.js as the frontend.
- PostgreSQL used as the primary database.
- Superuser is already initialized with the credentials: Username-
admin
, Email-admin@admin.com
, Password-admin
- Integration with Django Rest Framework
- Integrated Djoser for user register/login/logout workflows.
- Used JWT for Authentication.
- API Documentation is configured using swagger.
- Containerized using Docker and managed using docker-compose.
- A typescripted Next.js client has been preinstalled and integrated with docker-compose.
- Added Chakra UI and Chakra icons in the frontend as a design and component library alongwith axios for making api calls.
To get a local copy of this template up and running on your machine, follow these simple steps.
- Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
- Clone the repo
git clone https://github.com/akshat2602/django-nextjs-boilerplate.git
- Change the current directory to the template
cd django-nextjs-boilerplate
- Add a
.env.dev
file at project root & create/add following environment variables:
#PostgreSQL Config
DB_ENGINE=django.db.backends.postgresql
POSTGRES_DB=db
POSTGRES_USER=user
POSTGRES_PASSWORD=password
DB_HOST=db
DB_PORT=5432
#Django Config Variables
PYTHONUNBUFFERED=True
DJANGO_DEBUG=True
DJANGO_SUPERUSER_USERNAME=admin
DJANGO_SUPERUSER_EMAIL=admin@admin.com
DJANGO_SUPERUSER_PASSWORD=admin
SECRET_KEY=<DJANGO-INSECURE-KEY>
DEFAULT_USER=guest
DEFAULT_PASS=guest
#Production Config
GUNICORN_WORKERS=5
# MAPQUEST DEV | GEO CODER
GEOCODER_API=<MAPQUEST-DELOPER-API-KEY>
# DOCKER-COMPOSE
WAIT_HOSTS=db:5432
- Build the docker containers
docker-compose -f docker-compose.dev.yml build
for the dev containers anddocker-compose -f docker-compose.prod.yml build
for the prod containers - Run the docker containers
docker-compose -f docker-compose.dev.yml up
for the dev containers anddocker-compose -f docker-compose.prod.yml up
for the prod containers
API documentation is done using swagger. Visit /swagger
for API documentation.
Distributed under the MIT License. See LICENSE
for more information.
- Add models to <MY_APP>/models.py
- Register the app in server/settings.py
- Register model classe to admin in <MY_APP>/admin.py
- Launch containers with docker-compose
- Access the server container using
$ docker exec -it <CONTAINER-ID> bash
- Run migrations (
$ python manage.py makemigrations
&$ python manage.py migrate
) - Input test data:
root@1f9482e255eb:/src# python
Python 3.9.12 (main, Mar 29 2022, 14:20:48)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.setup()
>>> from flight.models import Airport, Plane, Duty, Leg, Receipt