Hábito. is a self-hosted Flask web application designed for developers and productivity-minded individuals who want to build consistent daily habits and measure their progress over time. It gives you a personal dashboard where you can define habits, mark them complete each day, watch your streaks climb, and explore your activity through an interactive heat-map calendar and Plotly-powered progress charts — all with no third-party accounts, cloud subscriptions, or external databases required. Everything lives in a single SQLite file on your own machine.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/BrandonCVale/SISTEMA-HABITOS/llms.txt
Use this file to discover all available pages before exploring further.
Key Features
Authentication
Secure account registration and login backed by bcrypt password hashing and Flask-Login session management. Unauthenticated users are automatically redirected to the login page.
Habit Management
Full CRUD for habits: create with a name, description, schedule days, and time of day; edit or deactivate at any time; toggle completion with a single click that updates your streak automatically.
Dashboard & Heat Map
The main dashboard surfaces today’s habits, three live KPIs (completed today, current streak, best streak), and a monthly heat-map calendar that highlights every day you completed at least one habit.
Progress Charts
Per-habit line charts rendered with Plotly Express show completion vs. failure for each of the last 30 days, served as embedded interactive HTML directly into the page.
Tech Stack
Hábito. is built entirely on well-known, stable Python libraries with no proprietary dependencies.| Layer | Technology |
|---|---|
| Web framework | Python 3 + Flask 3.1.3 |
| ORM | Flask-SQLAlchemy 3.1.1 (SQLAlchemy 2.0) |
| Auth | Flask-Login 0.6.3 + bcrypt 5.0.0 |
| Database | SQLite (file-based, zero config) |
| Charts | Plotly Express 6.8.0 + Pandas 3.0.3 |
| Templates | Jinja2 3.1.6 |
| Frontend | HTML5, CSS3, Vanilla JS, Lucide Icons |
Architecture Overview
Hábito. follows a strict four-layer MVC-inspired architecture that keeps concerns cleanly separated and makes the codebase easy to extend:- Models (
app/models/) — SQLAlchemy ORM classes that define the database schema and relationships - Repositories (
app/repositories/) — the only layer that talks directly to the database; all queries live here - Services (
app/services/) — complex business logic and analytics calculations, such as generating Plotly charts - Routes (
app/routes/) — Flask Blueprints that handle HTTP traffic, validate form input, call Repositories or Services, and return responses
db.session directly — all database access is delegated to a Repository. See Architecture for a deep dive.
The source code is written in Spanish. Variable names, route URLs, Jinja2 templates, and flash messages all use Spanish terminology. Here is a quick glossary of the key terms you will encounter throughout this documentation and in the source code:
| Spanish term | English meaning |
|---|---|
habito / hábito | habit |
usuario | user |
registro | record / daily log entry |
racha_actual | current streak |
mejor_racha | best (all-time) streak |
dias_semana | days of the week |
activo | active (habit is enabled) |
correo | email address |
contrasena | password |
inicio_sesion | login / sign in |
registro (route) | registration / sign up |
cerrar_sesion | logout |
pagina_principal | main page / dashboard |
dueno | owner (of the habit) |