Сучасний backend для платформи IPAY — інтернет-магазин + каталог фільмів і серіалів з повною підтримкою автентифікації, ролей, кошика, замовлень та інтеграцій.
Наразі 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 build -t ipay-backend .
# Запуск
docker run -p 10000:10000 ipay-backendDockerfile використовує 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
- Клонуй репозиторій:
git clone https://github.com/ThisIsEngineerGaming/IPAY_backend.git
cd IPAY_backend-
Налаштуй
appsettings.Development.jsonабо User Secrets. -
Запусти проєкт:
dotnet run --project src/IPAY.WebApi- Відкрий 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 — для продакшену рекомендується обмежити)
- Секрети винесені в конфігурацію / змінні середовища
Основні групи контролерів:
| Контролер | Опис |
|---|---|
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 та медіа-каталогу.