My project as an intern at Vinta Software.
MIT License
A Django project boilerplate/template with lots of state of the art libraries and tools like:
For continuous integration, a CircleCI configuration .circleci/config.yml
is included.
Also, includes a Heroku app.json
and a working Django production.py
settings, enabling easy deployments with 'Deploy to Heroku' button. Those Heroku plugins are included in app.json
:
This is a good starting point for modern Python/JavaScript web projects.
pip install django
, to have the django-admin
command available.django-admin startproject theprojectname --extension py,yml,json --name Procfile,Dockerfile,README.md,.env.example --template=https://github.com/vintasoftware/django-react-boilerplate/archive/boilerplate-release.zip
In the next steps, always remember to replace theprojectname with your project's name
--extension
and --name
params!mkvirtualenv theprojectname
or python -m venv theprojectname
.workon theprojectname
or source theprojectname/bin/activate
pip install pip-tools
(maybe you'll have to run this command as an OS superuser).make compile_install_requirements
ADMINS
settings variable in pokebattle/pokebattle/settings/base.py
SERVER_EMAIL
to the email address used to send e-mails in pokebattle/pokebattle/settings/production.py
circleci
to .circleci
with the command mv circleci .circleci
After completing ALL of the above, remove this Project bootstrap
section from the project README. Then follow Running
below.
backend
folder, do the following:pokebattle/settings/local.py.example
:cp pokebattle/settings/local.py.example pokebattle/settings/local.py
.env.example
:cp .env.example .env
users
app:python manage.py makemigrations
python manage.py migrate
users
app:docker-compose run --rm backend python manage.py makemigrations
docker-compose run --rm backend python manage.py migrate
pip install -r requirements.txt && pip install -r dev-requirements.txt
npm install
npm run start
backend
directory.workon theprojectname
or source theprojectname/bin/activate
depending on if you are using virtualenvwrapper or just virtualenv.python manage.py runserver
docker-compose up -d
docker-compose logs -f service_name
(either backend, frontend, etc)workon theprojectname
or source theprojectname/bin/activate
depending on if you are using virtualenvwrapper or just virtualenv.python manage.py celery
make test
Will run django tests using --keepdb
and --parallel
. You may pass a path to the desired test module in the make command. E.g.:
make test someapp.tests.test_views
Add the libname to either requirements.in or dev-requirents.in, then either upgrade the libs with make upgrade
or manually compile it and then, install.
pip-compile requirements.in > requirements.txt
or make upgrade
pip install -r requirements.txt
Before start creating your own apps, run the command make clean_examples
in order to clean up the example apps from the front and backend.
This project comes with an app.json
file, which can be used to create an app on Heroku from a GitHub repository.
After setting up the project, you can init a repository and push it on GitHub. If your repository is public, you can use the following button:
If you are in a private repository, access the following link replacing $YOUR_REPOSITORY_LINK$
with your repository link.
https://heroku.com/deploy?template=$YOUR_REPOSITORY_LINK$
Remember to fill the ALLOWED_HOSTS
with the URL of your app, the default on heroku is appname.herokuapp.com
. Replace appname
with your heroku app name.
Sentry is already set up on the project. For production, add SENTRY_DSN
environment variable on Heroku, with your Sentry DSN as the value.
You can test your Sentry configuration by deploying the boilerplate with the sample page and clicking on the corresponding button.
The bin/post_compile
script has a step to push Javascript source maps to Sentry, however some environment variables need to be set on Heroku.
You need to enable Heroku dyno metadata on your Heroku App. Use the following command on Heroku CLI:
heroku labs:enable runtime-dyno-metadata -a <app name>
The environment variables that need to be set are:
SENTRY_ORG
- Name of the Sentry Organization that owns your Sentry Project.SENTRY_PROJECT_NAME
- Name of the Sentry Project.SENTRY_API_KEY
- Sentry API key that needs to be generated on Sentry. You can find or create authentication tokens within Sentry.After enabling dyno metadata and setting the environment variables, your next Heroku Deploys will create a release on Sentry where the release name is the commit SHA, and it will push the source maps to it.
prospector
and npm run lint
on project root.pre-commit install
to enable the hook into your git repo. The hook will run automatically for each commit.git commit -m "Your message" -n
to skip the hook if you need.Some settings defaults were decided based on Vinta's experiences. Here's the rationale behind them:
CELERY_ACKS_LATE = True
We believe Celery tasks should be idempotent. So for us it's safe to set CELERY_ACKS_LATE = True
to ensure tasks will be re-queued after a worker failure. Check Celery docs on "Should I use retry or acks_late?" for more info.
If you wish to contribute to this project, please first discuss the change you wish to make via an issue.
Check our contributing guide to learn more about our development process and how you can test your changes to the boilerplate.
This project, as other Vinta open-source projects, is used in products of Vinta clients. We are always looking for exciting work, so if you need any commercial support, feel free to get in touch: [email protected]
Copyright (c) 2020 Vinta Servios e Solues Tecnolgicas Ltda.