Проект состоит из нескольких модулей:
- PhotoBank.Api – ASP.NET Core веб‑API.
- frontend – monorepo на Node.js с приложением на TypeScript/React, Redux, Tailwind CSS, shadcn/ui и тестами на Vitest (frontend, telegram‑bot и общие библиотеки).
- PhotoBank.MAUI.Blazor – кросс‑платформенное приложение на .NET MAUI.
- Photobank.ServerBlazorApp – серверное Blazor‑приложение.
- PhotoBank.Console – консольные утилиты.
- PhotoBank.DbContext, PhotoBank.Repositories, PhotoBank.Services, PhotoBank.ViewModel.Dto – общие слои приложения.
- PhotoBank.UnitTests, PhotoBank.IntegrationTests – проекты с тестами.
- PhotoBank.Backend.sln – решение со всеми бэкенд‑проектами без MAUI.
# восстановить зависимости и CLI-инструменты
dotnet restore
dotnet tool restore --project PhotoBank.Api
# запустить API
dotnet run --project PhotoBank.ApiДля работы API нужны настройки подключения к БД и параметры JWT. Их можно задать в appsettings.json или через переменные окружения:
ASPNETCORE_ENVIRONMENT=Development
ConnectionStrings__DefaultConnection="Server=localhost;Database=Photobank;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=False;"
Jwt__Key="SuperSecretKey1234567890"
Jwt__Issuer="PhotoBank.Api"
Jwt__Audience="PhotoBank.Api"Для генерации файла swagger.json выполните после сборки:
dotnet swagger tofile --output swagger.json PhotoBank.Api/bin/Debug/net9.0/PhotoBank.Api.dll v1Фронтенд написан на TypeScript и React, использует Redux для управления состоянием, Tailwind CSS и shadcn/ui для оформления, а тесты выполняются на Vitest.
cd frontend
pnpm install
pnpm devПеред запуском задайте VITE_API_BASE_URL (или в .env файл) – адрес API,
например:
VITE_API_BASE_URL=http://localhost:5066При необходимости можно задать версию Azure OpenAI через переменную
VITE_AZURE_OPENAI_API_VERSION (по умолчанию 2024-02-15-preview).
cd frontend
pnpm install
pnpm botБоту нужны переменные окружения (можно оформить в .env):
BOT_TOKEN=ваш_токен
API_EMAIL=admin@example.com
API_PASSWORD=secret
API_BASE_URL=http://localhost:5066
VITE_AZURE_OPENAI_ENDPOINT=https://example.openai.azure.com
VITE_AZURE_OPENAI_KEY=your_key
VITE_AZURE_OPENAI_DEPLOYMENT=gpt-4По умолчанию любое текстовое сообщение без команды обрабатывается как запрос /ai, поэтому достаточно просто отправить текст с описанием запроса.
dotnet build PhotoBank.MAUI.Blazor/PhotoBank.MAUI.Blazor.csproj
# для запуска на десктопе
dotnet run --project PhotoBank.MAUI.Blazorcd backend
dotnet run --project PhotoBank.Console -- --storage 1Опции:
--storage,-s– идентификатор хранилища;--no-register– не регистрировать людей (по умолчанию регистрация включена).
Для .NET проектов:
dotnet test PhotoBank.sln
# либо
dotnet test PhotoBank.Backend.slnДля пакетов Node.js (Vitest):
cd frontend
pnpm -r testcp .env.example .env
docker compose up --build
Проект распространяется под лицензией MIT. Текст лицензии находится в файле LICENSE.
The project is composed of several modules:
- PhotoBank.Api – ASP.NET Core web API.
- frontend – Node.js monorepo with a TypeScript/React app using Redux, Tailwind CSS and shadcn/ui, tested with Vitest (frontend, Telegram bot and shared libraries).
- PhotoBank.MAUI.Blazor – cross-platform .NET MAUI app.
- Photobank.ServerBlazorApp – server-side Blazor application.
- PhotoBank.Console – command-line utilities.
- PhotoBank.DbContext, PhotoBank.Repositories, PhotoBank.Services, PhotoBank.ViewModel.Dto – common layers.
- PhotoBank.UnitTests, PhotoBank.IntegrationTests – test projects.
- PhotoBank.Backend.sln – solution containing all backend projects without the MAUI client.
dotnet restore
dotnet tool restore --project PhotoBank.Api
dotnet run --project PhotoBank.ApiThe API requires database connection settings and JWT parameters configured either in appsettings.json or via environment variables:
ASPNETCORE_ENVIRONMENT=Development
ConnectionStrings__DefaultConnection="Server=localhost;Database=Photobank;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=False;"
Jwt__Key="SuperSecretKey1234567890"
Jwt__Issuer="PhotoBank.Api"
Jwt__Audience="PhotoBank.Api"To generate the swagger.json file after building, run:
dotnet swagger tofile --output swagger.json PhotoBank.Api/bin/Debug/net9.0/PhotoBank.Api.dll v1The frontend is built with TypeScript and React, uses Redux for state management, Tailwind CSS and shadcn/ui for styling, and Vitest for testing.
cd frontend
pnpm install
pnpm devBefore running set VITE_API_BASE_URL (or put it into .env) – the API address, for example:
VITE_API_BASE_URL=http://localhost:5066If needed, you can specify the Azure OpenAI version via
VITE_AZURE_OPENAI_API_VERSION (default is 2024-02-15-preview).
cd frontend
pnpm install
pnpm botThe bot requires environment variables (can be placed in .env):
BOT_TOKEN=your_token
API_EMAIL=admin@example.com
API_PASSWORD=secret
API_BASE_URL=http://localhost:5066
VITE_AZURE_OPENAI_ENDPOINT=https://example.openai.azure.com
VITE_AZURE_OPENAI_KEY=your_key
VITE_AZURE_OPENAI_DEPLOYMENT=gpt-4Any plain text message sent to the bot is interpreted as an /ai request, so you
can simply type a query without the command prefix.
dotnet build PhotoBank.MAUI.Blazor/PhotoBank.MAUI.Blazor.csproj
dotnet run --project PhotoBank.MAUI.Blazorcd backend
dotnet run --project PhotoBank.Console -- --storage 1Options:
--storage,-s– storage ID;--no-register– skip person registration (enabled by default).
For .NET projects:
dotnet test PhotoBank.sln
# or
dotnet test PhotoBank.Backend.slnFor Node.js packages (Vitest):
cd frontend
pnpm -r testcp .env.example .env
docker compose up --build
The project is distributed under the MIT license. See LICENSE.