A modern, community-driven events site built with Django and Wagtail. Der Town features a beautiful calendar, custom CSS/JS, a strong design system, and a modular component-based architecture for maintainability and scalability.
- Community event calendar with category filtering
- Modular, reusable UI components (django-components)
- Custom BEM-based CSS, Bootstrap layout
- Wagtail CMS for content management
- Google Calendar integration
- Recaptcha and spam protection
- Automated linting, formatting, and pre-commit hooks
- Python 3.12+
- Django 5.x
- Wagtail 6.x
- django-components
- Bootstrap 5
- Pre-commit, Ruff, Stylelint, ESLint
- Dependency management via
pyproject.toml
anduv
-
Clone the repo:
git clone https://github.com/yourusername/dertown.git cd dertown
-
Create and activate a virtual environment:
python3 -m venv .venv source .venv/bin/activate
-
Install dependencies:
uv pip install -e .
-
Set up your
.env
file:- Copy
.env.example
to.env
and fill in secrets (or set environment variables directly).
- Copy
-
Apply migrations and create a superuser:
python manage.py migrate python manage.py createsuperuser
-
Run the development server:
python manage.py runserver
-
Run linting and formatting checks:
pre-commit run --all-files
-
Connect your GitHub repo to Render.
-
Set environment variables in the Render dashboard (these override
.env
).DJANGO_SETTINGS_MODULE=dertown.settings.production
SECRET_KEY
,DATABASE_URL
, etc.DEBUG=False
-
Set Render build and start commands:
-
Build Command:
uv pip install -e . && python manage.py collectstatic --noinput
-
Start Command:
gunicorn dertown.wsgi
-
Migrate Command (optional, or add as a shell command):
python manage.py migrate
-
-
ALLOWED_HOSTS in your production settings should include your Render domain (e.g.,
your-app.onrender.com
). -
Push to your main branch to trigger a deploy.
-
(Optional) Set up a static site on Render to serve
/static
via their CDN for best performance.
- Use pre-commit hooks to enforce code quality.
- Keep dependencies up to date in
pyproject.toml
. - Use
python manage.py check --deploy
to verify production security settings. - Review logs and test all integrations after each deploy.
MIT (or your chosen license)