Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
183 changes: 133 additions & 50 deletions course-work/project-template.md
Original file line number Diff line number Diff line change
@@ -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. Правила за данните
Профил с роля: купувач, продавач, администратор

* **Потребители:** Имейл адресът е уникален за всеки потребител.
* **Резервации:** Не може да съществуват две резервации за един и същи обект в един и същи час.
* **Обекти:** Всеки обект трябва да има поне една снимка и посочен адрес.
Управление на контактна информация и история на публикувани обяви

---
Обяви (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: визуализации за анализ на активността и продажбите.