Getting Started
#Requirements
- macOS 14 or later
- Bun 1.4 or later
- TypeScript 7
- Xcode Command Line Tools (
xcode-select --install)
macOS is the supported target today.
#Create a project
bunx @quickgui/cli init my-app --language typescript
cd my-app
quickgui devinit writes the project and installs dependencies. Omit --language to choose Go, TypeScript, or Rust interactively.
#Your first window
import { app, Window } from "@quickgui/native";
import { Button, Text, View, createRenderer } from "@quickgui/solid";
import { createSignal } from "solid-js";
function Counter() {
const [count, setCount] = createSignal(0);
return (
<View style={{ padding: 24, display: "flex", flexDirection: "column", gap: 12 }}>
<Text>Count: {count()}</Text>
<Button onClick={() => setCount(count() + 1)}>Increment</Button>
</View>
);
}
function openWindow() {
new Window({ title: "Counter", width: 720, height: 480, renderer: createRenderer(Counter) });
}
app.on("reopen", ({ hasVisibleWindows }) => {
if (!hasVisibleWindows) openWindow();
});
await app.whenReady();
openWindow();reopen opens a window again when the user clicks the Dock icon and none are visible.
#Run and build
quickgui check
quickgui test
quickgui fmt
quickgui dev
quickgui builddev rebuilds as you edit. build writes a packaged app under dist/.
#Next steps
- Write components.
- Keep them in sync with signals.
- Add styles and layout.
