A small project planning tool designed specifically for weddings.
  • HTML 53.7%
  • Python 41.6%
  • JavaScript 2.7%
  • CSS 1.2%
  • Dockerfile 0.6%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-11 05:22:49 -06:00
backend Update healthcheck. 2026-09-10 19:19:40 -06:00
container Only create users first time. 2026-09-10 15:20:33 -06:00
frontend Add roles to members and due date to projects. 2026-02-27 17:37:38 -07:00
.containerignore Fixup procrastinate image. 2026-02-14 06:55:11 -07:00
.gitignore Organize frontend code better. 2026-02-14 20:26:38 -07:00
.python-version Initial commit 2025-12-27 11:29:16 -07:00
Containerfile Add HealthTimeout and missing update. 2026-09-11 05:22:49 -06:00
dovely.container Add HealthTimeout and missing update. 2026-09-11 05:22:49 -06:00
manage.py Transition to (not yet functional) sign-up flow. 2026-01-22 05:47:05 -07:00
package-lock.json Fork response-targets to allow updating swap strategies. 2026-02-21 07:21:35 -07:00
package.json Fork response-targets to allow updating swap strategies. 2026-02-21 07:21:35 -07:00
pyproject.toml Append slash and fix tests. 2026-02-12 21:54:52 -07:00
README.md Run as nonroot. 2026-09-10 15:02:30 -06:00
uv.lock Append slash and fix tests. 2026-02-12 21:54:52 -07:00

Overview

Dovely is a small project planning service designed for weddings.

Local

Build and run the container like so:

$ podman build -t dovely .
$ podman run -p 8000:8000 \
>   -v dovely-data:/data \
>   -v dovely-db:/var/lib/postgresql/data \
>   -v dovely-media:/var/www/media \
>   dovely

Quadlet

The dovely.container file is a Quadlet. After building the container image, you can install the systemd unit onto the host:

$ podman build -t dovely .
$ podman quadlet install dovely.container

NGINX

Use Let's Encrypt to get a TLS certificate:

$ certbot certonly --standalone -d getdovely.com -d www.getdovely.com

You can then expose the container by including the following stanza within an NGINX config:

server {
    server_name getdovely.com www.getdovely.com;

    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate     /etc/letsencrypt/live/getdovely.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/getdovely.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Connection $http_connection;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}