Skip to content

Repository files navigation

Biwa

Biwa is a TypeScript visual novel framework built around Ink, React and Bun. Its name is inspired by the Japanese biwa: an instrument traditionally tied to storytelling, performance and memory.

The project includes:

  • framework/: engine, React components, save/load, audio, minigames and docs.
  • manager/: CLI commands for new, dev, doctor, build, preview, assets and list.
  • games/mi-novela/: richer demo game.
  • games/smoke-fixture/: tiny fixture used by CI.

Quick Start

bun install
bun manager/cli.ts new my-novel "My Novel"
bun manager/cli.ts doctor my-novel
bun manager/cli.ts dev my-novel

Open the dev server URL printed by the CLI.

Core Commands

bun run check                  # tests + typecheck
bun run coverage               # coverage report for framework + manager
bun run e2e                    # browser smoke against the built smoke fixture
bun manager/cli.ts doctor mi-novela
bun manager/cli.ts doctor mi-novela --json
bun manager/cli.ts assets character-atlas mi-novela kai
bun manager/cli.ts build mi-novela
bun manager/cli.ts build mi-novela --mode static
bun manager/cli.ts preview mi-novela --build
bun run verify                 # CI-style check against smoke-fixture

Distribution

Production builds are static ESM packages:

bun manager/cli.ts build mi-novela
bun manager/cli.ts preview mi-novela

Output is written to dist/mi-novela/ with a post-build smoke check and manifest.json size report.

See framework/docs/distribution.md.

Creator Docs

Feature Matrix

Area Status
Ink story runtime Stable baseline
Unified tag parser Implemented
Data pipeline Recursive indexes, doctor validation, build conversion
Save/load Story, variables, visual scene, characters, audio, locale, thumbnails, playtime and delete
Player reading features Backlog, auto/skip, settings, preferences and configurable input map
Audio Extracted runtime manager, persisted master/bgm/ambience/sfx/voice volumes
UI customization Typed app and stage component overrides
Distribution Static ESM build with import map and smoke checks
Portal/embedded packaging Planned
Browser E2E smoke Implemented

Quality Gate

Before opening a PR, run:

bun run verify

This executes tests, typecheck, doctor, a production build of the lightweight fixture and Playwright browser smoke.

About

Biwa is a TypeScript visual novel framework built around Ink, React and Bun. Its name is inspired by the Japanese biwa: an instrument traditionally tied to storytelling, performance and memory.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages