⚠️ Розділи з позначкоюTODO/<...>потрібно уточнити під ваш проєкт (назва БД, змінні середовища, посилання тощо).
- Опис проєкту
- Проблема та мета
- Features
- Architecture overview
- Prerequisites
- Installation
- Configuration
- Environment variables
- Database setup
- Migrations
- Seed
- Запуск backend
- Запуск frontend
- Запуск тестів
- Docker
- Deployed application
- Документація (DocFX)
- API (Scalar)
- Додаткові кроки
IPAY Backend — серверна частина застосунку, реалізована на .NET за принципами Clean Architecture. Backend надає REST API для клієнтського застосунку (frontend), відповідає за бізнес-логіку, роботу з базою даних, автентифікацію/авторизацію та валідацію даних.
TODO: 2–3 речення про те, що саме робить ваш застосунок (наприклад: платежі, тестування, облік тощо).
Проблема. TODO: опишіть, яку проблему вирішує проєкт (наприклад: ручні процеси, відсутність єдиної системи, повільна обробка даних).
Мета. TODO: опишіть, чого досягає проєкт (наприклад: автоматизація процесу, надійний та безпечний API, зручний інтерфейс для користувачів).
TODO: залишіть лише реалізовані можливості.
- Реєстрація та автентифікація користувачів (JWT)
- Рольова авторизація
- CRUD-операції для основних сутностей домену
- Валідація вхідних даних
- Єдина обробка помилок
- Документація API (Scalar / OpenAPI)
- Технічна документація (DocFX)
- Unit/інтеграційні тести
- Контейнеризація (Docker)
Проєкт розділений на шари (Clean Architecture). Залежності спрямовані до центру — Domain не залежить ні від чого.
src/
├── ExamTest.Domain # Сутності, enum-и, доменна логіка, інтерфейси
├── ExamTest.Application # Use cases, DTO, сервіси, валідація, інтерфейси репозиторіїв
├── ExamTest.Infastructure # Доступ до БД (EF Core), репозиторії, зовнішні сервіси
├── ExamTest.WebApi # Точка входу: контролери/endpoint-и, DI, middleware, конфігурація
└── ExamTest.Tests # Тести
IPAY_BACKEND.slnx # Solution
WebApi ──► Application ──► Domain
│ ▲
└──► Infastructure ──┘
| Шар | Відповідальність |
|---|---|
| Domain | Ядро: сутності та правила предметної області |
| Application | Бізнес-сценарії, DTO, контракти |
| Infastructure | Реалізація контрактів: БД, ідентифікація, інтеграції |
| WebApi | HTTP-шар, налаштування DI, Swagger/Scalar |
| Tests | Автоматизовані тести |
Стек: .NET, ASP.NET Core Web API, Entity Framework Core, TODO: СУБД (SQL Server / PostgreSQL), Scalar, DocFX, Docker.
- .NET SDK (версія, вказана у
*.csproj,TODO:напр. 9.0 або 10.0) - Visual Studio 2022/2026 або VS Code / Rider (
.slnxпотребує свіжих версій) TODO:СУБД (SQL Server / PostgreSQL) або Docker- Git
- Docker & Docker Compose (опційно)
- Node.js (для frontend, якщо потрібно)
- Інструмент EF Core:
dotnet tool install --global dotnet-ef
- DocFX (опційно):
dotnet tool install --global docfx
git clone https://github.com/ThisIsEngineerGaming/IPAY_backend.git
cd IPAY_backend
dotnet restore IPAY_BACKEND.slnx
dotnet build IPAY_BACKEND.slnxНалаштування знаходяться в src/ExamTest.WebApi/appsettings.json та appsettings.Development.json.
Приклад (TODO: підставте свої ключі):
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=ipay;User Id=sa;Password=<password>;TrustServerCertificate=True"
},
"Jwt": {
"Key": "<секретний-ключ-мінімум-32-символи>",
"Issuer": "IPAY",
"Audience": "IPAY.Client",
"ExpiresInMinutes": 60
}
}Для локальної розробки секрети краще зберігати через User Secrets:
cd src/ExamTest.WebApi
dotnet user-secrets init
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "<connection-string>"
dotnet user-secrets set "Jwt:Key" "<secret>"TODO: перевірте назви відповідно до вашого коду. У .NET вкладені ключі задаються через __.
| Змінна | Опис | Приклад |
|---|---|---|
ASPNETCORE_ENVIRONMENT |
Середовище виконання | Development |
ASPNETCORE_URLS |
Адреси, які слухає сервер | http://+:8080 |
ConnectionStrings__DefaultConnection |
Рядок підключення до БД | Server=db;Database=ipay;... |
Jwt__Key |
Секретний ключ JWT | <secret> |
Jwt__Issuer |
Видавець токена | IPAY |
Jwt__Audience |
Аудиторія токена | IPAY.Client |
Jwt__ExpiresInMinutes |
Час життя токена | 60 |
Рекомендується створити файл .env (не коммітити його в git):
ASPNETCORE_ENVIRONMENT=Development
ConnectionStrings__DefaultConnection=Server=localhost;Database=ipay;...
Jwt__Key=change-me- Запустіть СУБД (локально або в Docker).
- Вкажіть рядок підключення в конфігурації (див. вище).
- Застосуйте міграції (див. нижче) — база буде створена автоматично.
Приклад запуску БД у Docker (SQL Server, TODO: змініть на вашу СУБД):
docker run -d --name ipay-db \
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Your_password123" \
-p 1433:1433 mcr.microsoft.com/mssql/server:2022-latestМіграції створюються в проєкті Infastructure, а стартовим є WebApi.
Створити нову міграцію:
dotnet ef migrations add <MigrationName> \
--project src/ExamTest.Infastructure \
--startup-project src/ExamTest.WebApiЗастосувати міграції до БД:
dotnet ef database update \
--project src/ExamTest.Infastructure \
--startup-project src/ExamTest.WebApiВідкотити останню міграцію:
dotnet ef migrations remove \
--project src/ExamTest.Infastructure \
--startup-project src/ExamTest.WebApiTODO: уточніть, як реалізовано початкові дані.
- Якщо seed виконується автоматично при старті (наприклад, через
DbInitializerабоHasData) — початкові дані (ролі, адміністратор, довідники) додадуться при першому запуску API. - Дані адміністратора за замовчуванням:
TODO: email / пароль(змініть у production!).
Через CLI:
dotnet run --project src/ExamTest.WebApiЗ hot reload:
dotnet watch --project src/ExamTest.WebApiАбо відкрийте IPAY_BACKEND.slnx у Visual Studio, оберіть стартовий проєкт ExamTest.WebApi і натисніть F5.
API буде доступне за адресою, вказаною у Properties/launchSettings.json (TODO: напр. https://localhost:7000).
Цей репозиторій містить лише backend. Frontend знаходиться в окремому репозиторії:
TODO: посилання на репозиторій frontend
Типові кроки:
git clone <frontend-repo-url>
cd <frontend-folder>
npm install
# вкажіть URL backend у .env фронтенду, напр. VITE_API_URL=https://localhost:7000
npm run devdotnet test IPAY_BACKEND.slnxЛише проєкт тестів, із детальним виводом:
dotnet test src/ExamTest.Tests --logger "console;verbosity=detailed"Покриття коду (за наявності coverlet.collector):
dotnet test src/ExamTest.Tests --collect:"XPlat Code Coverage"TODO: перевірте наявність Dockerfile / docker-compose.yml у репозиторії. Нижче — приклад-шаблон.
Dockerfile (у корені репозиторію):
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /app
COPY . .
RUN dotnet restore src/ExamTest.WebApi/ExamTest.WebApi.csproj
RUN dotnet publish src/ExamTest.WebApi/ExamTest.WebApi.csproj -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
COPY --from=build /out .
EXPOSE 8080
ENV ASPNETCORE_URLS=http://+:8080
ENTRYPOINT ["dotnet", "ExamTest.WebApi.dll"]docker-compose.yml:
services:
db:
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: "Your_password123"
ports:
- "1433:1433"
api:
build: .
depends_on:
- db
environment:
ASPNETCORE_ENVIRONMENT: Production
ConnectionStrings__DefaultConnection: "Server=db;Database=ipay;User Id=sa;Password=Your_password123;TrustServerCertificate=True"
Jwt__Key: "change-me-to-a-long-secret-key-32chars+"
ports:
- "8080:8080"Запуск:
docker compose up --build -d
docker compose logs -f api
docker compose down- 🌐 Frontend:
TODO: https://... - 🔌 Backend API:
TODO: https://...
Технічна документація згенерована за допомогою DocFX.
- 📚 Онлайн:
TODO: https://...
Локальна збірка:
docfx docfx.json --serveПісля запуску документація доступна за адресою http://localhost:8080.
Інтерактивна документація API побудована на Scalar (на основі OpenAPI).
- 🔗 Онлайн:
TODO: https://.../scalar/v1 - 🖥️ Локально (у Development):
https://localhost:<port>/scalar/v1 - 📄 OpenAPI JSON:
https://localhost:<port>/openapi/v1.json
Повна послідовність для відтворення проєкту з нуля:
- Встановити .NET SDK, Git,
dotnet-ef(і за потреби Docker). - Клонувати репозиторій і виконати
dotnet restore. - Підняти СУБД та налаштувати
ConnectionStrings. - Налаштувати JWT та інші секрети (User Secrets або змінні середовища).
- Застосувати міграції:
dotnet ef database update .... - Переконатися, що seed-дані створені.
- Запустити backend:
dotnet run --project src/ExamTest.WebApi. - Відкрити Scalar та перевірити роботу API.
- Запустити frontend та вказати йому URL backend.
- Запустити тести:
dotnet test.
Важливо для production:
- Ніколи не коммітьте секрети (
appsettings.*.jsonз паролями,.env). - Додайте
.gitignore(зокрема.vs/,bin/,obj/) — у репозиторії зараз є папка.vs. - Налаштуйте CORS для домену вашого frontend.
- Використовуйте HTTPS та змініть паролі/ключі за замовчуванням.
TODO: вкажіть ліцензію (наприклад, MIT).