Grad shape
Grad shape

Listaway

Task Management & To-do Lists

About this project

Listaway logo

This self-hostable application allows authenticated users to publish one or more lists of items publicly. These lists can either be for tracking purposes (e.g. a list of books to read, a list of components in a custom computer build, a list of favorite local places, etc.) or for wishlist purposes (e.g. a gift wishlist, a list of tasks you need help with, etc.). The items can be freeform text or a URL to details about the item. Shared lists incorporate a random string in the URL to give a little protection against guessing (thus allowing you to share the link and access it without requiring authentication).

Listaway sample

Feature inventory

  • Application access
    • Authentication / Authorization (Email/Password + OIDC/OAuth2)
    • Password reset
    • Group administration (manage group of users, including creation)
    • Instance administration (manage all groups and all users)
  • List management
    • CRUD lists
    • Optional list description string
    • CRUD items (Name, optional URL, optional Priority, optional Notes)
      • Table sortable by Name and Priority
    • Opt-in public read-only access with randomized URL
  • Collection management
    • CRUD collections (group of lists)
    • Optional collection description string
    • Opt-in public read-only access with randomized URL

Quick start

  1. Configure your PostgresDB instance
--connect to your postgres server with an admin role
CREATE ROLE listaway LOGIN PASSWORD 'password';
CREATE DATABASE listaway;
GRANT CONNECT ON DATABASE listaway TO listaway;
--connect to your new listaway database with an admin role
CREATE SCHEMA listaway;
GRANT CREATE, USAGE ON SCHEMA listaway to listaway;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA listaway TO listaway;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA listaway TO listaway;

  1. Make a docker-compose.yml file
services:
  listaway:
    image: "ghcr.io/jeffrpowell/listaway:v1.15.0"
    ports:
      - "8080:8080"
    env_file:
      - .env
  1. Make a .env file
# Required configuration

LISTAWAY_AUTH_KEY=[random alphanumeric 128-character string]
PORT=8080
POSTGRES_USER=listaway
POSTGRES_PASSWORD=password
POSTGRES_HOST=[pghost]
POSTGRES_DATABASE=listaway

# Optional SMTP configuration for password reset emails (defaults will cause email bodies to be logged instead of sent outbound)

# SMTP_HOST=smtp.example.com # default ""
# SMTP_PORT=587              # typically 25, 465, or 587, default 587
# SMTP_USER=username         # default ""
# SMTP_PASSWORD=password     # default ""
# SMTP_FROM=noreply@example.com # default "noreply@listaway.dev"
# SMTP_SECURE=true           # default true
# APP_URL=https://listaway.your-domain.com # for reset links, default "http://localhost:8080"

# Optional OIDC/OAuth2 configuration for sing
Technologies & License
MIT Docker
Quick Deploy

Deploy this project to cloud platforms with one click