Skip to content

Megalith737/study-organizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

CoreDesk

Репозиторій для розробки персонального навчального хабу та органайзера дедлайнів.


📌 Етап 1: Концепція проєкту

Проблема

У процесі навчання та роботи велика кількість посилань на зустрічі, навчальних матеріалів та дедлайнів розпорошена по різних сервісах та чатах. Це створює хаос, призводить до втрати фокусу та ризику пропустити важливі завдання через відсутність єдиної системи контролю.

Рішення

Застосунок виступає централізованим хабом, який збирає всі організаційні моменти в одному місці. Він дозволяє зберігати структуру матеріалів, швидкі посилання на онлайн-зустрічі та вести персональний календар із нагадуваннями про дедлайни, що допомагає ефективно керувати часом.

Цільовий користувач

Студенти, викладачі та активні люди, які поєднують навчання з роботою чи іншими проєктами й потребують інструменту для структурування свого освітнього процесу.

Виконання

  • Посилання на репозиторій: [Встав посилання на цей репо]

⚙️ Етап 2: Інженерні вимоги

1. User Stories (Функціональні вимоги)

  • Створення дедлайну: Як користувач, я хочу мати можливість додавати нове завдання з назвою, описом та чітким дедлайном, щоб воно з'явилося в моєму календарі.
  • Менеджмент лінків: Як користувач, я хочу зберігати посилання на онлайн-зустрічі (Zoom/Teams) та прив'язувати їх до конкретних предметів, щоб швидко підключатися до занять.
  • Сповіщення: Як користувач, я хочу отримувати нагадування про дедлайн за 2 години до його закінчення, щоб встигнути вчасно здати роботу.

2. Нефункціональні вимоги (Вимірювані обмеження)

  • Performance (Продуктивність): Час відповіді сервера (Response Time) для API-ендпоінтів створення та отримання завдань не повинен перевищувати 200 мс для 95% запитів (p95).
  • Security (Безпека): Усі паролі користувачів мають хешуватися за допомогою алгоритму bcrypt або Argon2. Доступ до захищених API-ендпоінтів має здійснюватися виключно за допомогою JWT-токенів (Bearer token).
  • Availability (Доступність): Застосунок має забезпечувати коефіцієнт доступності сервісу на рівні не менше 99.5% (Uptime) протягом усього навчального семестру.

3. Дизайн ендпоінтів (API Contract)

Ендпоінт 1: Створення нового завдання/дедлайну

  • Запит: 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"
}

Ендпоінт 2: Отримання списку завдань на сьогодні

  • Запит: 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
    }
  ]
}

4. Тест-кейси (Given / When / Then)

Тест-кейс 1: Успішне створення завдання

  • Given: Авторизований користувач знаходиться на сторінці створення завдання.
  • When: Користувач вводить валідну назву, майбутню дату дедлайну і натискає «Зберегти».
  • Then: Система повертає статус 201 Created, і завдання успішно додається до бази даних.

Тест-кейс 2: Валідація некоректної дати

  • Given: Авторизований користувач заповнює форму створення завдання.
  • When: Користувач вводить дату дедлайну, яка вже минула (в минулому часі), і надсилає запит.
  • Then: Система повертає статус 400 Bad Request з повідомленням помилки: "Дата дедлайну не може бути в минулому".

Тест-кейс 3: Спроба доступу без авторизації

  • Given: Неавторизований користувач (відсутній або невалідний токен у Headers).
  • When: Користувач намагається надіслати запит на отримання списку завдань GET /api/v1/tasks/today.
  • Then: Система блокує запит і повертає статус 401 Unauthorized.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors