A semi-experimental platform for managing grant applications.
- Docker and Docker Compose
- Just command runner (optional but recommended)
-
Clone and setup environment:
just bootstrap
This will:
- Copy
.env-distto.envif it doesn't exist - Build the Docker image
- Copy
-
Run database migrations:
just migrate
-
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 up- Start all services (web, db, worker) in the foregroundjust start- Start services in detached/background modejust down- Stop and remove all running containers (preserves volumes)just restart [service]- Restart one or more servicesjust build- Build or rebuild the Docker imagesjust console- Open an interactive bash shell inside the utility containerjust logs- View container logsjust tail- Follow logs in real-time
just migrate- Apply all pending database migrationsjust makemigrations- Create new migration files for model changesjust manage [command]- Run any Django management command
just test [path]- Run the test suite with pytestjust lint- Run pre-commit hooks on all files
just lock- Generate pinned lock filejust upgrade- Update all Python dependencies to their latest compatible versionsjust update- Update dependencies and pre-commit hooks
Deployments happen automatically when changes are pushed to the main branch via GitHub Actions.
Production URL: https://grorg.defna.org
- Backend: Django 5.2 with Python 3.13
- Database: PostgreSQL
- Task Queue: django-q2 for background processing
- Frontend: Tailwind CSS
- Authentication: django-allauth with GitHub OAuth
- Deployment: Gunicorn via django-prodserver
- Go to GitHub → Settings → Developer settings → OAuth Apps → New OAuth App
- Fill in:
- Application name: Grorg (or your app name)
- Homepage URL:
https://grorg.defna.org - Authorization callback URL:
https://grorg.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:
grorg.defna.org - Display name: Grorg (or similar)
File an issue https://github.com/djangocon/grorg/issues and we can build a program ID for your event.
Created by andrew@aeracode.org