Thanks to visit codestin.com
Credit goes to github.com

Skip to content

A self-hosted habit tracking app without "Goals"

License

rmblau/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

  • HabitDeck: Turns your Stream Deck into an interactive habit tracker
  • Unraid: An out-of-the-box community app for your Unraid server

Getting Started

Cloud Service

Self-Hosting

Ship with Docker

Example:

docker run -d --name beaverhabits \
  -u $(id -u):$(id -g) \
  -e FIRST_DAY_OF_WEEK=0 \
  -e HABITS_STORAGE=USER_DISK \
  -e MAX_USER_COUNT=1 \
  -v /path/to/host/directory:/app/.user/ \
  -p 8080:8080 \
  --restart unless-stopped \
  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 false
INDEX_SHOW_HABIT_COUNT(bool) To display the total completed count badge on the main page. The default setting is false

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

  1. Pages
    • Index page
    • Habit list page
      • Order habits
    • Habit detail page
      • Calendar
      • Streaks
  2. Storage:
    • Session-based disk storage
    • User-based disk storage
    • User-based db storage
  3. CICD:
    • Custom domain
    • Self-hosting option
    • Unit tests & deployment pipeline
  4. Others:
    • Export
    • Import
    • User management
    • User timezone
    • RESTful API

Streaks

Here are my table tennis training sessions in the past year :)

image

Import

To import from an existing setup, e.g. uhabit, please check this wiki for more details.

Standalone mode for iOS (Web Application)

Please follow this wiki to add it as an icon on the home screen and make it launch in a separate window

Reorder Habits

Open page /gui/order to change the order of habits.

REST APIs

Beaver Habit Tracker API How‐to Guide

Future Plans

  1. Quantitative metrics
  2. Native mobile app
  3. Habit calendar template, e.g. vacations
  4. ...

About

A self-hosted habit tracking app without "Goals"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.8%
  • JavaScript 1.9%
  • Dockerfile 1.3%
  • Shell 1.0%