Skip to content

Introduction ​

CryKit builds desktop applications with Crystal and HTML/ECR templates. Keep application state and event handlers in Crystal, describe the interface with HTML, and style it with CSS. Reactive values update the interface through a native webview. Application development does not require Node.js or a separate frontend build.

Applications currently run on macOS. CryKit requires native resource loading, which the Linux and Windows backends do not yet provide.

Quick lookup ​

Looking forGo to
Generate a new appcrykit init or Getting started
CLI commands and flagsCommand reference
Application methods and configurationApplication API
Native manager APIsReference index
Window controls and eventsWindows
Dialogs, menus, trays and systemDialogs · Menus · Trays · System

How an application fits together ​

An application owns routes, windows, assets, shared models, and native capabilities. A route selects the view to mount for a local path. A view owns interface state and callbacks, and its template declares the HTML that reads that state. An optional layout supplies the surrounding document.

The initial template is constructed once. When a reactive value changes, CryKit updates the bindings and regions that read it. Menus, dialogs, system access, and trays are exposed through the application's capability managers.

Start building ​

  1. Follow Getting started to run a minimal counter.
  2. Learn Views and composition and Compiled templates to add state, forms, and reusable interface pieces.
  3. Configure Application routes and assets, then add Background jobs for work outside the UI context.
  4. Add native windows, dialogs, menus, trays, or system access as needed.
  5. Test your application, then distribute it.

The example applications show these pieces working together. The CLI reference lists init, dev, build, dist, and their options.

Framework development ​

Start with Contributing to work on CryKit itself. For a deeper understanding, read Architecture and How it works, then the Rendering and Runtime protocol contracts.

Vocabulary ​

TermMeaning
ViewA Crystal object including CryKit::View, with state and a template declaration
LayoutA Crystal object including CryKit::Layout, rendering the document shell once and yielding the mounted fragment
MountOne retained rendering of a view, with node identities and an update lifecycle
TemplateCompiled HTML with retained readers, callbacks and region factories
DocumentA loaded page and its mounted views; navigation replaces it

Built with Crystal. Documented with VitePress.