A simple, self-hosted Kanban board.

Are you going ToDo or ToCry?

Core Functionality

5

Kanban Board

Organize notes into customizable, re-orderable lanes.

Rich Text Notes

Write notes in Markdown, with a comfortable WYSIWYG editor.

Drag & Drop

Easily move notes between lanes and reorder lanes themselves.

Image Uploads

Drag and drop images directly into the editor to upload and embed them in your notes.

Free and Open Source

The full source code is available on GitHub. Feel free to fork, modify, and contribute to the project!

Modern UI

4

Inline Editing

Quickly rename lanes by clicking on their titles.

Live Search

Instantly filter all notes by title, content, or tags.

Light & Dark Modes

Switch between themes for your viewing comfort.

Syntax Highlighting

Code blocks are automatically highlighted based on the language, making them easy to read.

Screenshot of the ToCry Kanban board application

Run with Docker

The easiest way to get `tocry` running is with Docker. This avoids having to install Crystal or build from source.

Using Docker Run

  1. Create a directory on your host machine to store persistent data:
    mkdir -p /path/to/your/data
  2. Run the container, replacing /path/to/your/data with the absolute path to the directory you just created:
    docker run -d --restart unless-stopped --name tocry -p 3000:3000 -v /path/to/your/data:/data ghcr.io/ralsina/tocry:latest

    Note: The image above is for amd64 architectures. An arm64 image is also available at ghcr.io/ralsina/tocry-arm64:latest.

  3. Open your browser and navigate to http://localhost:3000.

Using Docker Compose

For an even simpler setup, you can use Docker Compose.

  1. Create a docker-compose.yml file with the following content:
    services:
      tocry:
        image: ghcr.io/ralsina/tocry:latest
        # For arm64, use: ghcr.io/ralsina/tocry-arm64:latest
        container_name: tocry
        restart: unless-stopped
        ports:
          - "3000:3000"
        volumes:
          - ./data:/data
    
  2. Run the application from the same directory as your compose file:
    docker compose up -d

    This will automatically create a data directory in the current folder to store persistent data.

Usage