Skip to content

YoFaceQT/Notes-and-Notifications

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Manager with Telegram Notifications

Python Postgres FastAPI Pydantic SQLAlchemy Docker Telegram React

🌟Что делает этот проект?

Это умный менеджер задач, который сам напоминает о себе там, где вы точно не пропустите уведомление — в Telegram.

Вы просто создаёте задачу в браузере на Frontend, указываете, через сколько минут напомнить, и продолжаете заниматься своими делами. Бэкенд на FastAPI бережно хранит всё в PostgreSQL, а фоновый планировщик в нужный момент «стучится» в Telegram.

🤖 Telegram уведомления

Бот проверяет статусы задач и присылает уведомление в Telegram по окончанию действия таймера. Задача автоматически помечается как выполненная (или неудачная, если бот не смог отправить сообщение).

🚀 Стек технологий

  • Python - язык программирования
  • FastAPI — веб-фреймворк для API
  • PostgreSQL — основная база данных
  • SQLAlchemy (ORM) — работа с БД
  • Pydantic — валидация данных и схемы
  • Docker — контейнеризация PostgreSQL
  • Telegram Bot API (pyTelegramBotAPI) — отправка уведомлений
  • Python-dotenv — управление переменными окружения
  • Uvicorn — ASGI сервер
  • React - Frontend
  • Asyncio — фоновые задачи

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

src/
├── api/
│   ├── router.py          # эндпоинты
│   └── repository.py      # работа с БД
├── models/
│   ├── models.py          # SQLAlchemy ORM
│   └── constants.py       # ограничения полей
├── schemas/
│   └── schemas.py         # Pydantic схемы
├── bot/
│   └── bot_load.py        # логика бота и планировщик
├── core/
│   └── database.py        # подключение к БД
└── main.py                # точка входа, lifespan
/todo-app-frontend         # фронтэнд проекта

📦 Установка и запуск

1. Клонировать репозиторий

git clone git@github.com:YoFaceQT/Notes-and-Notifications.git

2. Настроить переменные окружения, в корне проекта создать .env

DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_NAME=postgres
DB_PASS=postgres
TELEGRAM_TOKEN=!!!YOUR_BOT_TELEGRAMM_TOKEN!!!
TELEGRAM_CHAT_ID=!!!YOUR_TELEGRAM_CHAT_ID!!!

3. Запусить Docker сбору

docker-compose up --build

Базовый URL FRONTEND: http://localhost:80

Базовый URL BACKEND: http://localhost:8000

Документация сгенерирована FASTAPI и находится по адресу: http://localhost:8000/docs

📡 API Endpoints

Method Endpoint Description
POST /tasks Создать новую задачу
GET /tasks Список всех задач
PATCH /tasks/{id} Обновить задачу
DELETE /tasks/{id} Удалить задачу

Тесты

"В проекте также имеются pytest-тесты. Они не включаются в сборку контейнера бэкенда и запускаются отдельно."

Примеры запроса к API

Запрос:

curl -X POST http://localhost:8000/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Купить молоко",
    "description": "Выйти до 20:00",
    "remind_after_minutes": 30
  }'

Ответ: (JSON)

[
  {
    "id": 1,
    "name": "Купить молоко",
    "description": "Выйти до 20:00",
    "remind_after_minutes": 30,
    "time_stamp": "2025-04-22T12:00:00",
    "status": "IN_PROGRESS",
    "reminded": false
  }
]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors