development_process.md
June 25, 2026 ยท View on GitHub
Development Setup
Docker (Recommended)
Install docker-compose (or Docker Desktop which installs this for you)
docker compose -f docker-compose.dev.yml build
docker compose -f docker-compose.dev.yml up -d
You should now be able to see the app running on localhost:8000
Note: If you get NoSuchBucket error in the web container, execute
aws --endpoint-url http://localhost:4566 s3 mb s3://mybucketin the localstack/floci container and restart web container.
make create-bucket
If you haven't already done migrations and created a superuser, you'll want to do it here
docker compose -f docker-compose.dev.yml exec web tests/manage.py migrate
docker compose -f docker-compose.dev.yml exec web tests/manage.py createsuperuser
Running tests:
docker compose -f docker-compose.dev.yml exec -T web make test-all
The integration tests are set up within docker. I recommend running the integration tests only in docker.
Docker is also set to mirror local folder so that you can edit code/tests and don't have to rebuild to run new code/tests.
Use docker compose -f docker-compose.dev.yml up -d --force-recreate if you need to restart the docker containers. For example when updating the docker-compose.yml file, but if you change Dockerfile you have to rebuild.
Debugging:
There's a environment variable ADMIN_CONFIRM_DEBUG which when set to true will print to stdout the messages that are sent to log.
The test project already has this set to true.
Example:
from admin_confirm.utils import log
log('Message to send to stdout')
Floci (Localstack-compatible): Floci is used for integration testing and also in the test project.
To check if localstack is running correctly, go to http://localhost:4566
To check if the bucket has been set up correctly, go to http://localhost:4566/mybucket
To check if the static files have been set up correctly, go to http://localhost:4566/mybucket/static/admin/css/base.css
Release process
Honestly this part is just for my reference. But who knows :) maybe we'll have another maintainer in the future.
-
Update version in
setup.py -
Push this branch and dispatch the workflow for
Test Release -
Install new version locally First you have to uninstall if you used
pip install -eearliermake install-testpypi VERSION=<VERSION>Add test locally
make runIf the css is not applied, run:
python tests/manage.py collectstatic -
Manually smoke check changes
-
Merge the version change into main
-
Then dispatch the workflow for
Publish Release
To update supported version badges, use https://shields.io (Most of these are dynamic though)