Skip to content

daya0576/beaverhabits

Repository files navigation

Beaver Habit Tracker

GitHub Release Docker Pulls GitHub Actions Workflow Status Uptime Robot ratio (30 days)

A self-hosted habit tracking app without "Goals"

Derivatives

Beaver Habit Tracker API How‐to Guide

Getting Started

Cloud

Self-Hosting

Unraid

Simply search for "Beaver Habit Tracker" in the Community Apps store!

Ship with Docker

docker run -d --name beaverhabits \
  -u $(id -u):$(id -g) \
  -e HABITS_STORAGE=USER_DISK \
  -v ./beaver/:/app/.user/ \
  -p 8080:8080 \
  daya0576/beaverhabits:latest

Or Docker Compose:

services:
  beaverhabits:
    container_name: beaverhabits
    user: 1000:1000 # User permissions of your docker or default user.
    environment:
      # See the note below to find all the environment variables
      - HABITS_STORAGE=USER_DISK # DATABASE stores in a single SQLite database named habits.db. USER_DISK option saves in a local json file.
      - TRUSTED_LOCAL_EMAIL=your@email.com # Skip authentication
      - INDEX_HABIT_DATE_COLUMNS=5 # Customize the date columns for the index page.
      - ENABLE_IOS_STANDALONE=true
    volumes:
      - ./beaver/:/app/.user/ # Change directory to match your docker file scheme.
    ports:
      - 8080:8080
    restart: unless-stopped
    image: daya0576/beaverhabits:latest

P.S. The container starts as nobody to increase the security and make it OpenShift compatible. To avoid permission issues, ensure that the UID owning the host folder aligns with the UID of the user inside the container.

Options

Name Description
HABITS_STORAGE(str) The DATABASE option stores everything in a single SQLite database file named habits.db. On the other hand, the USER_DISK option saves habits and records in a local json file.
FIRST_DAY_OF_WEEK(int) By default, the first day of the week is set as Monday. To change it to Sunday, you can set it as 6.
MAX_USER_COUNT(int) By setting it to 1, you can prevent others from signing up in the future.
ENABLE_IOS_STANDALONE(bool) Experiential feature to enable standalone mode on iOS. The default setting is true.
INDEX_SHOW_HABIT_COUNT(bool) To display total completed count along with the habit name on the index page. The default setting is false.
INDEX_HABIT_NAME_COLUMNS(int) Customize the habit name column size to display for the index page. The default value is 5.
INDEX_HABIT_DATE_COLUMNS(int) Customize the displayed dates for the index page. The default value is 5.
TRUSTED_EMAIL_HEADER(str) Delegate authentication to an authenticating reverse proxy that passes in the user's details in HTTP headers, e.g. Cf-Access-Authenticated-User-Email. An existing account is required.
TRUSTED_LOCAL_EMAIL(str) Disables login page entirely. A new account with the specified email will be created if it does not exist.
INDEX_HABIT_DATE_REVERSE(bool) Reverse the order of dates to display (default value is false).
UMAMI_ANALYTICS_ID(str) Umami analytics tracking id. If left empty (default) no tracking snippet will be injected.

Development

BeaverHabits favors uv as package management tool. Here is how to set up the development environment:

# Install uv and all the dependencies
uv venv && uv sync

# Start the server
./start.sh dev

Features

Checkout the wiki page for a full list of features, and vote on your most wanted feature.

Extensibility

  • RESTful APIs
  • Export & Import
  • PWA for iOS & Android

Habit Management

  • Daily notes/descriptions
  • Reorder habits (manually or automatic)
  • Organize Habits by Tag
  • Periodic habits
  • Measurable habits (WIP)
  • Multiple states

Authentication

  • Trusted Header SSO
  • Bypass login page

Here are my table tennis training sessions over the past year ^^

image

Sponsor

Buy Me A Coffee

About

A self-hosted habit tracking app without "Goals"

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 8