DailyHub

Personal command center

The day, in one place.

A quiet workspace for people who juggle more than one project at a time — founders, consultants, indie builders. Client work, side projects, and a few non-negotiable daily habits.

Not Linear. Not Notion. The morning surface: what is open, what belongs where, what must happen today.

  • Self-hosted
  • Single-user
  • Node 22+ or Docker
DailyHub

Friday 21 August

Good morning.

4open
2done today
14day streak
Today 2 / 4
  • Morning review Habit
  • Publish Medium post Daily
  • Client follow-up Inbox
  • Draft weekly notes Work
Today’s habits 1 / 1
Publish Medium post

Surfaces

Four pages. The day still fits on one of them.

Desktop uses a left sidebar; smaller screens use a bottom tab bar. Light and dark themes are built in. Check a box and it is done for today — no ceremony.

01 · Today

The morning surface

Greeting, quick add, nudges, snapshot stats, today’s habits, open work by project, inbox.

02 · Projects

What is still open

Progress, due dates, milestones, and a stalled banner when something sits too long.

03 · Habits

The non-negotiables

Weekday schedules, a 14-day consistency trail, and completion without ceremony.

04 · Analytics

What actually shipped

Completions over time, project breakdown, habit rates, weekday patterns.

What you keep

Projects, tasks, habits, and a log of what actually happened.

Create and edit from dialogs. Completions are written automatically when you check something off, then charted on Analytics.

  1. Projects

    Where work belongs

    Name, icon, optional logo, status, due date, and milestones. Active, paused, or done — nothing more elaborate.

  2. Tasks

    Attached, or inbox

    Title, notes, due date, estimate. Tie a task to a project, or leave it unfiled until it has a home.

  3. Habits

    The weekday loop

    Recurring checklist items with icons and a weekday schedule. Toggle completes for today only.

  4. Completion log

    What you already finished

    Every check writes a log. Analytics reads it — no extra step, no export ritual in v1.

Quick start

One command. Your machine.

v1 has no authentication. Keep it on localhost, a private network, or behind a VPN / reverse-proxy.

A · npx

SQLite, no Docker

Requires Node 22+ and a free port (9999 by default). Data lives in ~/.daily-hub/.

$ npx @baselhusam/daily-hub

  • data.db — SQLite database
  • uploads/ — project and habit logos
  • --seed — sample data on first run

B · Docker

SQLite, self-host

Single container from GHCR. Persistent volume for data.db and uploads.

$ docker run -d --name dailyhub -p 9999:9999 -v dailyhub_data:/app/data ghcr.io/baselhusam/daily-hub:latest

  • App on :9999
  • Migrations on container start
  • Clone and docker compose up --build to compile locally

C · Notes

Keep the files local

SQLite and file sync do not mix. npx, local dev, and Docker all use the same data.db format.

  • Do not put ~/.daily-hub/ in iCloud or Dropbox
  • Backup = copy the whole data folder
  • First npx download is large (~80 MB); later runs are instant

Stack

A Next.js app you run yourself.

App
Next.js 15 · App Router · Server Actions
Language
TypeScript
Database
SQLite
ORM
Prisma
UI
Tailwind v4 · shadcn/ui
Runtime
Node 22+ · port 9999

Ready

Check a box. It is done for today.

Then see it on Analytics. That is the whole product.

$ npx @baselhusam/daily-hub

View on GitHub