No description
  • C# 85.7%
  • HTML 12.2%
  • CSS 2%
  • Dockerfile 0.1%
Find a file
Björn Wittmann 63bd0afde6
All checks were successful
CI / build (push) Successful in 50s
Build and Push Docker Image / build-and-push (push) Successful in 1m32s
CI / test (push) Successful in 2m52s
Merge pull request 'fix(deploy): the image can never ship without the Blazor script' (#285) from fix/image-blazor-script-guard into main
Reviewed-on: #285
2026-10-18 12:27:23 +02:00
.config feat(deploy): Dockerfile, Portainer stack, and registry CI (ADR 0015) 2026-07-09 18:21:19 +02:00
.github ci: the post-merge submodule sync is not recursive — the nested reference submodule is SSH-only 2026-09-06 09:03:09 +02:00
deploy fix(deploy): the image can never ship without the Blazor script 2026-10-18 12:01:24 +02:00
docs Review feedback (Jibril, PR #276 round 2): the untick lands on the convicted row 2026-09-06 10:32:06 +02:00
external refactor(raster)!: Skia fully replaces ImageSharp 2026-10-13 11:59:48 +00:00
src fix(deploy): the image can never ship without the Blazor script 2026-10-18 12:01:24 +02:00
tests review: the tenth clone; the alpha pin keeps its word 2026-10-13 13:46:53 +00:00
.dockerignore build: vendor NovelAI.ImageGen as a git submodule (ADR 0011) 2026-07-10 23:39:13 +02:00
.gitattributes docs: initial ADR collection and project plan 2026-07-08 12:18:30 +02:00
.gitignore Character-editor components: Tabs, LabeledEntriesTable, QuicklinkNav, SaveIndicator (#23) 2026-07-10 12:47:01 +02:00
.gitmodules refactor(ui): the design system moves out — Kagaku.UI, shared by all Kagaku apps (ADR 0044) 2026-07-21 17:58:09 +02:00
AGENTS.md Review feedback (Jibril, PR #276 round 1): the map matches the territory 2026-09-06 10:32:06 +02:00
CLAUDE.md docs: agent notes — use the dev seed for Playwright verification, extend it with new features 2026-07-12 16:41:04 +02:00
Directory.Build.props feat(deploy): Dockerfile, Portainer stack, and registry CI (ADR 0015) 2026-07-09 18:21:19 +02:00
Directory.Packages.props refactor(raster)!: Skia fully replaces ImageSharp 2026-10-13 11:59:48 +00:00
Kagura.slnx refactor(ui): the design system moves out — Kagaku.UI, shared by all Kagaku apps (ADR 0044) 2026-07-21 17:58:09 +02:00
README.md Review feedback (Jibril, PR #276 round 1): the map matches the territory 2026-09-06 10:32:06 +02:00

Kagura

An AI-powered visual novel creation suite — a self-hosted content-management and creation system for multiple VN projects, built around a deeply connected knowledge base (characters, lore, locations, chapters, timelines) that grounds user–AI collaboration: from AI-assisted sprite and background generation, through scene-by-scene writing, to previewing the result — all in one Blazor app.

At a glance

  • Self-hosted, single user on a home server, behind a shared-secret access gate.
  • ASP.NET Core + Blazor Server on .NET 10, structured as a modular monolith in clean ports-and-adapters.
  • One SQLite knowledge graph (records are nodes, relationships are links) plus on-disk assets; every change is auto-applied, journaled, and reversible (undo + Wikipedia-style per-document history).
  • Image generation via NovelAI (Diffusion 5, with 4.5 for reference-driven generations); LLM collaboration via OpenRouter; a bundled booru tag database for spelling-safe tag authoring.
  • A built-in C#-native player for previewing; shipped as a Docker image.
  • An AI collaborator that reads and edits the same project data you do, through the same validated use cases — every change reversible.

Architecture in brief

  • Ports & adapters — Server / BlazorAdapter / UseCases / Domain / Infrastructure / Kernel (ADR 0003), with the design system vendored as the Kagaku.UI submodule (ADR 0044), organized as bounded-context modules over one graph DB (ADR 0017).
  • Knowledge graph — Entry nodes + generic Link edges + backlink navigation (ADR 0019).
  • Reversible by design — a persistent change journal, soft delete, and per-document revision history (ADR 0020, 0022).
  • Fluxor UI state with per-circuit event bridges + cross-session sync (ADR 0016); Material Symbols icons + CSS-variable design tokens (ADR 0023).
  • DB-native scenes (ordered steps) and a C#-native player engine (ADR 0007, 0008).

Built on / informed by

Reused as dependencies:

  • NovelAI.ImageGen — NovelAI Diffusion 4.5 / 5 client
  • OpenRouter.Net — LLM client + agent loop
  • booru_tag_db_dart — the danbooru tag database (bundled, read-only reference data)

Designed fresh, informed by (references, not dependencies): VNovelPlayer (scene format + player design), NovelAI.VisualNovelCreator (generation pipeline), novel-crafter / NovelArtist (knowledge base + agent tooling), story-forge (timeline / routes / biography).

Documentation

A good reading order:

  • Agent notes — the short map for anyone (human or agent) changing the code: where things live, the boundaries, how work is verified and landed
  • Developing Kagura — build, run with sample data, browser verification, the pre-PR checks, review rounds
  • Requirements (SRS) — actors, epics, and a checkable requirement list; detailed per-feature stories under docs/stories/, with a Status paragraph where the work has shipped
  • Project plan — goal, MVP scope, the phased roadmap, risks
  • Architecture overview — system shape and runtime flows
  • Architecture Decision Records — the planning-phase decisions (0001–0024) and the ones made during implementation (0025 onward)
  • Design system — tokens, theming, icons, component inventory; the components themselves live in Kagaku.UI

Status

In use. The plan's phases 0–4 are built — the knowledge base with journaled, reversible edits and document history; sprite, background and event-CG generation through the queue; chapters, the kinetic scene editor and the debug player; the AI assistant with its tool catalog, memory and skills — plus text-to-speech, the stage in centimeters, and character and outfit sheets. The stories under docs/stories/ say what of each feature is built, box by box and in their Status paragraphs; the requirements checklist tracks the rest. The app ships as a Docker image from the Forgejo registry (deploy/).