GoForge — Build | Test | Ship | Collaborate GoForge — Build | Test | Ship | Collaborate

Quicken

One Cadence application, every interface

Quicken is the product-facing family of Cadence interpreters. Domain state, closed messages, update logic, commands, subscriptions, components, and most semantic views remain shared. Each Quicken runtime owns only the mechanics and capabilities of its platform.

Runtime family

RuntimePlatformsModule
Quicken WebBrowsers and server renderinggoforge.dev/quicken/web
Quicken TUIInteractive terminalsgoforge.dev/quicken/tui
Quicken DesktopWindows, macOS, Linuxgoforge.dev/quicken/desktop
Quicken MobileiOS, Androidgoforge.dev/quicken/mobile
Quicken NativeShared Gio interpretationgoforge.dev/quicken/native
Quicken BuildBuild, package, install, launchgoforge.dev/quicken/build

Applications may share a semantic element tree across every runtime or provide a richer platform-specific view while retaining the same behavior.

Native semantic adapters apply platform mechanics after interpretation: desktop density, 44 dp iOS controls and safe areas, and 48 dp Android controls and safe areas. Those app-store idioms do not leak into Cadence state or update logic.

Architecture

Cadence
  Model + Msg + Update + Cmd + Subscriptions
  Components + Semantic Elements + Semantic Styles
                         |
       +---------+-------+--------+----------+
       |         |                |          |
      Web       TUI            Desktop     Mobile

Every module is independently versioned so a web service does not acquire Gio or terminal dependencies and a desktop application does not acquire an HTTP runtime.

One build surface

GoForge Task and Quicken Build expose the same commands in every Quicken application:

task doctor
task build:web
task build:desktop
task run:ios
task run:android

The application supplies only its identity, entry packages, target versions, and platform policies in quicken.yaml.

Generate a complete starter:

go run goforge.dev/quicken/build/cmd/quicken-build@v0.4.0 \
  -module example.com/myapp \
  -name MyApp \
  -appid com.example.myapp \
  init ./myapp