Thanks to visit codestin.com
Credit goes to github.com

Skip to content

shillxzy/MusicOrchestraPlatform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎶 Music Orchestra Platform

Мікросервісна система для управління оркестровим каталогом, замовленнями та відгуками.


📘 Загальний опис

Music Orchestra Platform — це розподілена мікросервісна система, яка моделює роботу оркестрової організації:
управління інструментами, виконавцями, композиціями, замовленнями та користувацькими відгуками.

Система побудована на базі трьох незалежних сервісів:

  • 🎼 CatalogService — каталог оркестрових даних
  • 💰 OrderService — замовлення та клієнти
  • ReviewService — користувацькі рецензії й рейтинги

🧩 Архітектура

React (Frontend)
      │
      ▼
 API Gateway (Reverse Proxy)
      │
 ┌───────────────┬────────────────┬────────────────┐
 │               │                │                │
 ▼               ▼                ▼
CatalogService   OrderService     ReviewService
(PostgreSQL)     (PostgreSQL)     (MongoDB)
  • Взаємодія між сервісами — через HTTP REST API
  • Можлива інтеграція через RabbitMQ
  • API Gateway — центральна точка входу
  • Асинхронна політика узгодженості (event-driven)

⚙️ Мікросервіси

1️⃣ CatalogService

Мета: зберігати дані про інструменти, виконавців та композиції.
База: PostgreSQL
Технології: .NET 8 + EF Core (Fluent API, Seed Data, Migrations)

Основні сутності:

Сутність Поля
Instrument ID, Name, Type, Price
Performer ID, Name, InstrumentID
Composition ID, Title, Duration, Genre
ConcertProgram ID, ConcertID, CompositionID
InstrumentImage ID, InstrumentID, Url

Зв’язки:

  • 1:N → Instrument → Performer
  • M:N → ConcertProgram ↔ Composition
  • 1:1 → Instrument ↔ InstrumentImage

Особливості:

  • Перевірка Price > 0
  • Індекси на Name, Type
  • Seed дані при першому запуску

2️⃣ OrderService

Мета: управління клієнтами, замовленнями та складом замовлень.
База: PostgreSQL
Технології: .NET 8 + ADO.NET Dapper

Основні сутності:

Сутність Поля
Customer ID, Name, Email
Order ID, CustomerID, OrderDate, TotalAmount
OrderItem ID, OrderID, ProductId, Quantity, UnitPrice

Зв’язки:

  • 1:N → Customer → Order
  • 1:N → Order → OrderItem

Особливості:

  • Автоматичне обчислення суми замовлення
  • Унікальний Email для клієнтів
  • Асинхронні CRUD-репозиторії

3️⃣ ReviewService

Мета: управління користувацькими відгуками та рейтингами для інструментів, виконавців і композицій.
База: MongoDB
Технології: .NET 8 + MongoDB.Driver

Приклад документу:

{
  "Id": "uuid",
  "EntityType": "Instrument | Performer | Composition",
  "EntityId": "string",
  "Author": "John Doe",
  "Rating": 5,
  "Comment": "Incredible performance!",
  "CreatedAt": "2025-11-01T12:00:00Z"
}

Особливості:

  • Гнучка документна структура (NoSQL)
  • Фільтрація та сортування за рейтингом
  • Зв’язок через EntityType + EntityId

🧠 Предметна область

  • Catalog — реальні ресурси: інструменти, виконавці, композиції
  • Order — взаємодія користувачів (купівлі, бронювання)
  • Review — соціальний аспект (відгуки, рейтинги, популярність)

🪢 Bounded Contexts

Контекст Мікросервіс Відповідальність
Catalog Context CatalogService Управління сутностями оркестру
Order Context OrderService Замовлення, транзакції, клієнти
Review Context ReviewService Відгуки, рейтинги, рекомендації

🔁 Політика узгодженості

  • Кожен мікросервіс має власну БД (повна незалежність)
  • Дозволено дублювання ключових ID (EntityId, InstrumentId тощо)
  • Узгодженість — eventual consistency
  • Обмін подіями — через API або чергу повідомлень
  • Немає централізованої транзакції між БД

📊 Бази даних

CatalogService / OrderService (PostgreSQL)

  • Схеми створюються автоматично через EF Core Migrations
  • Генерація:
dotnet ef migrations add InitialCreate
dotnet ef database update

ReviewService (MongoDB)

  • Колекції створюються автоматично при вставці документів

📦 Запуск

# Клонування репозиторію
git clone https://github.com/shillxzy/MusicOrchestraPlatform.git

# Налаштування баз у appsettings.json
# PostgreSQL / MongoDB

# Збірка та запуск сервісів
dotnet build
dotnet run --project CatalogService
dotnet run --project OrderService
dotnet run --project ReviewService

🧱 Технологічний стек

  • .NET 8 / C#
  • Entity Framework Core
  • PostgreSQL
  • MongoDB
  • REST API
  • Clean Architecture + Repository Pattern

✍️ Автор

shillxzy

About

.NET Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages