Documentation

Everything, day to day.

How to use Sempa and how to host it. The same on web, the Windows desktop app and Android, except where noted.

First run

After signing in, a short setup wizard helps you connect email and calendar — all optional, and addable later in Settings. You land on Today, ready to plan.

Getting around

On desktop and web, a left sidebar holds Today, Search, This Week, Plan Day, Email, Backlog, Reminders, Shutdown and Journal — with Settings and a theme toggle tucked into the footer.

On mobile, a bottom tab bar carries Today, Week, Journal and More (which opens the rest, grouped). A + button creates a task on list screens. To install the PWA, open your Sempa instance in a browser and choose “Install” / “Add to Home Screen”.

Tasks

The core unit. Open any task to edit it in a side panel (desktop) or bottom sheet (mobile).

  • Create with the + button, the “Add task” box, or n on a day view.
  • Notes support pasted URLs, which render as tidy link-preview chips.
  • Status flows backlog → planned → in progress → done (plus cancelled) — drag between columns on the week board, or toggle the checkbox.
  • Due date & estimate, colour-coded tags, sub-tasks, file attachments, and time-blocking onto the schedule.
  • A soft “roughly at” hint orders a task in the day without a hard block.

Plan your day

Plan Day is a guided morning ritual: write your intention, see what carried over from yesterday, and pull tasks from your backlog into today. Your previous day's note is shown for continuity.

Week & objectives

The Week board is a Kanban across seven days — drag tasks between days and statuses. Set Weekly Objectives (the handful of outcomes that matter) and link tasks to them so progress is visible. Plan and review the week from dedicated screens, also surfaced as gentle in-app prompts.

Reflect

Shutdown is an end-of-day ritual: tick off what's done, reschedule what isn't, record a win and an optional reflection. The Weekly review captures wins, challenges and your next focus. It all collects in the Journal — a searchable timeline of intentions and reflections. Optionally show reflections inline on day and week screens (Settings → Appearance).

Focus & Pomodoro

Open a task in Focus mode to work distraction-free with a built-in Pomodoro timer. Completed sessions are logged per task, so you can see time spent against your estimate.

Recurring tasks

Create daily, weekly or monthly templates (Settings → Recurring Tasks). Instances generate automatically; editing one occurrence customises just that one while the series rolls forward.

Calendars & schedule

See events beside your tasks in the Schedule panel. Connect Google and Fastmail calendars, a CalDAV server, or subscribe to any ICS / webcal feed. In Settings → Calendars, show/hide each calendar and cycle its colour through the brand palette.

Email → tasks

  • Gmail / Fastmail: star an email and it imports as a task.
  • Task inbox: forward (or auto-forward) mail to a dedicated address to create tasks; allow-list senders.
  • AI title cleanup: with an Anthropic API key set, imported subjects are tidied into clean task titles.

Jira

Import your assigned issues as tasks. Marking a Jira-sourced task done transitions/closes the linked ticket. View issue details and available transitions from the task.

Reminders & notifications

Set Remind me (date + time) on any task for a hard alert with Mark done and Snooze 1h actions. Choose delivery channels independently:

  • Web Push — native notifications on Windows/Android browsers and installed PWAs.
  • Native Android — push to the installed app, with on-device alarms that fire even fully offline.
  • Custom webhook — POST to ntfy, Gotify, or your own service.

Pick from 10 calm alert tones, and set the times for the in-app weekly planning and daily shutdown prompts.

Will reminders fire if I'm offline? Within reason — Android schedules on-device OS alarms locally, and a briefly-down server fires the reminder late rather than losing it. The Windows app needs to be running to fire.

Offline & sync

The desktop and Android apps are local-first: they keep a local copy of your data, so the app stays fully usable with no connection. Changes queue and sync automatically when the server is reachable; a sync indicator shows status. Plain web (in a browser, not installed) talks directly to the server.

Backup & restore

In Settings → Backup & Restore: automatic daily backups at an hour you choose, optional encryption with a passphrase, and destinations — keep them local or push to S3, WebDAV or Google Drive. Run one on demand, download the latest, or restore from a file. Migrations run automatically on startup.

Keyboard shortcuts

KeyAction
nNew task (day view)
eEdit the hovered task
tGo to today
j / kPrevious / next week
?Show shortcuts help
EscClose the open dialog

Self-hosting · quick start

You need Docker and Docker Compose (v2). The installer writes your config, builds the image and starts the container — about two minutes.

# Prerequisites: Docker + Docker Compose v2 git clone https://github.com/moorew/sempa.git cd sempa bash install.sh

Open the URL it prints and follow the in-app setup wizard to connect email and calendar. To upgrade: git pull && docker compose build && docker compose up -d. Your data lives in the sempa_data volume and is preserved across rebuilds.

Self-hosting with Tailscale

Tailscale is the easiest way to reach Sempa securely from all your devices without exposing it to the public internet — no port forwarding, automatic HTTPS, and only your devices can connect.

  • Install Tailscale on your server and devices.
  • Run install.sh and use your Tailscale machine name as the URL (e.g. https://sempa.tail1234.ts.net).
  • Paste a Tailscale auth key when asked so the bundled sidecar joins your tailnet; it handles HTTPS automatically.
  • In each app, enter your Tailscale URL in the Server field and sign in.
Any reverse proxy works too. Caddy, nginx or Traefik — set APP_URL and forward to port 9001. If you expose it publicly, enable authentication (Google OAuth or username/password).

Configuration

Configuration lives in two local files: .env (URL, port — for Docker Compose substitution) and .env.local (secrets, loaded into the container).

VariablePurpose
APP_URLWhere Sempa is accessible (no trailing slash)
HOST_PORTPort to expose on the host (default 9001)
SEMPA_ALLOWED_EMAILSComma-separated allow-list for Google sign-in
SEMPA_USERNAME / _PASSWORDUsername + password auth (unset disables auth)
TS_AUTHKEYAuth key for the Tailscale sidecar
ANTHROPIC_API_KEYEnables AI task-title cleanup on email import

Authentication supports Google Sign-In (OAuth — the same client also powers Gmail import) and username + password. Full details, integration setup and all optional variables are in the repository README.

Note: this guide mirrors the current README. The canonical User Guide also lives in the repository — see the README User Guide. As the dedicated installer and setup flow evolve, this page will be the canonical day-to-day reference, with the repo focused on building and deploying.

Ready to set it up?