Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created October 6, 2026 13:55
Show Gist options
  • Select an option

  • Save sunmeat/b6dac7a6b84d66914951b09c0dfbbfdf to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/b6dac7a6b84d66914951b09c0dfbbfdf to your computer and use it in GitHub Desktop.

IPAY Backend

Сучасний backend для платформи IPAY — інтернет-магазин + каталог фільмів і серіалів з повною підтримкою автентифікації, ролей, кошика, замовлень та інтеграцій.


🌐 Live Demo

Наразі live demo недоступне.
Після деплою посилання буде додано тут.


📖 Про проєкт

IPAY — це повноцінна backend-частина інтернет-магазину з додатковим модулем каталогу фільмів і серіалів (інтеграція з OMDb API).

Платформа підтримує:

  • Реєстрацію та автентифікацію користувачів (JWT + 2FA)
  • Ролі: Customer, Seller, Admin
  • Каталог товарів з категоріями, виробниками, фільтрацією та сортуванням
  • Кошик і оформлення замовлень
  • Каталог фільмів, серіалів, епізодів та жанрів
  • Завантаження зображень через Cloudinary
  • Firebase Realtime Database
  • Готовність до запуску в Docker

Проєкт побудований за принципами Clean Architecture / Onion Architecture.


✨ Можливості

  • JWT-автентифікація + двофакторна автентифікація через email (2FA)
  • Авторизація на основі ролей (Admin / Seller / Customer)
  • Вхід через Google
  • Повний CRUD для товарів, категорій, виробників
  • Кошик і система замовлень
  • Каталог фільмів / серіалів / епізодів (OMDb)
  • Cursor-based пагінація, фільтрація та сортування
  • Завантаження зображень (Cloudinary)
  • Документація Swagger / OpenAPI
  • FluentValidation
  • AutoMapper
  • Unit-тести
  • Підтримка Docker

🎨 Дизайн

Backend спроєктований з акцентом на:

  • Чітке розділення відповідальностей (Clean Architecture)
  • Масштабованість
  • Легку підтримку та тестування
  • Безпечну автентифікацію та авторизацію

🏗️ Архітектура

Проєкт використовує Onion / Clean Architecture:

src/
├── IPAY.Domain/          # Сутності, Enums, інтерфейси, специфікації
├── IPAY.Application/     # DTOs, сервіси, валідатори, мапінги, опції
├── IPAY.Infrastructure/  # Firebase, зовнішні сервіси, збереження даних
└── IPAY.WebApi/          # Контролери, Hubs, Program.cs, конфігурація

Шари:

  • Domain — ядро (бізнес-логіка, сутності)
  • Application — use cases, DTOs, валідація, сервіси
  • Infrastructure — зовнішні залежності (Firebase, Cloudinary, OMDb тощо)
  • WebApi — точка входу, контролери, middleware

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

Технологія Призначення
.NET 10 Runtime
ASP.NET Core Web API Backend-фреймворк
JWT Bearer Автентифікація
FluentValidation Валідація DTOs
AutoMapper Мапінг DTO ↔ Entity
Swashbuckle / OpenAPI Документація API
Firebase Realtime Database
Cloudinary Зберігання зображень
OMDb API Каталог фільмів і серіалів
Docker Контейнеризація
NUnit + Moq Unit-тестування

🔐 Автентифікація

Підтримується:

  • Реєстрація / Вхід (email + пароль)
  • JWT Bearer токени
  • Двофакторна автентифікація через email (2FA)
  • Вхід через Google
  • Ролі: Admin, Seller, Customer
  • Політики: AdminOnly, SellerOnly, CustomerOnly, SellerOrAdmin

Конфігурація JWT знаходиться в appsettings.json:

"Jwt": {
  "Key": "your-secret-key",
  "Issuer": "IPAY",
  "Audience": "IPAY"
}

🎬 Каталог фільмів

Окремий модуль для роботи з фільмами та серіалами:

  • Фільми
  • Серіали
  • Епізоди
  • Жанри

Дані підтягуються через OMDb API.

Конфігурація:

"OMDb": {
  "ApiKey": "YOUR_OMDB_API_KEY",
  "BaseUrl": "https://www.omdbapi.com"
}

Рекомендується зберігати ключ у User Secrets або змінних середовища:

OMDB__APIKEY=your_key_here

🐳 Docker

Проєкт готовий до запуску в Docker.

# Збірка
docker build -t ipay-backend .

# Запуск
docker run -p 10000:10000 ipay-backend

Dockerfile використовує multi-stage build на базі .NET 10.


⚙️ Конфігурація

Основні секції appsettings.json:

Секція Опис
Firebase ProjectId, Service Account
TwoFactor Увімкнення 2FA, час життя коду
Email SMTP-налаштування для 2FA
Cloudinary CloudName, ApiKey
OMDb ApiKey, BaseUrl
Jwt Key, Issuer, Audience

Важливо: ніколи не комітьте реальні ключі та секрети.


🚀 Початок роботи

Вимоги

  • .NET 10 SDK
  • Docker (опціонально)
  • Firebase Service Account key
  • Обліковий запис Cloudinary
  • API-ключ OMDb

Кроки

  1. Клонуй репозиторій:
git clone https://github.com/ThisIsEngineerGaming/IPAY_backend.git
cd IPAY_backend
  1. Налаштуй appsettings.Development.json або User Secrets.

  2. Запусти проєкт:

dotnet run --project src/IPAY.WebApi
  1. Відкрий Swagger:
https://localhost:{port}/swagger

📦 Збірка

dotnet restore
dotnet build
dotnet publish src/IPAY.WebApi/IPAY.WebApi.csproj -c Release -o ./publish

🌐 Деплой

Рекомендовані варіанти:

  • Docker + будь-який контейнерний хостинг (Render, Railway, Fly.io, Azure Container Apps тощо)
  • Azure App Service
  • AWS Elastic Beanstalk / ECS

Порт за замовчуванням у Docker: 10000.


📸 Скріншоти

Скріншоти Swagger UI, архітектури та основних ендпоінтів можна додати пізніше.


🧪 Тестування

Unit-тести знаходяться в tests/IPAY.UnitTests.

dotnet test

Використовуються:

  • NUnit
  • Moq
  • coverlet

🔒 Безпека

  • Паролі хешуються
  • JWT з валідацією Issuer / Audience / Lifetime
  • Авторизація на основі ролей
  • Email 2FA (опціонально)
  • CORS налаштований (наразі AllowAll — для продакшену рекомендується обмежити)
  • Секрети винесені в конфігурацію / змінні середовища

📚 API

Основні групи контролерів:

Контролер Опис
AuthController Реєстрація, вхід, 2FA, Google
ProductsController Товари
CategoriesController Категорії
ManufacturersController Виробники
CartController Кошик
OrdersController Замовлення
FilmsController Фільми
SeriesController Серіали
EpisodesController Епізоди
GenresController Жанри
ImagesController Завантаження зображень
Admin/* Адмін-функціонал

Повна документація доступна через Swagger UI (/swagger).


🗺️ Дорожня карта

  • Повноцінний live demo
  • Інтеграція платежів
  • Сповіщення в реальному часі (SignalR)
  • Розширений пошук / Elasticsearch
  • Rate limiting
  • CI/CD pipeline
  • Покращення покриття тестами
  • Production-ready CORS і security headers

👨‍💻 Автори


📄 Ліцензія

Цей проєкт наразі не має визначеної ліцензії.
Усі права захищені авторами.


IPAY Backend — зроблено з ❤️ для сучасного e-commerce та медіа-каталогу.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment