Turn a desktop toolbox into your own software.
PocketArk is a reusable desktop app base framework (Tauri 2 + Vue 3 + TypeScript + Tailwind 4). Windows, tray, navigation, theming, SQLite, settings, logging, errors, HTTP and auto-update are done; you only write the tools.
Recommended path
01 · Setup
Install and run
Prepare Node / pnpm / Rust, compile once and launch the sample app locally.
02 · Make it yoursBecome your software
Rename, swap the dual-source icons, remove sample plugins.
03 · ExtendBuild your first plugin
Generate a skeleton, edit plugin.json and a view; both ends auto-register.
Capability matrix
search / filter| Capability | Frontend entry | Rust | What it does |
|---|---|---|---|
| IPC | @/core/ipc | generate_handler | Type-safe command calls; never call invoke directly |
| Event bus | @/core/events | events.rs | Typed events with a shared prefix |
| Logging | @/core/logger | log | Unified logs across both runtimes |
| Errors | @/core/errors | error.rs | AppError normalization + global toasts |
| Database | @/core/db | db.rs | Drizzle (kdb) + CRUD + scoped migrations |
| HTTP | @/core/http | http.rs | reqwest, no CORS; streaming download + proxy |
| Theme | @/core/theme | set_window_appearance | Light/dark/system + accent + font scale |
| Plugin registry | @/core/plugins | plugins/mod.rs | Frontend & backend auto-registration at build time |
| Updater | @/core/updater | updater.rs | tauri-plugin-updater + static manifest |
| Notifications | @/core/notify | tauri-plugin-notification | Permission request + settings toggle |
| Autostart | @/core/autostart | tauri-plugin-autostart | The OS is the source of truth |
| Transactions | runInTransaction | db.rs | Batch in one transaction; roll back on failure |
| Backup / restore / reset | settings → 数据 | db.rs | Auto-restart after restore or reset |
| Settings import/export | @/core/settings-transfer | files.rs | Export JSON; import applies after restart |
| Diagnostics | @/core/diagnostics | diagnostics.rs | Environment info + recent logs |
| Single instance | — | tauri-plugin-single-instance | Focus the window and forward args on relaunch |
| In-app shortcuts | @/core/shortcuts | — | registerShortcut('mod+k', fn) |
| Global shortcuts | @/core/global-shortcut | tauri-plugin-global-shortcut | Settings-driven; focus the main window |
| Search / command palette | @/core/search | — | Cmd/Ctrl+K aggregates nav and tools |
| Taskbar progress / badge | @/core/taskbar | Tauri Window API | Progress 0–100 / Dock badge |
| Background tasks | @/core/tasks | tasks.rs | Cancel tokens + task:// progress events |
| Open content | @/core/open-with | open.rs | Unified CLI / deep-link / drop dispatch |
| Multi-window | @/core/windows | capabilities/windows.json | openAppWindow(), label win-* |
| Native app menu | @/core/events (app://menu) | menu.rs | macOS menubar / Windows window menu |
| Platform detection | @/core/platform.ts | — | isMac: styling and modifier-key differences |
No capability matches. Try another keyword.
Keep reading
Architecture
Layout and boot order
How the layers fit, the startup chain, and what to reference but never edit.
PluginsThe plugin system
plugin.json, views, Rust commands, migrations and settings.
ConventionsPitfalls
Regressions to avoid and the macOS port problem.
ReleaseShip and update
Signing, latest.json, GitHub Actions and troubleshooting.