Django Project to automate tasks for the DjangoCon US.
- Docker and Docker Compose
- Just command runner (optional but recommended)
-
Clone and setup environment:
just bootstrap
This will:
- Install/upgrade pip and uv
- Copy
.env-distto.envif it doesn't exist - Build the Docker image
- Run database migrations
-
Start the development server:
just up
Access the application at http://localhost:8000
If you don't have Just installed:
-
Create environment file:
cp .env-dist .env
-
Build and start:
docker compose build docker compose up
just bootstrap- Bootstrap the project: install Python tools, create .env file, and build Docker imagesjust update- Update the project: upgrade pip/uv, pull latest images, and rebuild containers
just up/just server- Start all services (web, db, worker) in the foregroundjust start- Start services in detached/background modejust down/just stop- Stop and remove all running containers (preserves volumes)just restart [service]- Restart one or more services (e.g., 'just restart web')just build- Build or rebuild the Docker images without cachejust console- Open an interactive bash shell inside the web containerjust logs- View container logs (use -f to follow, --tail N to limit lines)just tail- Follow the last 100 lines of logs in real-timejust clean- Remove all containers, volumes, and locally built images
just migrate- Apply all pending database migrationsjust makemigrations- Create new migration files for model changesjust createsuperuser- Create a superuser account for Django admin accessjust shell- Open Django's interactive Python shell with project contextjust runserver- Run Django's built-in development server (bypasses Docker)just run [command]- Run any Django management command (e.g., 'just run collectstatic')just check- Validate Django project configuration and settings
just test [path]- Run the test suite with pytest (optionally specify test paths)just lint- Run pre-commit hooks on all files (formatting, linting, type checks)just fmt- Format this justfile using Just's built-in formatter (requires --unstable flag)
just lock- Generate pinned requirements.txt from requirements.injust upgrade- Update all Python dependencies to their latest compatible versions
just bump [--dry]- Update version number using bumpver (--dry for preview, omit for actual bump)
- tickets/ - Ticket link distribution system for event access
- titowebhooks/ - Webhook receiver and sales dashboards for the Tito event platform
- emailoctopus/ - Email marketing integration with the Email Octopus API
- volunteers/ - Attendee volunteer shift sign-ups, coordinator dashboard, and schedule sync
- thunderdome/ - Talk/program review and scoring
- travel_safety/ - Travel safety check-in registration
- social_monitor/ - Social media monitoring
- Email-based ticket claiming - Attendees can claim unique ticket links
- Admin ticket management - Bulk creation and monitoring of tickets
- Volunteer scheduling - Shift sign-ups, coverage dashboard, and iCal sync from the conference schedule
- GitHub OAuth authentication - Staff login via GitHub
- Email subscription management - Integration with Email Octopus for marketing
- Webhook processing - Handle Tito purchase events
Deployments are managed by Coolify and happen automatically
whenever something is merged into the main branch.
Production URL: https://automation.defna.org
Edit .env file to configure:
- Database:
DATABASE_URL(defaults to local PostgreSQL) - Email:
EMAILOCTOPUS_API_KEYfor Email Octopus integration - Slack:
SLACK_OAUTH_TOKENfor notifications - Debug:
DJANGO_DEBUG=Truefor development
- Go to GitHub → Settings → Developer settings → OAuth Apps → New OAuth App
- Fill in:
- Application name: DjangoCon US Automation (or your app name)
- Homepage URL:
https://automation.defna.org - Authorization callback URL:
https://automation.defna.org/accounts/github/login/callback/
- Click Register application
- Copy the Client ID
- Click Generate a new client secret and copy it
- Go to
/admin/ - Navigate to Social applications → Add
- Fill in:
- Provider: GitHub
- Name: GitHub
- Client id: (paste from GitHub)
- Secret key: (paste from GitHub)
- Sites: Add your site (make sure Site ID 1 exists with correct domain)
- Save
In Django Admin → Sites, ensure the site with ID 1 has:
- Domain name:
automation.defna.org - Display name: DjangoCon US Automation (or similar)
- Backend: Django 6.0 with Python 3.13
- Database: PostgreSQL (via
psycopg) with atomic transactions - Task Queue: django-q2 for background processing (
qclusterworker) - Frontend: Tailwind CSS (django-tailwind-cli) with minimal JavaScript (htmx)
- Navigation: django-simple-nav
- Authentication: django-allauth with GitHub OAuth
- App server: Gunicorn, run via django-prodserver
- Containerization: Docker / Docker Compose (web, worker, db, utility services)
- Hosting: Coolify, auto-deploying on merge to
main(https://automation.defna.org)