Skip to content

Developing Yesterdays

First of all, thank you for your interest in contributing to Yesterdays!

If you would like to contribute to the development of Yesterdays, but aren't quite ready to dive into coding, please feel free to file feature requests and bug reports here. Your feedback is greatly appreciated!

Contribution Guidelines

In general, we welcome any pull requests to our GitHub repository. If you'd like to make a big change, please engage with us in a GitHub Issue or via Slack first so that we can coordinate our efforts.

Setting Up Your Development Environment

To run Yesterdays locally, you need: - uv - bun - a PostgreSQL instance with the pgvector and PostGIS extensions.

If you would like to run background tasks, you will additionally need to run a RabbitMQ instance.

Run Database

The recommended way to run your database is using podman and MapRVA/cnpg-postgis-pgvector.

podman run -d --replace --name georef-postgres \
    -e POSTGRES_DB=georef \
    -e POSTGRES_USER=django_user \
    -e POSTGRES_PASSWORD=dev_password \
    -p 5432:5432 \
    ghcr.io/maprva/postgis-pgvector-local:latest

If you'd like, you can use a volume to persist the database between container restarts:

podman run -d --replace --name georef-postgres \
        -e POSTGRES_DB=georef \
        -e POSTGRES_USER=django_user \
        -e POSTGRES_PASSWORD=dev_password \
        -p 5432:5432 \
        -v georef-postgres-data:/var/lib/postgresql/data \
        ghcr.io/maprva/postgis-pgvector-local:latest

(Optional) Run Task Queue

Yesterdays uses Celery with RabbitMQ to manage background processing tasks.

podman run -d --replace --name rabbitmq \
    -p 5672:5672 \
    -p 15672:15672 \
    rabbitmq:3-management

Set up environment variables

Setup the following env vars (see example.env for more):

export LOCAL_DEV=1
export ALLOW_HARDCODED_ADMIN=1
export DJANGO_DEBUG=1
export PG_DBNAME=georef
export PG_USER=django_user
export PG_PASSWORD=dev_password
export PG_HOST=localhost
export PG_PORT=5432
export PG_SSL_MODE=disable
export CELERY_BROKER_URL=amqp://guest:guest@localhost:5672//

Save those to my.env in the root of this repository, and then apply them by running source my.env

Install dependencies

uv sync

Apply migrations

uv run manage.py migrate

Run Vite

Vite bundles JavaScript and CSS assets for Yesterdays. It is important to run Vite in the background during development:

bun install
bun run dev

Run the dev server!

In a separate terminal (keep Vite running):

uv run manage.py runserver

The site should now be live at http://localhost:8000

Load a collection

uv run scripts/importers/library_of_virginia.py --area A

Admin creds

You can login to /admin with the username & password: admin