manifest.json Reference
The manifest.json is the application’s “passport” — Racona uses it to know how to load and display the application.
Full Example
Section titled “Full Example”{ "id": "my-app", "name": { "hu": "Saját Alkalmazás", "en": "My App" }, "description": { "hu": "Alkalmazás leírása magyarul", "en": "App description in English" }, "version": "1.0.0", "author": "Developer Name <email@example.com>", "entry": "dist/index.iife.js", "icon": "icon.svg", "iconStyle": "cover", "category": "utilities", "permissions": ["database", "notifications", "remote_functions"], "multiInstance": false, "defaultSize": { "width": 800, "height": 600 }, "minSize": { "width": 400, "height": 300 }, "maxSize": { "width": 1920, "height": 1080 }, "keywords": ["example", "demo"], "isPublic": true, "sortOrder": 100, "dependencies": { "svelte": "^5.0.0", "@lucide/svelte": "^0.561.0" }, "minWebOSVersion": "2.0.0", "locales": ["hu", "en"]}Required Fields
Section titled “Required Fields”Type: string
The unique identifier of the application. May only contain lowercase letters, numbers, and hyphens (kebab-case).
"id": "my-awesome-app"Valid format: ^[a-z0-9-]+$, minimum 3, maximum 50 characters. The database schema name is derived from the ID: app__<id> with hyphens replaced by underscores (e.g. my-app → app__my_app).
Type: { hu: string, en: string } or string
The display name of the application in the Start Menu and Application Manager.
"name": { "hu": "Saját Alkalmazás", "en": "My App" }description
Section titled “description”Type: { hu: string, en: string } or string
A short description, displayed in the Application Manager.
version
Section titled “version”Type: string — semantic version (MAJOR.MINOR.PATCH)
"version": "1.0.0"author
Section titled “author”Type: string — in Name <email> format
"author": "John Smith <john@example.com>"Type: string
The entry point of the build output. Do not change — always "dist/index.iife.js".
Type: string
The icon filename within the assets/ folder. SVG format is recommended.
"icon": "icon.svg"permissions
Section titled “permissions”Type: string[]
The list of permissions required by the application. Only include permissions that are actually needed.
"permissions": ["database", "remote_functions"]Available permissions: see Security and Permissions.
Optional Fields
Section titled “Optional Fields”iconStyle
Section titled “iconStyle”Type: "icon" | "cover"
Default: "cover"
The display mode of the icon in the Start Menu and Taskbar. "cover": the image fills the icon area (photo, logo); "icon": smaller, icon-like rendering. Any other value fails validation.
category
Section titled “category”Type: string
Default: "utilities"
The application category for grouping in the Start Menu. E.g.: "utilities", "productivity", "communication".
multiInstance
Section titled “multiInstance”Type: boolean
Default: false
If true, the user can open the application in multiple windows simultaneously.
defaultSize
Section titled “defaultSize”Type: { width: number, height: number }
Default: { width: 800, height: 600 }
The default window size in pixels.
minSize / maxSize
Section titled “minSize / maxSize”Type: { width: number, height: number }
The minimum and maximum window size. If not specified, there is no limit.
keywords
Section titled “keywords”Type: string[]
Search keywords for the Application Manager.
isPublic
Section titled “isPublic”Type: boolean
Default: true
If false, the application does not appear in the Start Menu — it can only be opened programmatically.
sortOrder
Section titled “sortOrder”Type: number
Default: 100
The sort order in the Start Menu. Smaller number = appears earlier.
dependencies
Section titled “dependencies”Type: Record<string, string>
External dependencies used by the application. Only packages on the whitelist are permitted.
"dependencies": { "svelte": "^5.0.0", "@lucide/svelte": "^0.561.0"}minWebOSVersion
Section titled “minWebOSVersion”Type: string
The minimum required Racona version. If Racona is older, the application cannot be installed.
locales
Section titled “locales”Type: string[]
ISO codes of the languages supported by the application.
"locales": ["hu", "en"]sidebarComponent
Section titled “sidebarComponent”Type: string
Only for menu.json (AppLayout mode) applications. The name of a component in src/components/ that Racona mounts at the bottom of the sidebar — for example an organization switcher. The component’s custom element tag must be <id>-<component name in lowercase> (e.g. my-app-organizationswitcher).
"sidebarComponent": "OrganizationSwitcher"At install time it is stored in the apps.sidebar_component column, and the core reads it from there at runtime.
layout
Section titled “layout”Type: { sidebarWidth?: number | "auto", maxWidthClass?: string }
Default: { "sidebarWidth": 230, "maxWidthClass": "max-w-4xl" }
AppLayout mode only. The sidebar width in pixels, and the maximum content width as a Tailwind class (e.g. "w-full" for full width).
"layout": { "sidebarWidth": 280, "maxWidthClass": "w-full" }menu.json may also provide a layout in the { "layout": {...}, "items": [...] } form; values there override the manifest.
scheduledJobs
Section titled “scheduledJobs”Type: object[]
Jobs that run on a schedule (requires the scheduler permission). The handlers live in server/jobs.ts. Fields, rules and limits: Scheduled Jobs.
"scheduledJobs": [ { "id": "daily-check", "handler": "runDailyCheck", "schedule": "0 7 * * *", "timezone": "Europe/Budapest" }]Version Management
Section titled “Version Management”The version field follows semantic versioning:
| Change | Version bump |
|---|---|
| Bug fix | 1.0.0 → 1.0.1 |
| New feature (backwards compatible) | 1.0.1 → 1.1.0 |
| Breaking change | 1.1.0 → 2.0.0 |