https://github.com/sparths/anyhabit
A universal habit and tracking dashboard tailored for Raspberry Pi and Docker.
https://github.com/sparths/anyhabit
docker fastapi habit-tracker raspberry-pi react self-hosted
Last synced: about 2 months ago
JSON representation
A universal habit and tracking dashboard tailored for Raspberry Pi and Docker.
- Host: GitHub
- URL: https://github.com/sparths/anyhabit
- Owner: Sparths
- License: gpl-3.0
- Created: 2026-04-20T09:13:08.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-24T11:05:37.000Z (about 2 months ago)
- Last Synced: 2026-04-25T19:11:05.922Z (about 2 months ago)
- Topics: docker, fastapi, habit-tracker, raspberry-pi, react, self-hosted
- Language: JavaScript
- Homepage: https://sparths.github.io/anyhabit-demo/
- Size: 2.86 MB
- Stars: 8
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
#
AnyHabit
[](https://fastapi.tiangolo.com/)
[](https://react.dev/)
[](https://tailwindcss.com/)
[](https://www.sqlite.org/)
[](https://www.docker.com/)
[](https://discord.gg/ajknBq5zcH)
[](https://sparths.github.io/anyhabit-demo/)
**AnyHabit** is a streamlined, universal habit-tracking dashboard designed for **Raspberry Pi**, home servers, and **Docker** enthusiasts. It provides a minimalist interface to track positive growth or systematically reduce harmful routines.
---
## 📺 Preview & Updates
> [!IMPORTANT]
> **Try it now:** [Explore the Live Demo Site](https://sparths.github.io/anyhabit-demo/)
> **Join the Community:** [AnyHabit Discord Server](https://discord.gg/ajknBq5zcH) — Get support, showcase your work, and chat with fellow devs!

🚀 Click to see Recent Updates (Changelog)
#### [v0.7.0] - Latest Release
- **Added:** Refactor app structure, Fix Bugs
- [Full Changelog](https://github.com/Sparths/AnyHabit/compare/v0.6.3...v0.7.0)
#### [v0.6.3] - Date Selection
- **Added:** Date Selection for "Build" Trackers Logs
- [Full Changelog](https://github.com/Sparths/AnyHabit/compare/v0.6.2...v0.6.3)
#### [v0.6.2] - Historical Progress
- **Added:** Historical Progress/Heatmap
- [Full Changelog](https://github.com/Sparths/AnyHabit/compare/v0.6.1...v0.6.2)
#### [v0.6.1] - Mobile Support
- **Added:** Better Mobile Layout
- [Full Changelog](https://github.com/Sparths/AnyHabit/compare/v0.6.0...v0.6.1)
#### [v0.6.0] - Relapse Feature
- **Added:** Add Relapse Feature that resets your Tracker without having to delete the whole tracker and loosing all Journal Entries
- **Fix:** Changed that Impact Units go up based on actual units logged.
- [Full Changelog](https://github.com/Sparths/AnyHabit/compare/v0.5.0...v0.6.0)
#### [v0.5.0] - Custom Impact Units
- **Added:** Support custom impact units!
- [Full Changelog](https://github.com/Sparths/AnyHabit/compare/v0.4.0...v0.5.0)
---
## ✨ Key Features
* **Dual Tracking Modes:** Monitor positive routines or reduce harmful ones.
* **Categories:** Organize your dashboard with custom categories.
* **Dark Mode:** Seamlessly switch between Light and Dark themes.
* **Financial Impact:** Automatically calculate money saved by avoiding negative habits.
* **Daily Journal:** Log your mood and thoughts alongside your habits.
* **Self-Hosted & Private:** Complete control over your data with SQLite and Docker.
---
## 🚀 One-Command Quick Start
AnyHabit is designed to be "up and running" in seconds. You do **not** need Node.js or Python installed locally.
**Requirements:** [Docker](https://docs.docker.com/get-docker/) with the Compose plugin.
```bash
# 1. Clone the repository
git clone https://github.com/Sparths/AnyHabit.git
cd AnyHabit
# 2. Build and start everything
docker compose up -d --build
```
Open **http://localhost** (or your device's IP) in your browser.
> [!TIP]
> Your data is safely stored in a Docker volume (`db_data`) and will persist even if you stop or rebuild the containers.
---
## ⚙️ Configuration
| Variable | Description | Default |
| :--- | :--- | :--- |
| `APP_PORT` | The port on which the app is accessible | `80` |
| `VITE_API_URL` | Backend URL (internal routing) | `http://localhost/api` |
**To change the port:**
1. Create an environment file: `cp .env.example .env`
2. Edit `.env` and change `APP_PORT=8080`
3. Restart: `docker compose up -d`
---
## 🛠️ Tech Stack
* **Backend:** [FastAPI](https://fastapi.tiangolo.com/) (Python 3.12-slim)
* **Frontend:** [React 19](https://react.dev/) + [Vite](https://vitejs.dev/)
* **Styling:** [Tailwind CSS 4](https://tailwindcss.com/)
* **Proxy:** [Nginx](https://www.nginx.com/) as a Reverse Proxy & Static File Server
---
## 🤝 Community & Contributing
AnyHabit is an open-source, community-driven project!
Join our **[Discord Server](https://discord.gg/ajknBq5zcH)** to:
* 🛠️ Get help with your setup or projects.
* 🚀 Showcase what you've built.
* 💬 Chat with other programmers and contributors.
**Other ways to help:**
* **💡 Ideas:** [Open a Feature Request](https://github.com/Sparths/AnyHabit/issues)
* **🐛 Bugs:** [Open a Bug Report](https://github.com/Sparths/AnyHabit/issues)
* **💻 Code:** Check our [Contributing Guidelines](CONTRIBUTING.md)
## ⭐ Star History