A multi-user LLM chat platform with bot personality evolution, Telegram integration, and multiple provider support.
| Layer | Technology |
|---|---|
| Backend | .NET 10 / ASP.NET Core 10 |
| LLM abstraction | Semantic Kernel 1.75.0 |
| ORM | Entity Framework Core 10 + Npgsql + pgvector |
| Database | PostgreSQL 16 with pgvector |
| Frontend | React 19 + TypeScript + Vite + MUI |
| Auth | JWT Bearer |
| Telegram | Telegram.Bot 22.x |
| Deployment | Docker Compose |
cp .env.example .env
# Edit .env with your secrets (especially JWT_SECRET and INITIAL_PASSWORD)
docker compose up --build
The app will be available at http://localhost:8080.
Default admin credentials: admin / changeme (override via INITIAL_USER / INITIAL_PASSWORD in .env).
docker compose up db)docker compose up db -d
cd src/AChat.Api
dotnet run
The API listens on http://localhost:5000.
cd frontend
npm install
npm run dev
The frontend dev server starts at http://localhost:5173 and proxies /api to http://localhost:5000.
| Variable | Default | Description |
|---|---|---|
POSTGRES_PASSWORD | achat | PostgreSQL password |
JWT_SECRET | CHANGE_ME_... | JWT signing secret (≥32 chars) |
INITIAL_USER | admin | Initial admin username |
INITIAL_PASSWORD | changeme | Initial admin password |
All app settings can be overridden via environment variables using __ as the separator, e.g.:
Jwt__ExpiryHours=48BotEvolution__IntervalHours=12Telegram__DefaultUnknownUserReply=Access deniedAChat.sln
├── src/
│ ├── AChat.Api/ # ASP.NET Core host, controllers, middleware, Program.cs
│ ├── AChat.Core/ # Entities, DTOs, interfaces, options enums (no dependencies)
│ └── AChat.Infrastructure/# EF DbContext, services, SK factory, Telegram, background jobs
└── frontend/ # React + Vite frontend (builds to src/AChat.Api/wwwroot)
dotnet ef migrations add <MigrationName> \
--project src/AChat.Infrastructure \
--startup-project src/AChat.Api
Migrations are applied automatically on application startup.
Bots evolve their personality automatically via a background job that:
Owners can also trigger evolution manually via Settings → Trigger Evolution Now, optionally providing a direction hint (e.g. "be more concise").
Content type
Image
Digest
sha256:9dac3ed3f…
Size
97.7 MB
Last updated
about 1 month ago
docker pull jncchds/achat