Applicate & Packaging

APPLICATE packages OQL programs, HTML, JS, CSS, and assets into native application files for any target platform. Source is a folder — any mix of OQL, HTML, JS, and assets. Output is a platform-native package.

Implementation pending. APPLICATE is designed and specified below. Runtime implementation is in progress.

Syntax

Minimal — Ocalt Default Signer
APPLICATE TYPE "android/apk" FROM "/root/appfolder/" TO "/root/new.apk" SET ?file
Full — Custom Signing and Identity
APPLICATE TYPE "android/apk" FROM "/root/appfolder/" TO "/root/new.apk"
SIGN WITH "/root/keys/my.keystore"
IDENTIFIER "com.ocalt.myapp"
TITLE "MyApp"
SET ?file

Output Targets

Type string Output
android/apkAndroid APK — direct install
android/aabAndroid App Bundle — Play Store submission
windows/exeWindows executable
windows/installerWindows installer (MSI/NSIS)
macos/appmacOS application bundle
ios/appiOS application package
linux/appLinux binary
linux/appimageLinux AppImage — portable
linux/debDebian package
linux/rpmRPM package
web/pwaProgressive Web App — generates manifest and service worker

Modifiers

Modifier Syntax Description
SIGN WITHSIGN WITH "/root/keys/my.keystore"Path to signing key, keystore, certificate, or provisioning profile. Omit to use the Ocalt-managed default signer.
IDENTIFIERIDENTIFIER "com.ocalt.myapp"Bundle identifier / package name
TITLETITLE "MyApp"Application display name

Default Signer

If SIGN WITH is omitted, Ocalt generates and manages a default signing key per namespace. The app is signed and installable — the identity is Ocalt's rather than the developer's own. Override at any time by providing a key.

Manifest File

Place ocalt.manifest.json in the source folder root to set app metadata that applies to all builds from that folder. This is a literal external configuration file the packager reads, not OcaltQL syntax.

ocalt.manifest.json
{
  "version_name": "1.0.0",
  "version_code": 1,
  "icon": "appicon.png",
  "icons": {
    "android": "appicon-android.png",
    "ios": "appicon-ios.png",
    "windows": "appicon.ico",
    "macos": "appicon.icns"
  },
  "splash_screen": "splash.png",
  "permissions": ["camera", "location"],
  "min_os": "12.0",
  "orientation": "portrait",
  "description": "My app built with OQL",
  "author": "Ocalt (Pty) Ltd"
}

icon is the default icon used for any platform without its own entry in icons. Icon defaults to /appfolder/appicon.png if ocalt.manifest.json is absent or specifies no icon at all. version_name is the human-readable version string; version_code is the integer build number required by app stores for update ordering. APPLICATE modifiers (IDENTIFIER, TITLE) override manifest values.

Examples

PWA from an HTML+JS Folder
APPLICATE TYPE "web/pwa" AT "/root/sites/mysite/" SET ?out
(* Injects manifest.json and a service worker directly into the already-live
   Site Mode folder, in place — no separate source, no separate destination.
   A PWA has no packaged artifact; it must live where it is actually served. *)
Android APK — Custom Identity
APPLICATE TYPE "android/apk" FROM "/root/myapp/"
TO "/root/releases/myapp-v1.apk"
SIGN WITH "/root/keys/release.keystore"
IDENTIFIER "com.myco.myapp"
TITLE "My App"
SET ?file
Linux Debian Package
APPLICATE TYPE "linux/deb" FROM "/root/myapp/" TO "/root/myapp.deb" SET ?pkg