Skip to content

About

The program, that collect and structure information for morning

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

🌅 MorningHub

Персональный веб-дашборд, который собирает и структурирует информацию для начала дня.
Новости IT, игр, политики, актуальные курсы валют, криптовалюты, погода и агрегация с помощью ИИ — всё в одном месте, настраиваемое под себя.


Описание

MorningHub — это Flask-приложение с многопользовательской авторизацией и настраиваемой сеткой виджетов (на базе GridStack).
Каждый пользователь получает персональный дашборд: выбирает нужные виджеты, задаёт их размер и порядок, а также может экспортировать утреннюю сводку в один файл. изображение

Доступные виджеты

  • 📰 IT-новости: Парсинг RSS-ленты Habr/OpenNET.
  • 🎮 Игровые новости: Парсинг Playground.ru с автоматическим резервированием (fallback) на iXBT Games в случае ошибок.
  • 🏛️ Политика: Актуальные заголовки Lenta.ru.
  • 🤖 AI Модели: Новости из мира ИИ (Artificial Analysis).
  • ✨ ИИ-Сводка: Генерация краткого пересказа новостей с использованием выбранной языковой модели (требуется API-ключ OpenAI/совместимых).
  • 💱 Курсы валют: Данные с открытого API Центрального Банка.
  • 🪙 Криптовалюты: Интеграция с CoinGecko с автоматическим резервированием (fallback) на Binance API при исчерпании лимитов.
  • ⛅ Погода: Интеграция с Open-Meteo и автоматическим fallback на wttr.in при ошибках геокодирования или лимитах.
  • ⏰ Часы: Аналоговые и цифровые часы.
  • 📅 Календарь: Интерактивный календарь.
  • 🔗 Закладки: Сохранение полезных ссылок.

🖼️ Кастомизация

  • Свободное перемещение и изменение размера виджетов (Drag & Drop сетка).
  • Выбор светлой или темной темы.
  • Настройка цвета и прозрачности подложки виджетов.
  • Загрузка фонового изображения для дашборда (с безопасным UUID-именованием).

📤 Экспорт сводки

  • Выгрузка утреннего дайджеста в TXT или CSV через GET /api/v1/export?format=<txt|csv>.
  • Безопасная генерация CSV.

Планы на будущее

  • Полностью свободное расположение без сетки сетки
  • Улучшение работы с задним фономм(возможность поставить gif, выбрать как обрезать фото)
  • Более тонкая настройка всего

Схема базы данных

Таблица users

Поле Тип Описание
id int (PK) Первичный ключ
usr_name str (Unique) Имя пользователя
pass_hash str Хэш пароля
back_img str | None Путь к фоновому изображению
theme str Тема (light/dark)
wid_cvet, wid_prozr str, float Настройки цвета виджетов
Остальные поля Настройки ИИ, города и т.д.

Таблица widget_configs

Поле Тип Описание
id int (PK) Первичный ключ
usr_id int (FK) Связь с users.id
w_tip str Тип виджета (напр. it_news)
is_act bool Показывать ли виджет
poz int Порядок отображения
x, y, w, h int Координаты и размеры в GridStack

API Эндпоинты

Метод Эндпоинт Описание
GET /api/v1/widgets/it-news JSON с IT-новостями
GET /api/v1/widgets/weather JSON с прогнозом погоды
GET /api/v1/widgets/crypto JSON с курсами криптовалют
PATCH /api/v1/widgets/save-grid Сохранение расположения сетки
PATCH /api/v1/widgets/<w_tip>/toggle Переключение активности виджета
GET /api/v1/export?format=<txt|csv> Экспорт утренней сводки

Развертывание локально

  1. Склонируйте репозиторий:

    git clone https://github.com/Magmucot/MorningHub.git
    cd MorningHub
  2. Создайте виртуальное окружение и установите зависимости:

    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  3. Создайте файл .env в корне проекта (опционально):

    FLASK_ENV=development
    SECRET_KEY=my-super-secret-local-key
    DB_URL=sqlite:///db/morninghub_dev.db
  4. Запустите приложение:

    python run.py

    Приложение будет доступно по адресу http://127.0.0.1:5000.


Деплой на Render (Production)

Проект полностью оптимизирован для бесплатного тарифа Render.

  1. Подключите репозиторий к Render как Web Service.
  2. Укажите следующие настройки:
    • Environment: Python 3
    • Build Command: pip install -r requirements.txt
    • Start Command: bash start.sh
  3. В разделе Environment Variables обязательно добавьте:
    • FLASK_ENV = production
    • SECRET_KEY = <сгенерируйте длинную случайную строку> (Обязательно! Иначе сессии не будут работать)
    • WEB_CONCURRENCY = 2 (Для предотвращения ошибок нехватки памяти (OOM) на бесплатном тарифе, где доступно 512MB RAM).
    • DB_URL = <ваша строка подключения к PostgreSQL> (Драйвер psycopg2-binary уже включен в зависимости).

Скрипт start.sh автоматически инициализирует таблицы базы данных и запустит gunicorn на порту, который выдаст Render.


📜 Лицензия

Magmucot

MIT License © 2026

About

The program, that collect and structure information for morning

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages