Skip to content

Zvijer1987/haby

Repository files navigation

Haby

Haby is a self-hosted habit and goal tracker built for private, homelab-friendly deployments. It combines daily habits, progress goals, lightweight widgets, and a clean dashboard into a single containerized app.

Haby light theme Haby dark theme

Features

  • Multi-user authentication with an admin-managed user list
  • Default first-run account with forced password change
  • Separate habit and goal cards
  • Optional mini calendar and mini chart on each card
  • Line, column, and pie card charts
  • Right-side widgets for overall history, today list, and calendar views
  • Card archiving and archived section support
  • Import preview before full import
  • Local SQLite persistence in a single /data volume
  • Docker-first deployment with a production example compose file

First-run account

The initial first-run account is:

  • Username: Haby
  • Password: Haby

You are prompted to change the password after the first login.

Demo layout on first run

Haby seeds a curated default dashboard for first-time use and for new users:

Habit cards

  • 1 habit with column chart + mini calendar
  • 1 habit with line chart + mini calendar
  • 1 habit with mini calendar only
  • 1 habit with no mini calendar and no chart

Goal cards

  • 4 goal cards with a visual mix of line, column, pie, and calendar-first layouts

Archive

  • 1 archived sample card so the archive section is visible immediately

Stack

  • Frontend: React + Vite + TypeScript
  • Backend: Express + TypeScript
  • Database: SQLite
  • Container: Multi-stage Docker build

Repository structure

.
├── app/
│   ├── client/              # React frontend
│   └── server/              # Express backend
├── compose.yaml.example     # Example Docker Compose file
├── Dockerfile               # Production multi-stage image
├── .env.example             # Optional runtime environment example
├── SECURITY.md              # Security policy and hardening notes
└── docs/
    └── screenshots/         # README screenshots

Local development

npm install --prefix app
npm install --prefix app/client
npm install --prefix app/server
npm run dev --prefix app/server
npm run dev --prefix app/client

Docker image

Pull the latest image from Docker Hub:

docker pull zvijer1987/haby:latest

Docker Compose

A commented production example is included in compose.yaml.example.

Quick start:

cp compose.yaml.example compose.yaml
mkdir -p data
docker compose up -d

Runtime data

Haby stores persistent runtime data in /data inside the container. The mounted directory contains:

  • the SQLite database
  • uploaded profile pictures
  • user settings and persisted application state

Import and export

  • Export downloads a dated JSON backup file
  • Import runs a preview first
  • Import can restore habits, goals, archived cards, entries, categories, and settings

Security notes

  • Change the default password immediately after the first login
  • Do not expose Haby directly to the public internet without an authenticated reverse proxy
  • Run behind HTTPS when used outside a trusted LAN
  • Keep the /data volume private and backed up
  • Review SECURITY.md before publishing or opening access

Contributing

See CONTRIBUTING.md for repository conventions and contribution notes.

Releases

No releases published

Packages

 
 
 

Contributors

Languages