diff --git a/course-work/project-template.md b/course-work/project-template.md index 656263a..5c90a34 100644 --- a/course-work/project-template.md +++ b/course-work/project-template.md @@ -1,69 +1,152 @@ -# Описание на проект: [Име на проекта] +📄 Описание на проект: OLX Marketplace Clone -* **Версия:** 1.0 -* **Дата:** yyyy-mm-dd +Версия: 1.0 +Дата: 2025-11-05 ---- +1. Резюме на проекта +Цел на проекта Целева аудитория Основни резултати +Да се създаде онлайн платформа, която симулира функционалностите на OLX – сайт за публикуване и управление на обяви за покупко-продажба на стоки и услуги между потребители. Индивидуални купувачи и продавачи, фирми и частни лица, които искат да продават или търсят продукти и услуги онлайн. Релационна база данни (MS SQL Server), концептуален и логически модел, Data Warehouse за анализ на обяви и потребителска активност, както и Power BI доклад с визуализации. +Какъв проблем решава проектът? -### 1. Резюме на проекта +Проектът осигурява централизирана система за публикуване, търсене и управление на обяви, включително комуникация между купувачи и продавачи. Решава проблема с фрагментираността на малките обяви и осигурява прозрачност и сигурност при контактите между потребители. -| Цел на проекта | Целева аудитория | Основни резултати | -| :--- | :--- | :--- | -| *Какъв проблем решава проектът?* | *Кой ще използва продукта?* | *Какво ще бъде създадено?* | -| **Пример:** Да се създаде онлайн платформа за резервация на спортни игрища. | **Пример:** Активни хора, спортни клубове, собственици на игрища. | **Пример:** Уебсайт, мобилно приложение, административен панел. | +Кой ще използва продукта? ---- +Обикновени потребители, които публикуват или търсят обяви. -### 2. Обхват и основни функционалности -*Списък с ключовите възможности, които системата ще предоставя.* +Бизнес потребители, които рекламират своите продукти и услуги. -* **Управление на потребители:** - * Регистрация, вход, потребителски профил. -* **Каталог на обекти:** - * Търсене, филтриране и преглед на спортни игрища. -* **Резервационна система:** - * Календар за свободни часове, създаване и управление на резервации. -* **Плащания:** - * Интеграция със система за онлайн плащания. -* **Административен панел:** - * Управление на потребители, обекти и резервации. +Администратори, които следят за коректността на съдържанието и активността в платформата. ---- +Какво ще бъде създадено -### 3. Технологичен стек -*Основните технологии, които ще бъдат използвани.* +Концептуален и логически модел на база данни (Chen и Crow’s Foot нотация) -* **Сървърна част (Backend):** [Напр. .NET 8, C#, Node.js] -* **Клиентска част (Frontend):** [Напр. React, Angular, Blazor] -* **База данни (Database):** [Напр. MS SQL, PostgreSQL, MongoDB] +MS SQL Server база данни с таблици, процедури, функции и тригери ---- +Data Warehouse модел за анализ на активността -### 4. Основни бизнес правила -*Най-важните правила, които управляват логиката на системата.* +Power BI визуализации за бизнес анализ -#### 4.1. Правила за достъп и роли +2. Обхват и основни функционалности -* **Гост (нерегистриран):** Може само да разглежда обекти и свободни часове. -* **Потребител (регистриран):** Може да създава, преглежда и отменя своите резервации. -* **Собственик на обект:** Управлява информацията и календара за собствените си игрища. -* **Администратор:** Има пълен достъп до цялата система. +Системата ще включва следните основни модули: -#### 4.2. Ключови бизнес правила +Управление на потребители -* **Резервации:** - * Резервация може да се направи най-много 30 дни напред. - * Безплатна отмяна на резервация е възможна до 24 часа преди началния час. -* **Плащания:** - * Резервацията се счита за потвърдена само след успешно плащане. - * При отмяна според правилата, сумата се възстановява автоматично. -* **Ценообразуване:** - * Цената на час може да варира в зависимост от деня от седмицата и часа (напр. по-скъпо вечер и през уикенда). +Регистрация и вход (email/парола или OAuth – Google, Facebook) -#### 4.3. Правила за данните +Профил с роля: купувач, продавач, администратор -* **Потребители:** Имейл адресът е уникален за всеки потребител. -* **Резервации:** Не може да съществуват две резервации за един и същи обект в един и същи час. -* **Обекти:** Всеки обект трябва да има поне една снимка и посочен адрес. +Управление на контактна информация и история на публикувани обяви ---- \ No newline at end of file +Обяви (Listings) + +Публикуване на нова обява с описание, снимки, цена и местоположение + +Категоризация по тип (например: Имоти, Автомобили, Услуги, Електроника и др.) + +Търсене и филтриране по ключови думи, категория, локация, цена, дата + +Маркиране на любими обяви + +Комуникация между потребители + +Вътрешна система за съобщения (Inbox) + +Известия при нови запитвания + +История на контактите по обяви + +Плащания и промотиране + +Запис на извършени плащания за промотиране на обяви (Premium, Top, Featured) + +Управление на пакети и срокове на видимост + +Изчисляване на приходи по периоди + +Обратна връзка и рейтинг + +Възможност за оставяне на оценка и коментар за продавачи + +Автоматично изчисляване на среден рейтинг + +Отчитане на активността (брой публикувани обяви, успешни сделки) + +Административен панел + +Управление на потребители, категории и обяви + +Одобрение или премахване на съдържание + +Аналитични отчети (брой активни обяви, нови потребители, приходи) + +3. Технологичен стек +Компонент Технология +Сървърна част (Backend) Microsoft SQL Server (T-SQL) +Клиентска част (Frontend) Power BI / Tableau / Google Data Studio +База данни MS SQL Server (OLTP) и Data Warehouse +Моделиране MS Visio / draw.io (Chen, Crow’s Foot, UML) +4. Основни бизнес правила +4.1. Правила за достъп и роли + +Гост: може да разглежда обяви и категории. + +Регистриран потребител (купувач): може да пише съобщения, да добавя любими и да оставя рейтинг. + +Продавач: може да публикува, редактира и изтрива свои обяви. + +Администратор: пълен достъп – управление на потребители, категории, обяви, плащания и статистики. + +4.2. Ключови бизнес правила + +Обяви: + +Всяка обява принадлежи на един продавач. + +Обява може да има множество снимки (1:N). + +Всяка обява има статус: Активна, Изтекла, Свалена. + +Обявите могат да се промотират (Premium, Top, Featured). + +Плащания: + +Плащането се записва като отделен запис, свързан с обява. + +При успешно плащане обявата се промотира за определен период. + +Неуспешни плащания се записват със статус Failed. + +Потребители: + +Имейлът и потребителското име са уникални. + +Потребител може да има роля и като продавач, и като купувач. + +Рейтинг: + +Всеки купувач може да оцени продавача само след успешна комуникация (или приключила сделка). + +Средният рейтинг се преизчислява автоматично (чрез тригер). + +4.3. Правила за данните + +Обяви: трябва да съдържат заглавие, описание, категория, цена и поне една снимка. + +Категории: могат да бъдат йерархични (родител-дете). + +Потребители: трябва да имат уникален email и поне една активна обява (ако са продавачи). + +Плащания: съдържат дата, метод (карта, EasyPay, PayPal и др.) и сума. + +Съобщения: всяко съобщение се свързва с конкретна обява и двама потребители. + +5. Очаквани резултати + +OLTP база данни: за оперативни процеси – обяви, потребители, съобщения, плащания. + +Data Warehouse: за аналитични справки – популярни категории, приходи, брой обяви по регион. + +Power BI Dashboard: визуализации за анализ на активността и продажбите.