Skip to content

Project Structure

A TypeScript project keeps application code in app.tsx and development commands in package.json.

#Generated files

my-app/
├── resources/
│   └── icon.png
├── app.tsx
├── quickgui.config.ts
├── tsconfig.json
├── package.json
└── README.md

Keep reusable components in ordinary TypeScript modules. Build output lives in .quickgui; packaged apps live in dist.

#Application entry

Import app and Window from @quickgui/native. Import components and createRenderer from @quickgui/solid. Await app.whenReady() before opening windows. Each window has its own renderer, disposed when the window closes.

#Configuration

import { defineConfig } from "@quickgui/cli";

export default defineConfig({
  language: "typescript",
  name: "My App",
  identifier: "com.example.my-app",
  entry: "app.tsx",
  fonts: ["assets/MyFont.ttf"],
});

The application icon comes from resources/icon.png. Extra files can be listed in resources. See App Icon and Bundled Resources. TOML supports the same keys. In tsconfig.json, set jsx to "preserve" and jsxImportSource to "@quickgui/solid".

#Packages

Applications depend on @quickgui/native, @quickgui/solid, and solid-js. @quickgui/cli is a development dependency. Terminal and updater are optional packages — see Auto Updater and Authoring Extensions.

#Local development

quickgui check
quickgui test
quickgui fmt
quickgui dev
quickgui build

check typechecks the project. test runs tests with the same compiler as builds.