Skip to content

makhin/PhotoBank

Repository files navigation

PhotoBank

Проект состоит из нескольких модулей:

  • 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.

Сборка и запуск

Backend

# восстановить зависимости и 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, поэтому достаточно просто отправить текст с описанием запроса.

MAUI/Blazor клиент

dotnet build PhotoBank.MAUI.Blazor/PhotoBank.MAUI.Blazor.csproj
# для запуска на десктопе
dotnet run --project PhotoBank.MAUI.Blazor

Консольные утилиты

cd 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 test

Docker Compose

cp .env.example .env
docker compose up --build

Лицензия

Проект распространяется под лицензией MIT. Текст лицензии находится в файле LICENSE.


PhotoBank (English)

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.

Build and run

Backend

dotnet restore
dotnet tool restore --project PhotoBank.Api
dotnet run --project PhotoBank.Api

The 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 v1

Frontend

The 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 dev

Before running set VITE_API_BASE_URL (or put it into .env) – the API address, for example:

VITE_API_BASE_URL=http://localhost:5066

If needed, you can specify the Azure OpenAI version via VITE_AZURE_OPENAI_API_VERSION (default is 2024-02-15-preview).

Telegram bot

cd frontend
pnpm install
pnpm bot

The 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-4

Any plain text message sent to the bot is interpreted as an /ai request, so you can simply type a query without the command prefix.

MAUI/Blazor client

dotnet build PhotoBank.MAUI.Blazor/PhotoBank.MAUI.Blazor.csproj
dotnet run --project PhotoBank.MAUI.Blazor

Console

cd backend
dotnet run --project PhotoBank.Console -- --storage 1

Options:

  • --storage, -s – storage ID;
  • --no-register – skip person registration (enabled by default).

Tests

For .NET projects:

dotnet test PhotoBank.sln
# or
dotnet test PhotoBank.Backend.sln

For Node.js packages (Vitest):

cd frontend
pnpm -r test

Docker Compose

cp .env.example .env
docker compose up --build

License

The project is distributed under the MIT license. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •