Jasper

A feed-first goal tracking app

Track your goals with a column-per-goal layout featuring activity feeds, time tracking, drag-and-drop organization, and a satisfying confetti celebration when you complete tasks.

Self-Host

Option 1: Docker Compose / Podman Compose

1. Create a docker-compose.yml file:

services:
  jasper:
    image: get.jasper.ponygolf.com/jasper:latest
    container_name: jasper
    ports:
      - "3001:3001"
    volumes:
      - jasper-data:/app/data
    environment:
      - AUTH_PASSWORD=changeme
      - AUTH_TOKEN_SECRET=generate-a-random-secret-here
      # Uncomment to disable authentication (for demos/testing):
      # - AUTH_DISABLED=true
    restart: unless-stopped

volumes:
  jasper-data:

2. Edit the environment variables (set a secure password and token secret).

3. Start the container:

docker compose up -d
# or with Podman:
podman-compose up -d

4. Open http://localhost:3001 in your browser.

or

Option 2: Manual Pull and Run

Pull the image:

docker pull get.jasper.ponygolf.com/jasper:latest
# or with Podman:
podman pull get.jasper.ponygolf.com/jasper:latest

Run the container:

docker run -d \
  --name jasper \
  -p 3001:3001 \
  -v jasper-data:/app/data \
  -e AUTH_PASSWORD=your-secure-password \
  -e AUTH_TOKEN_SECRET=$(openssl rand -hex 32) \
  get.jasper.ponygolf.com/jasper:latest

Generate a secure token secret with: openssl rand -hex 32