golang-kanban

golang-kanban

Docker app from Twixii's Repository

Overview

No fancy features, it just works. Just a simple Kanban board made with Golang and HTMX, no nasty Node or Next.js

Simple Kanban Board

A no-nonsense, lightweight Kanban board built with Golang and HTMX. I couldn’t find a reasonable self-hosted Kanban board that wasn’t using some JavaScript monstrosity like Node or Next.js, I don't need the next 9.1 CVE on my server — so I decided to build my own. This project is my sweet little solution to manage tasks simply while learning and sharing a project with the community.

Overview

This project provides a clean, minimalistic Kanban board with the following technologies:

Backend: Golang

Frontend: HTMX, Bootstrap 5, and SortableJS

Database: PostgreSQL

It’s designed to be simple to deploy and maintain without the extra bloat of modern JavaScript frameworks.

Features

  • Minimalistic Design: A straightforward Kanban board to manage your tasks.
  • Dynamic Interactivity: Partial page updates using HTMX for a smooth user experience.
  • Drag-and-Drop: Rearrange cards effortlessly using SortableJS.

How it looks

Screenshot

Using Docker Compose

A sample docker-compose.yml is provided, just use docker-compose up --build This command will build and run both the PostgreSQL and Kanban services.

Using the Pre-built Docker Image

Alternatively, you can pull the pre-built Docker image from GitHub Container Registry:

docker pull ghcr.io/nicolashaas/golang-kanban:latest
docker run -p 17808:17808 ghcr.io/nicolashaas/golang-kanban:latest

Prerequisites

PostgreSQL: The only external dependency required. If you don’t have a PostgreSQL instance, you can easily run one using Docker.

Create a PostgreSQL database and table. That could look something like this:

-- Create user and database
CREATE USER kanban WITH PASSWORD 'your_password_here';
CREATE DATABASE kanban_db OWNER kanban;

-- Connect to the new database (you'll need to do this manually in psql)
-- \c kanban_db

-- Once connected as postgres to kanban_db, transfer schema ownership
GRANT ALL ON SCHEMA public TO kanban;
ALTER SCHEMA public OWNER TO kanban;

-- Connect as kanban user to kanban_db and run this to create the table
CREATE TABLE IF NOT EXISTS cards (
    id SERIAL PRIMARY KEY,
    title TEXT NOT NULL,
    description TEXT,
    subtasks TEXT,
    status VARCHAR(20) NOT NULL DEFAULT 'todo',
    card_order INTEGER NOT NULL DEFAULT 0
);

Environment Variables:

DB_USER=your_db_user
DB_PASS=your_db_password
DB_HOST=localhost
DB_PORT=5432
DB_NAME=kanban
SERVER_PORT=17808

Todo's

If I feel like it I might work on some of these things:

  • darkmode
  • remove/add/edit collums
  • make it pretty
  • add sqlite option for people too lazy to setup a db
  • tls
  • oidc
  • ...

Contributing

Contributions are welcome! If you have ideas, bug fixes, or enhancements, feel free to fork the repository, open an issue, or submit a pull request.

License

This project is open-sourced under the MIT License.

Install golang-kanban on Unraid in a few clicks.

Find golang-kanban in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for golang-kanban Review the template variables and paths Click Install

Related apps

Details

Repository
ghcr.io/nicolashaas/golang-kanban:latest
Last Updated2026-07-17
First Seen2025-04-01

Runtime arguments

Web UI
http://[IP]:[PORT:17808]
Network
bridge
Shell
sh
Privileged
false

Template configuration

PortPorttcp

Container Port

Target
17808
Value
17808
DB_USERVariable

Your database user

Default
user
Value
kanban
DB_PASSVariable

Password for your database user

Default
password
Value
your_password_here
DB_HOSTVariable

Your database host

Default
postgres
Value
192.168.1.50
DB_PORTVariable

Your database port

Default
5432
Value
5432
DB_NAMEVariable

Your database name

Default
kanban
Value
kanban_db
SERVER_PORTVariable

Which port the app should listen on inside the container

Default
17808
Value
17808