Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Jotts

A minimal notes app

Overview

A simple, self-hosted markdown note app built with Rust.

  • Single ~7MB Rust binary with embedded assets
  • Password authentication with session cookies
  • Create, edit, and delete markdown notes
  • Markdown rendering with strikethrough, tables, and task lists
  • Dark themed UI with Commit Mono font
  • SQLite for persistent storage

Quickstart

git clone https://github.com/stevedylandev/andromeda.git
cd andromeda
cp apps/jotts/.env.example .env
# Edit .env with your password
cargo run -p jotts

Environment Variables

VariableDescriptionDefault
JOTTS_PASSWORDPassword for login authenticationchangeme
JOTTS_DB_PATHSQLite database file pathjotts.sqlite
HOSTServer bind address127.0.0.1
PORTServer port3000
COOKIE_SECUREEnable HTTPS-only cookiesfalse

Structure

jotts/
├── src/
│   ├── main.rs        # App entrypoint, env vars, starts server
│   ├── server.rs      # Axum router, HTTP handlers, and templates
│   ├── auth.rs        # Password verification and session management
│   └── db.rs          # SQLite database layer (notes, sessions)
├── templates/         # Askama HTML templates
│   ├── base.html      # Base layout with header and nav
│   ├── login.html     # Login page
│   ├── index.html     # Note list
│   ├── view.html      # Single note display
│   ├── new.html       # Create note form
│   └── edit.html      # Edit note form
├── static/            # Favicons, og:image, styles, and webmanifest
├── assets/            # Commit Mono font files
├── Dockerfile
└── docker-compose.yml

Deployment

Railway

Deploy on Railway

Docker

cd apps/jotts
cp .env.example .env
# Edit .env with your password
docker compose up -d

This will start Jotts on port 3000 with a persistent volume for the SQLite database.

Binary

cargo build --release -p jotts

The resulting binary is self-contained with all assets embedded. Copy it to your server with a configured .env file and run it directly.