Skip to content

Repository files navigation

Mood Journal — дневник настроения

Веб-приложение для трекинга эмоционального состояния. Идея простая: каждый день записываешь, как прошёл день и какое было настроение, а потом можно посмотреть статистику за неделю или месяц.

Зачем это нужно

Часто не замечаешь, что настроение портится каждый понедельник или что после спорта всегда становится лучше. Хочется иметь простой инструмент, куда можно быстро записать своё состояние и потом увидеть закономерности на графике, а не копаться в заметках телефона.

Что приложение умеет (план на MVP)

  • Запись настроения — выбираешь одну из пяти категорий (отличное, хорошее, нейтральное, плохое, ужасное) и по желанию пишешь заметку
  • Календарь — каждый день подсвечивается цветом в зависимости от настроения, что-то вроде heatmap на гитхабе
  • Статистика — простая диаграмма: сколько каких дней было за период
  • История — можно пролистать прошлые записи

Что хочется добавить потом

  • Теги (работа, учёба, спорт) для фильтрации
  • Аналитика по дням недели — в какой день обычно лучше/хуже
  • Авторизация, чтобы можно было пользоваться с разных устройств
  • Нормальная мобильная версия

Архитектура

Классическая клиент-серверная схема. Фронт общается с бэкендом по REST API, бэкенд ходит в базу.

Frontend (HTML/CSS/JS)
        |
        | REST API (JSON)
        v
Backend (Python, FastAPI)
        |
        | SQL-запросы
        v
Database (SQLite)

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

mood-journal/
├── backend/
│   ├── main.py              # точка входа
│   ├── models.py            # модели данных
│   ├── database.py          # подключение к БД
│   ├── routers/
│   │   └── entries.py       # эндпоинты для записей
│   └── requirements.txt
├── frontend/
│   ├── index.html
│   ├── css/
│   │   └── style.css
│   └── js/
│       ├── app.js           # основная логика
│       └── charts.js        # графики и heatmap
├── tests/
│   ├── test_api.py
│   └── test_models.py
├── Dockerfile
├── docker-compose.yml
├── .github/
│   └── workflows/
│       └── ci.yml
└── README.md

Стек

Что Чем Почему
Backend Python 3.12 + FastAPI Быстро пишется, есть автодокументация через Swagger
ORM SQLAlchemy Удобно работать с БД, не писать сырой SQL
БД SQLite Для MVP хватит, не нужно поднимать отдельный сервер
Frontend Vanilla JS + Chart.js Без лишних фреймворков, Chart.js для графиков
Контейнеризация Docker Чтобы у всех одинаково запускалось
CI GitHub Actions Встроено в GitHub, удобно
Линтер Ruff Быстрый, заменяет flake8 + black
Тесты pytest + httpx Стандартный стек для тестирования FastAPI
Безопасность Semgrep, Trivy Статический анализ кода и проверка зависимостей

Roadmap

  • Идея, описание проекта, репозиторий
  • Базовая реализация — работающий backend + frontend
  • CI pipeline — линтер и проверки при PR
  • Docker — упаковать приложение в контейнер
  • Тесты — unit, API, e2e
  • Статический анализ безопасности
  • SCA — анализ зависимостей, SBOM
  • Финальная документация

Как запустить

git clone https://github.com/TohaProLife/mood-journal.git
cd mood-journal/backend

# Создаём виртуальное окружение (рекомендуется)
python -m venv venv
venv\Scripts\activate       # Windows
# source venv/bin/activate  # Linux/macOS

# Ставим зависимости
pip install -r requirements.txt

# Запускаем
uvicorn main:app --reload

После запуска:

Запуск через Docker

git clone https://github.com/TohaProLife/mood-journal.git
cd mood-journal

docker build -t mood-journal .
docker run -p 8000:8000 mood-journal

Или через docker-compose:

docker-compose up --build

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages