Build compact, high-performance, and secure desktop applications using a web frontend — powered by modern C++20.
Shine is inspired by Tauri: you build your UI with modern web tooling (Vite/React/etc.), while the native side stays lightweight, secure, and focused on OS integration.
core/: the Shine runtime (window + WebView + IPC router)components/: optional native components (example: filesystem)create-shine-app/: project scaffolding tool (npx create-shine-app@latest)
Create a new app:
npx create-shine-app@latestThen:
cd my-shine-app
npm installRun the frontend dev server:
npm run devBuild & run the native target from your IDE (CLion / Visual Studio) or via CMake.
In Debug, Shine navigates to http://localhost:5173.
Build everything (frontend + native):
npm run buildIn Release, Shine loads your UI from http://shine.app/* and serves index.html, JS, CSS, images directly from bytes embedded into the native binary (no runtime unpacking to disk).
flowchart TD
vite[ViteDevServer] -->|dev| webview[WebView2]
embed[EmbedDistToCppHeader] --> native[NativeBinary]
native -->|prod| webview
webview -->|IPC JSON| router[IpcRouter]
router --> components[NativeComponents]
- Dev: web assets are served by Vite.
- Prod: web assets are compiled into a generated C++ header and served from memory by the WebView resource interceptor.
- IPC: the frontend calls
window.chrome.webview.postMessage(...); the native side routes commands via an allowlist (shine.conf.json).
The generator creates:
frontend/(Vite + React)shine/(vendored Shine sources)- a native CMake target linked against
shine_coreandshine_components - npm scripts for build orchestration
This project is under active development. APIs and project layout may change.