The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Laraue Boards listing page.
The repository contains backend for Task-management Jira-like system.
The layer that contains models and enums associated with these models
The layer with services that use other services. Required to encapsulate hard logic mostly in CRD operations.
Example: issue creation may update updated_at property, add record to history changes etc.
So the service provides the method to create issue.
Note: core services should not manage transactions, but may require them calling context.Database.EnsureTransaction
at the top of function.
Services to call from WebApi
Services to call from TelegramApi
Check how to deal with the frontend in Frontend Repository
Each host reads its own appsettings.Development.json (gitignored, not the checked-in
appsettings.json) for local overrides. A minimal one for Laraue.Apps.Boards.WebApiHost that
runs against a local Postgres with no Identity/Billing dependencies (AI summarization still
defaults to a local Ollama instance - see below):
Laraue.Apps.Boards.TelegramHost's only needs the MockExternalServices line (it has its own
Telegram:Token to set instead of Auth:Key). See the subsections below for what each setting
does and how to point at a real AI/Identity/Billing instance instead.
appsettings.json's AiSummarizer section defaults to a local Ollama
instance, since Ollama exposes an OpenAI-compatible /v1/chat/completions endpoint and the
summarizer talks to any OpenAI-compatible API. Install Ollama, then pull the model referenced
in config:
Ollama serves on http://localhost:11434 by default once installed. On prod, override
AiSummarizer:BaseUrl/AiSummarizer:Model/AiSummarizer:ApiKey to point at a real provider
(e.g. DeepSeek) instead.
Boards calls out to two other services over gRPC: Laraue.Apps.Identity (global user identity on
first login) and Laraue.Apps.Billing (AI token spend/subscription limits). Neither has to be
running locally - both hosts' appsettings.Development.json set "MockExternalServices": true,
which swaps in in-process fakes for these calls (always succeeds, generous fixed limits, no
network traffic) instead of the real gRPC clients. Set it back to false if you actually want to
exercise a locally-running Identity/Billing instance.
POST: http://localhost:5200/api/test/user
Make a request GET http://localhost:5200/api/test/user/{userId} to receive a bearer token.
Set it in frontend .env file:
Application permissions are divided into two parts: