Репозиторій для розробки персонального навчального хабу та органайзера дедлайнів.
У процесі навчання та роботи велика кількість посилань на зустрічі, навчальних матеріалів та дедлайнів розпорошена по різних сервісах та чатах. Це створює хаос, призводить до втрати фокусу та ризику пропустити важливі завдання через відсутність єдиної системи контролю.
Застосунок виступає централізованим хабом, який збирає всі організаційні моменти в одному місці. Він дозволяє зберігати структуру матеріалів, швидкі посилання на онлайн-зустрічі та вести персональний календар із нагадуваннями про дедлайни, що допомагає ефективно керувати часом.
Студенти, викладачі та активні люди, які поєднують навчання з роботою чи іншими проєктами й потребують інструменту для структурування свого освітнього процесу.
- Посилання на репозиторій: [Встав посилання на цей репо]
- Створення дедлайну: Як користувач, я хочу мати можливість додавати нове завдання з назвою, описом та чітким дедлайном, щоб воно з'явилося в моєму календарі.
- Менеджмент лінків: Як користувач, я хочу зберігати посилання на онлайн-зустрічі (Zoom/Teams) та прив'язувати їх до конкретних предметів, щоб швидко підключатися до занять.
- Сповіщення: Як користувач, я хочу отримувати нагадування про дедлайн за 2 години до його закінчення, щоб встигнути вчасно здати роботу.
- Performance (Продуктивність): Час відповіді сервера (Response Time) для API-ендпоінтів створення та отримання завдань не повинен перевищувати 200 мс для 95% запитів (p95).
- Security (Безпека): Усі паролі користувачів мають хешуватися за допомогою алгоритму bcrypt або Argon2. Доступ до захищених API-ендпоінтів має здійснюватися виключно за допомогою JWT-токенів (Bearer token).
- Availability (Доступність): Застосунок має забезпечувати коефіцієнт доступності сервісу на рівні не менше 99.5% (Uptime) протягом усього навчального семестру.
- Запит:
POST /api/v1/tasks - Headers:
Authorization: Bearer <token> - Request Body (JSON):
{
"title": "Лабораторна робота №2",
"description": "Методи оптимізації, градієнтний спуск",
"deadline": "2026-05-20T23:59:59Z",
"link": "[https://teams.microsoft.com/l/meetup-join/](https://teams.microsoft.com/l/meetup-join/)..."
}
- Відповідь (Успіх - 201 Created):
{
"id": "uuid-1234-5678",
"title": "Лабораторна робота №2",
"status": "pending",
"created_at": "2026-05-17T12:00:00Z"
}
- Запит:
GET /api/v1/tasks/today - Headers:
Authorization: Bearer <token> - Відповідь (Успіх - 200 OK):
{
"date": "2026-05-17",
"tasks": [
{
"id": "uuid-1234-5678",
"title": "Підготувати презентацію",
"deadline": "2026-05-17T18:00:00Z",
"link": null
}
]
}
- Given: Авторизований користувач знаходиться на сторінці створення завдання.
- When: Користувач вводить валідну назву, майбутню дату дедлайну і натискає «Зберегти».
- Then: Система повертає статус
201 Created, і завдання успішно додається до бази даних.
- Given: Авторизований користувач заповнює форму створення завдання.
- When: Користувач вводить дату дедлайну, яка вже минула (в минулому часі), і надсилає запит.
- Then: Система повертає статус
400 Bad Requestз повідомленням помилки:"Дата дедлайну не може бути в минулому".
- Given: Неавторизований користувач (відсутній або невалідний токен у Headers).
- When: Користувач намагається надіслати запит на отримання списку завдань
GET /api/v1/tasks/today. - Then: Система блокує запит і повертає статус
401 Unauthorized.