baselhusam/daily-hub

A personal command center for projects, tasks, and daily habits. Self-hosted, single-user, Next.js + SQLite.

JavaScript

41

144 commits

updated Oct 11, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built DailyHub: a self-hosted, single-user dashboard for projects, tasks and daily habits (One Docker command) (r/coolgithubprojects)

Hey everyone, I'm the developer. DailyHub is a personal command center for people who juggle more than one project at a time. I wanted one page that shows what's open in each project, what's overdue, which habits are due today, and what I already got done, without signing up for yet another cloud…

1

Oct 9, 2026

README

DailyHub — a quiet workspace that keeps the day in one place.

npm version Docker Hub image version CI MIT License Node.js TypeScript

Website · npm · Docker Hub · GHCR · Docs · Changelog · Author


A personal command center for people who juggle more than one project at a time — founders, consultants, indie builders, anyone with client work, side projects, and a few non-negotiable daily habits.

DailyHub is not a replacement for Linear, Jira, or Notion. It is the morning surface: what is open, what belongs where, what must happen today, and what you already finished.

See it in action

Your browser does not support the video element.

A closer look

The Today view: greeting, quick add, momentum, open work grouped by project, and today's habits.

Focus mode pins projects and tasks so Today narrows to what matters.The Projects list with progress, next milestone and ship date for each project.
A project page with progress, milestones and a completion rhythm chart.The Habits view with weekly schedules, 14-day history and chains.
Analytics: tasks closed, habits kept, focus hours and project rhythm over the last 30 days.DailyHub in light and dark themes, side by side.

Features

  • Today — greeting, quick add, nudges, today’s habits, open work by project, and an inbox
  • Projects — status, due dates, milestones, and stalled-work banners
  • Focus mode — pin projects or tasks so Today narrows to what matters, until a date or until you clear it
  • Habits — weekday schedules, 14-day consistency, and completion rate
  • Analytics — completions over time, project breakdown, and weekday patterns
  • Command palette — jump to projects, tasks, habits, and milestones
  • Local by default — SQLite on disk, light and dark themes, no accounts

Quick start

Requires Node.js 22+.

npx @baselhusam/daily-hub

Opens http://127.0.0.1:9999. Data lives in ~/.daily-hub/ (data.db and uploads/). The first download is ~80 MB because the package ships the full Next.js app; later runs are instant.

npx @baselhusam/daily-hub --seed               # sample data on first run
npx @baselhusam/daily-hub --port 3000          # different port
npx @baselhusam/daily-hub --data-dir ~/my-hub  # custom data directory
npx @baselhusam/daily-hub --no-open            # don't open the browser
npx @baselhusam/daily-hub --no-mcp             # disable the local MCP endpoint
npx @baselhusam/daily-hub --detach             # run in the background
npx @baselhusam/daily-hub --update             # run the latest published version

--update (or update) fetches and runs the latest published DailyHub release. Any other options are preserved, so npx @baselhusam/daily-hub --update --port 3000 updates and starts it on port 3000.

--detach starts DailyHub in the background, opens the app when it is ready, and lets you close the terminal. Manage that instance later with:

npx @baselhusam/daily-hub status
npx @baselhusam/daily-hub logs
npx @baselhusam/daily-hub stop

The background process and log are recorded in the selected data directory (~/.daily-hub/ by default); pass the same --data-dir to the management commands if you use a custom location. It remains running until stopped or the computer restarts; use Docker or a system service if you need automatic restarts.

MCP integration

DailyHub starts a local, token-protected MCP endpoint by default at /mcp on the selected app port. After starting the app, print a ready-to-copy client configuration with:

npx @baselhusam/daily-hub mcp

The endpoint is bound to 127.0.0.1 and requires the bearer token in that output. The token is stored with owner-only permissions in ~/.daily-hub/daily-hub-mcp.json. Disable the endpoint for a launch with --no-mcp.

Do not keep ~/.daily-hub/ in iCloud, Dropbox, or other file-sync folders — SQLite and file sync can corrupt the database. Backup is a copy of that folder (or your --data-dir).

Docker

docker run -d --name dailyhub -p 9999:9999 \
  -v dailyhub_data:/app/data \
  baselhusam/daily-hub:latest

Open http://localhost:9999. Data persists in the dailyhub_data volume. The command above pulls from Docker Hub; pin a version with baselhusam/daily-hub:X.Y.Z (same as the npm version). The same tags are also published to GHCR as ghcr.io/baselhusam/daily-hub. Optional sample data:

docker exec dailyhub npm run db:seed

From a clone, docker compose up -d pulls the same image; docker compose up --build compiles from this tree.

v1 has no authentication. Keep it on localhost, a private network, or behind a reverse proxy. Full self-hosting notes are in docs/DEPLOYMENT.md.

Development

npm install
npm run dev

Runs on port 9999 with SQLite in ./.data/. Commands, layout, and conventions live in CLAUDE.md.

Built with

Next.js 15, TypeScript, SQLite, and Prisma. There is no separate API server — reads go through Server Components, writes through Server Actions.

Documentation

License

MIT © Basel Husam

docker
nextjs
productivity
self-hosted
sqlite

baselhusam/daily-hub

A personal command center for projects, tasks, and daily habits. Self-hosted, single-user, Next.js + SQLite.

JavaScript

41

144 commits

updated Oct 11, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built DailyHub: a self-hosted, single-user dashboard for projects, tasks and daily habits (One Docker command) (r/coolgithubprojects)

Hey everyone, I'm the developer. DailyHub is a personal command center for people who juggle more than one project at a time. I wanted one page that shows what's open in each project, what's overdue, which habits are due today, and what I already got done, without signing up for yet another cloud…

1

Oct 9, 2026

README

DailyHub — a quiet workspace that keeps the day in one place.

npm version Docker Hub image version CI MIT License Node.js TypeScript

Website · npm · Docker Hub · GHCR · Docs · Changelog · Author


A personal command center for people who juggle more than one project at a time — founders, consultants, indie builders, anyone with client work, side projects, and a few non-negotiable daily habits.

DailyHub is not a replacement for Linear, Jira, or Notion. It is the morning surface: what is open, what belongs where, what must happen today, and what you already finished.

See it in action

Your browser does not support the video element.

A closer look

The Today view: greeting, quick add, momentum, open work grouped by project, and today's habits.

Focus mode pins projects and tasks so Today narrows to what matters.The Projects list with progress, next milestone and ship date for each project.
A project page with progress, milestones and a completion rhythm chart.The Habits view with weekly schedules, 14-day history and chains.
Analytics: tasks closed, habits kept, focus hours and project rhythm over the last 30 days.DailyHub in light and dark themes, side by side.

Features

  • Today — greeting, quick add, nudges, today’s habits, open work by project, and an inbox
  • Projects — status, due dates, milestones, and stalled-work banners
  • Focus mode — pin projects or tasks so Today narrows to what matters, until a date or until you clear it
  • Habits — weekday schedules, 14-day consistency, and completion rate
  • Analytics — completions over time, project breakdown, and weekday patterns
  • Command palette — jump to projects, tasks, habits, and milestones
  • Local by default — SQLite on disk, light and dark themes, no accounts

Quick start

Requires Node.js 22+.

npx @baselhusam/daily-hub

Opens http://127.0.0.1:9999. Data lives in ~/.daily-hub/ (data.db and uploads/). The first download is ~80 MB because the package ships the full Next.js app; later runs are instant.

npx @baselhusam/daily-hub --seed               # sample data on first run
npx @baselhusam/daily-hub --port 3000          # different port
npx @baselhusam/daily-hub --data-dir ~/my-hub  # custom data directory
npx @baselhusam/daily-hub --no-open            # don't open the browser
npx @baselhusam/daily-hub --no-mcp             # disable the local MCP endpoint
npx @baselhusam/daily-hub --detach             # run in the background
npx @baselhusam/daily-hub --update             # run the latest published version

--update (or update) fetches and runs the latest published DailyHub release. Any other options are preserved, so npx @baselhusam/daily-hub --update --port 3000 updates and starts it on port 3000.

--detach starts DailyHub in the background, opens the app when it is ready, and lets you close the terminal. Manage that instance later with:

npx @baselhusam/daily-hub status
npx @baselhusam/daily-hub logs
npx @baselhusam/daily-hub stop

The background process and log are recorded in the selected data directory (~/.daily-hub/ by default); pass the same --data-dir to the management commands if you use a custom location. It remains running until stopped or the computer restarts; use Docker or a system service if you need automatic restarts.

MCP integration

DailyHub starts a local, token-protected MCP endpoint by default at /mcp on the selected app port. After starting the app, print a ready-to-copy client configuration with:

npx @baselhusam/daily-hub mcp

The endpoint is bound to 127.0.0.1 and requires the bearer token in that output. The token is stored with owner-only permissions in ~/.daily-hub/daily-hub-mcp.json. Disable the endpoint for a launch with --no-mcp.

Do not keep ~/.daily-hub/ in iCloud, Dropbox, or other file-sync folders — SQLite and file sync can corrupt the database. Backup is a copy of that folder (or your --data-dir).

Docker

docker run -d --name dailyhub -p 9999:9999 \
  -v dailyhub_data:/app/data \
  baselhusam/daily-hub:latest

Open http://localhost:9999. Data persists in the dailyhub_data volume. The command above pulls from Docker Hub; pin a version with baselhusam/daily-hub:X.Y.Z (same as the npm version). The same tags are also published to GHCR as ghcr.io/baselhusam/daily-hub. Optional sample data:

docker exec dailyhub npm run db:seed

From a clone, docker compose up -d pulls the same image; docker compose up --build compiles from this tree.

v1 has no authentication. Keep it on localhost, a private network, or behind a reverse proxy. Full self-hosting notes are in docs/DEPLOYMENT.md.

Development

npm install
npm run dev

Runs on port 9999 with SQLite in ./.data/. Commands, layout, and conventions live in CLAUDE.md.

Built with

Next.js 15, TypeScript, SQLite, and Prisma. There is no separate API server — reads go through Server Components, writes through Server Actions.

Documentation

License

MIT © Basel Husam

docker
nextjs
productivity
self-hosted
sqlite

Project health

Latest release

0.2.5 · Oct 4, 2026

Releases this year

19

Significant stargazers

Lucas Czekaj

46 followers · starred Oct 2026