selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Neohabit logo

Self-host Neohabit

v1.1.1

Periodic habit tracker with flexible heatmaps

ReleaseOpen SourceAGPL-3.0
Updated8 months ago
LanguageJavaScript
Setup difficultyModerate
MobileResponsive
ThemeDark mode
Stars
287
Port
9000 (Backend API (internal container port))
Requires
PostgreSQL
Docker
ghcr.io/vsein/neohabit-front
Install with Docker Compose
Zoomed out overview for 6 monthsMonochromatic heatmap (GitHub/Anki style)Numeric heatmap with default blue themeFractured heatmap for high-frequency habitsProject view for language learning habitsSkilltree for planning progressions

What is Neohabit?

Neohabit is a self-hosted habit tracker that lets you define habits with flexible frequencies such as "X times in Y days" rather than simple daily streaks. It features several heatmap visualizations — monochromatic, numeric, and fractured — to suit different tracking styles. Habits can be grouped into projects for day-to-day tracking, and skilltrees help plan progressions. The stack uses a React frontend, Go backend, and PostgreSQL database, deployed via Docker Compose with Caddy as a reverse proxy. It supports multiple accounts, dark and light themes, keyboard shortcuts, and a polished mobile web interface. The project is licensed under AGPL-3.0 and accepts cryptocurrency donations.

Should you self-host Neohabit?

Neohabit scores 48/100 on selfhost.directory (how scoring works) and ranks #18 of 38 in Personal Productivity. It has 287 GitHub stars.

It shipped 3 stable releases in the past year. The latest, v1.1.1, came out on 12 February 2026. New versions land roughly every 4 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in JavaScript.

Its closest alternative on selfhost.directory is LanguageTool (75/100, 15 205 stars). It scores higher overall, so compare the two before you pick. See Neohabit vs LanguageTool side by side.

Features

  • Clickable habit/project links
  • Drag-and-drop reordering
  • Flexible habit frequencies
  • Keyboard Shortcuts
  • Multiple Accounts
  • Multiple heatmap visualizations
  • Numeric value tracking
  • Project grouping
  • Skilltrees
  • Tooltips with period info

Neohabit README

How to install Neohabit

Install Neohabit with Docker Compose

Docker and Docker Compose
Environment variables
POSTGRES_USER, POSTGRES_DB, POSTGRES_PASSWORD, JWT_SECRET, TAG, FRONTEND_PORT, FRONTEND_URL, LOG_LEVEL, DISABLE_SIGNUP, STRICT_USER_FIELDS, REQUIRE_EMAIL, DEMO, PG_MAX_OPEN_CONNS, PG_MAX_LIFETIME, PG_MAX_IDLE_TIME

Recommended method. Uses pre-built images from ghcr.io

How to configure Neohabit

  • DEMOfalseRun in demo mode (no login)

    Run in demo mode (no login)

    values: true | false

  • DISABLE_SIGNUPfalseDisable new user registration

    Disable new user registration

    values: true | false

  • FRONTEND_PORT8080Host port for the frontend (Caddy)

    Host port for the frontend (Caddy)

  • FRONTEND_URLhttp://127.0.0.1:8080Public URL for CORS

    Public URL for CORS

  • JWT_SECRETJWT signing secret (required, 32+ random bytes, base64 recommended)

    JWT signing secret (required, 32+ random bytes, base64 recommended)

  • LOG_LEVELinfoLog level

    Log level

    values: debug | info | warn | error

  • PG_MAX_IDLE_TIME10mMax connection idle time

    Max connection idle time

  • PG_MAX_LIFETIME30mMax connection lifetime

    Max connection lifetime

  • PG_MAX_OPEN_CONNS20Max open database connections

    Max open database connections

  • POSTGRES_DBneohabitPostgreSQL database name

    PostgreSQL database name

  • POSTGRES_PASSWORDPostgreSQL password (required)

    PostgreSQL password (required)

  • POSTGRES_USERneohabitPostgreSQL username

    PostgreSQL username

  • REQUIRE_EMAILfalseRequire email on signup

    Require email on signup

    values: true | false

  • STRICT_USER_FIELDSfalseEnforce non-empty passwords

    Enforce non-empty passwords

    values: true | false

  • TAGlatestDocker image tag to use

    Docker image tag to use

    values: latest, 1.1.0, sha-abc123, etc.

Neohabit releases & version history

More in Personal Productivity

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…