update readme

This commit is contained in:
IluaAir
2025-04-13 23:35:27 +03:00
parent a552b632a0
commit bdce2c1e23
6 changed files with 290 additions and 120 deletions

View File

@@ -1,20 +1,57 @@
# Task&Coffee
# Task&Coffee
![Status](https://img.shields.io/badge/status-in--development-yellow)
![Build](https://img.shields.io/badge/build-passing-brightgreen)
**Task&Coffee** — удобный менеджер задач, разработанный для эффективного планирования и отслеживания повседневных заданий на неделю.
Приложение помогает организовать рабочие процессы, управлять приоритетами и оставаться продуктивным каждый день.
___
#### 📚 Содержание:
1) [Installation](docs/installation.md)
2) [API](docs/api.md)
3) [SQL-schema](docs/schema.md)
4) [Celery](docs/celery.md)
5) [Frontend](docs/frontend.md)
Task&Coffee - менеджер задач созданный для отслеживания повседневных недельных заданий.
#### Стек технологий:
FastAPI \
SQLAlchemy \
SQLite \
Redis \
Celery \
React.js \
Vite
___
#### Содержание:
1) [Installation](docs/installation.md)
2) [Api](docs/api.md)
3) [SQL-schema](docs/schema.md)
4) [Celery](docs/celery.md)
4) [Frontend](docs/frontend.md)
---
## 🔧 Ключевые возможности
- ✅ Создание и редактирование задач
- 📅 Гибкое планирование на неделю
- 🔥 Установка приоритетов и дедлайнов
- 🔔 Напоминания и уведомления
- ⚙️ Асинхронная обработка задач
- 💡 Современный и интуитивно понятный интерфейс
---
## 🌱 В планах к реализации
- 🔐 Авторизация и учёт пользователей
- 🏷️ Теги и фильтрация задач
- 📆 Интеграция с календарём
- 🌙 Тёмная тема
- 📊 Панель аналитики (время на задачу, статистика по выполнению)
---
## 🛠️ Стек технологий
### Backend
- **FastAPI**
- **SQLAlchemy**
- **SQLite**
- **Redis**
- **Celery**
### Frontend
- **React.js**
- **Vite**
---
## 🚀 Установка и запуск (в разработке)
Инструкция по локальному развертыванию проекта появится скоро.

View File

@@ -1,13 +1,13 @@
{
"author": "Unnamed",
"title": "Task&Coffee",
"date": "2025-03-27T21:10:04.996Z",
"date": "2025-04-13T20:32:14.768Z",
"tables": [
{
"id": 0,
"name": "Users",
"x": -104.8410100000001,
"y": -43.33970937500004,
"x": -197.2194850000002,
"y": 108.59857187500006,
"fields": [
{
"name": "id",
@@ -94,8 +94,8 @@
{
"id": 1,
"name": "Tasks",
"x": 229,
"y": 65,
"x": 359.95364004739827,
"y": 95.38765625000008,
"fields": [
{
"name": "id",
@@ -237,8 +237,8 @@
{
"id": 2,
"name": "Tags",
"x": 698,
"y": 533,
"x": 920.4376437500002,
"y": 368.90665624999997,
"fields": [
{
"name": "id",
@@ -338,8 +338,8 @@
{
"id": 4,
"name": "Task_Assignees",
"x": 287,
"y": 560,
"x": 649.2208625000001,
"y": 555.137975,
"fields": [
{
"name": "id",
@@ -382,6 +382,67 @@
"indices": [],
"color": "#7d9dff",
"key": 1742204065899
},
{
"id": 5,
"name": "Comments",
"x": 85.14274611544158,
"y": -130.41751984174218,
"fields": [
{
"name": "id",
"type": "INT",
"default": "",
"check": "",
"primary": true,
"unique": true,
"notNull": true,
"increment": true,
"comment": "",
"id": 0
},
{
"name": "task_id",
"type": "INT",
"default": "",
"check": "",
"primary": false,
"unique": false,
"notNull": false,
"increment": false,
"comment": "",
"id": 1
},
{
"name": "user_id",
"type": "INT",
"default": "",
"check": "",
"primary": false,
"unique": false,
"notNull": false,
"increment": false,
"comment": "",
"id": 2
},
{
"name": "comment",
"type": "TEXT",
"default": "",
"check": "",
"primary": false,
"unique": false,
"notNull": false,
"increment": false,
"comment": "",
"id": 3,
"size": 65535
}
],
"comment": "",
"indices": [],
"color": "#175e7a",
"key": 1744576052508
}
],
"relationships": [
@@ -428,6 +489,28 @@
"deleteConstraint": "Cascade",
"name": "Tasks_id_fk",
"id": 3
},
{
"startTableId": 0,
"startFieldId": 0,
"endTableId": 5,
"endFieldId": 2,
"cardinality": "One to many",
"updateConstraint": "No action",
"deleteConstraint": "No action",
"name": "Users_id_fk",
"id": 4
},
{
"startTableId": 1,
"startFieldId": 0,
"endTableId": 5,
"endFieldId": 1,
"cardinality": "One to many",
"updateConstraint": "No action",
"deleteConstraint": "No action",
"name": "Tasks_id_fk",
"id": 5
}
],
"notes": [],

View File

@@ -1,48 +1,60 @@
# API
# 📡 API
## Основные эндпоинты:
## Основные эндпоинты
___
Пользователи (Users)
####
GET /users Получить список всех пользователей \
GET /users/{user_id} Получить конкретного пользователя \
GET /users/{user_id}/tasks - Получить задачи пользователя \
POST /users Создать нового пользователя \
PUT /users/{user_id} Обновить данные пользователя \
DELETE /users/{user_id} Удалить пользователя
Задачи (Tasks)
####
GET /tasks Получить список всех задач \
GET /tasks/{task_id} Получить задачу по ID \
POST /tasks Создать новую задачу \
PUT /tasks/{task_id} Обновить задачу \
DELETE /tasks/{task_id} Удалить задачу
### 👤 Пользователи (Users)
Вложения (Attachments)
####
GET /tasks/{task_id}/attachments Получить все вложения к задаче \
POST /tasks/{task_id}/attachments Добавить вложение к задаче \
DELETE /attachments/{attach_id} Удалить вложение
- `GET /users` — Получить список всех пользователей
- `GET /users/{user_id}` — Получить конкретного пользователя
- `GET /users/{user_id}/tasks` — Получить задачи пользователя
- `POST /users` — Создать нового пользователя
- `PUT /users/{user_id}` — Обновить данные пользователя
- `DELETE /users/{user_id}` — Удалить пользователя
Теги (Tags)
####
GET /tags Получить список всех тегов \
GET /tags/{tag_id} Получить тег по ID \
POST /tags Создать новый тег \
DELETE /tags/{tag_id} Удалить тег
---
Назначение тегов к задачам (Task_Assignees)
####
GET /tasks/{task_id}/tags Получить все теги задачи \
POST /tasks/{task_id}/tags/{tag_id} Добавить тег к задаче \
DELETE /tasks/{task_id}/tags/{tag_id} Удалить тег у задачи
### ✅ Задачи (Tasks)
Авторизация (Auth)
####
POST /auth/register Регистрация нового пользователя \
POST /auth/login Вход пользователя \
POST /auth/logout Выход пользователя \
POST /auth/refresh Обновление токена \
GET /auth/me Получение данных текущего пользователя\
- `GET /tasks` — Получить список всех задач
- `GET /tasks/{task_id}` — Получить задачу по ID
- `POST /tasks` — Создать новую задачу
- `PUT /tasks/{task_id}` — Обновить задачу
- `PATCH /tasks/{task_id}` — Частично обновить задачу
- `DELETE /tasks/{task_id}` — Удалить задачу
---
### 📎 Вложения (Attachments)
- `GET /tasks/{task_id}/attachments` — Получить все вложения к задаче
- `POST /tasks/{task_id}/attachments` — Добавить вложение к задаче
- `DELETE /attachments/{attach_id}` — Удалить вложение
---
### 🏷️ Теги (Tags)
- `GET /tags` — Получить список всех тегов
- `GET /tags/{tag_id}` — Получить тег по ID
- `POST /tags` — Создать новый тег
- `DELETE /tags/{tag_id}` — Удалить тег
---
### 🔗 Назначение тегов к задачам (Task_Assignees)
- `GET /tasks/{task_id}/tags` — Получить все теги задачи
- `POST /tasks/{task_id}/tags/{tag_id}` — Добавить тег к задаче
- `DELETE /tasks/{task_id}/tags/{tag_id}` — Удалить тег у задачи
---
### 🔐 Авторизация (Auth)
- `POST /auth/register` — Регистрация нового пользователя
- `POST /auth/login` — Вход пользователя
- `POST /auth/logout` — Выход пользователя
- `POST /auth/refresh` — Обновление токена
- `GET /auth/me` — Получение данных текущего пользователя

View File

@@ -1,10 +1,26 @@
# Celery
# ⚙️ Celery
**Celery** используется в Task&Coffee для выполнения фоновых (асинхронных) задач, не блокирующих основной поток приложения.
---
### 📌 Основные фоновые задачи:
#### 🔔 Уведомления о задачах
- Отправка напоминаний пользователю перед дедлайном
- Поддержка нескольких каналов:
- 📧 Email
- 💬 Telegram
#### 📊 Генерация отчётов
- Еженедельные и ежемесячные отчёты о проделанных задачах
- Формат: PDF / HTML (в планах — отправка на email)
#### 📎 Загрузка вложений
- Обработка и сохранение вложенных файлов
- Проверка валидности, возможное сжатие/конвертация (в будущем)
---
### Фоновые задачи:
* Отправка уведомлений о задачах
* * Email
* * Telegram
* Генерация отчетов за неделю/месяц
* Загрузка вложенных документов

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

After

Width:  |  Height:  |  Size: 279 KiB

View File

@@ -1,53 +1,75 @@
# SQL-schema
# 🗃️ SQL-schema
База данных SQLite, движок *aiosqlite*
___
База данных: **SQLite**
Движок: *aiosqlite*
### Структура базы данных:
#####
#### Users
---
id - int, первичный ключ \
name - char, логин пользователя (уникально)\
password - varchar, пароль пользователя \
email - char, электронная почта для отправки уведомлений (не обязательно) \
telegram_id - bigint, id пользователя в телеграм для отправки уведомлений (не обязательно) \
avatar_path - varchar, путь до аватарки на диске (не обязательно)
#####
#### Tasks
## 🧩 Структура базы данных
Отношение многие к одному Users.
#####
id - int, первичный ключ \
user_id - int, relationship для Users.id \
title - char, заголовок задачи \
description - text, полное описание задачи (не обязательно) \
due_date - date, день недели на которое будет назначена задача \
status - enum, текущий статус задачи (open, closed, in progress, todo; по умолчанию open) \
priority - enum, приоритетность задачи (low, medium, high, critical) \
created_at - timestamp, время создания \
time_spent - int, затраченное время (по умолчанию - 0)
#####
#### Attachements
### 👤 Users
Отношение многие к одному Tasks.
####
id - int, первичный ключ \
task_id - int, relationship для Tasks.id \
file_path - varchar, путь до файла на диске \
uploaded_at - timestamp
#####
#### Tags
- `id`: `int` — первичный ключ
- `name`: `char` — логин пользователя (**уникально**)
- `password`: `varchar` — хешированный пароль
- `email`: `char` — email для отправки уведомлений *(опционально)*
- `telegram_id`: `bigint` — Telegram ID пользователя *(опционально)*
- `avatar_path`: `varchar` — путь до аватарки *(опционально)*
id - int, первичный ключ \
name - char, название тега (уникально)
#####
#### Task_Assignees
Отношение многие с многими Tasks - Tags
#####
id - int, первичный ключ \
task_id - int, relationship для Tasks.id \
tag_id - int, relationship для Tags.id
___
![db-schema.png](pics/db-schema.png)
---
### ✅ Tasks
**Связь:** многие-к-одному с `Users`
- `id`: `int` — первичный ключ
- `user_id`: `int` — внешний ключ на `Users.id`
- `title`: `char` — заголовок задачи
- `description`: `text` — полное описание *(опционально)*
- `due_date`: `date` — назначенный день выполнения
- `status`: `enum` — статус задачи (`open`, `closed`, `in_progress`, `todo`) *(по умолчанию: `open`)*
- `priority`: `enum` — приоритет (`low`, `medium`, `high`, `critical`)
- `created_at`: `timestamp` — дата и время создания
- `time_spent`: `int` — затраченное время в минутах *(по умолчанию: `0`)*
---
### 💬 Comments
**Связь:** многие-к-одному с `Tasks` и `Users`
- `id`: `int` — первичный ключ
- `task_id`: `int` — внешний ключ на `Tasks.id`
- `user_id`: `int` — внешний ключ на `Users.id`
- `comment`: `text` — содержимое комментария
---
### 📎 Attachments
**Связь:** многие-к-одному с `Tasks`
- `id`: `int` — первичный ключ
- `task_id`: `int` — внешний ключ на `Tasks.id`
- `file_path`: `varchar` — путь до файла
- `uploaded_at`: `timestamp` — время загрузки
---
### 🏷️ Tags
- `id`: `int` — первичный ключ
- `name`: `char` — название тега (**уникально**)
---
### 🔗 Task_Assignees
**Связь:** многие-ко-многим между `Tasks` и `Tags`
- `id`: `int` — первичный ключ
- `task_id`: `int` — внешний ключ на `Tasks.id`
- `tag_id`: `int` — внешний ключ на `Tags.id`
---
## 🖼️ Визуальная схема
![db-schema.png](pics/db-schema.png)