Skip to content

Lenegrast/trackerYourHabbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Habit Tracker

Веб-приложение для трекинга привычек с GitHub-style визуализацией активности.

Python FastAPI SQLite PostgreSQL

Возможности

  • Трекинг привычек — создавай привычки с иконкой, цветом и описанием
  • GitHub-style сетка — 52 недели активности с градиентной интенсивностью
  • Ежедневная цель — задай количество выполнений в день, цвет меняется пропорционально
  • Спринты и дедлайны — отслеживай прогресс от старта до финиша, видишь % закрытых дней
  • Сворачивание карточек — компактный режим с квадратиками текущей недели
  • Саммари — на главной видно, какие привычки нужно выполнить сегодня
  • Архив — убирай завершённые привычки, не теряя историю
  • Drag & Drop — перетаскивай привычки в нужном порядке
  • Профиль пользователя — аватар, смена имени и пароля
  • Мобильная адаптация — работает на телефоне

Стек

Слой Технология
Backend Python 3.10+, FastAPI, Uvicorn
ORM SQLAlchemy 2.0
База данных SQLite (по умолчанию) / PostgreSQL
Auth JWT (PyJWT) + bcrypt
Frontend Vanilla JS, CSS Custom Properties

Быстрый старт

1. Клонируй репозиторий

git clone https://github.com/<your-username>/habit-tracker.git
cd habit-tracker

2. Создай виртуальное окружение и установи зависимости

python -m venv venv

# Windows
venv\Scripts\activate

# macOS / Linux
source venv/bin/activate

pip install -r requirements.txt

3. Настрой окружение

cp .env.example .env

Открой .env и задай JWT_SECRET — любую длинную случайную строку.
Сгенерировать можно командой:

python -c "import secrets; print(secrets.token_hex(32))"

4. Запусти сервер

uvicorn main:app --reload --port 3000

Приложение будет доступно по адресу: http://localhost:3000

Конфигурация .env

Переменная По умолчанию Описание
DATABASE_URL sqlite:///./habits.db Строка подключения к БД
JWT_SECRET Обязательно. Секрет для подписи токенов
JWT_EXPIRE_DAYS 30 Срок жизни токена в днях
PORT 3000 Порт сервера
DEBUG false true — включает Swagger на /api/docs

PostgreSQL

Замени строку в .env:

DATABASE_URL=postgresql://postgres:PASSWORD@localhost:5432/habits

И убедись, что установлен драйвер:

pip install psycopg2-binary

Структура проекта

habit-tracker/
├── main.py               # FastAPI-приложение: API, модели, авторизация
├── requirements.txt      # Python-зависимости
├── .env.example          # Шаблон переменных окружения
└── public/               # Статические файлы фронтенда
    ├── index.html        # Главная страница (SPA)
    └── profile.html      # Страница профиля

API

Если DEBUG=true, Swagger UI доступен на /api/docs.

Метод Путь Описание
POST /api/auth/register Регистрация
POST /api/auth/login Вход
GET /api/auth/me Текущий пользователь
PUT /api/auth/profile Обновить имя / аватар
PUT /api/auth/password Изменить пароль
GET /api/habits Список привычек
POST /api/habits Создать привычку
PUT /api/habits/{id} Обновить привычку
DELETE /api/habits/{id} Удалить привычку
PUT /api/habits/{id}/completions Синхронизировать выполнения
PUT /api/habits/reorder Изменить порядок

Безопасность

  • Пароли хранятся в виде bcrypt-хешей
  • JWT-токены инвалидируются при смене пароля (token_version)
  • Rate limiting на эндпоинты авторизации
  • Защита от path traversal при отдаче статики
  • CSP, X-Frame-Options, X-Content-Type-Options заголовки
  • Все секреты только в .env (не в коде)

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors