Open, git-friendly design file format (built on JSON Canvas 1.0) plus a minimal viewer built with Kotlin Multiplatform + Compose Multiplatform. The viewer compiles to Kotlin/Wasm and runs in the browser. It's built with the Kotlin Toolchain (formerly Amper).
project.yaml: Kotlin Toolchain project config (module list)common.module-template.yaml/compose.module-template.yaml: shared Kotlin and Compose settingslibs.versions.toml: project library catalog ($libs.*dependencies)kotlin/kotlin.bat: Kotlin Toolchain wrapper scripts (pin the toolchain version)shared/: KMP library with osign models,parseOsign, and basic validation (src/code,test/tests)shared-ui/: Compose Multiplatform UI (file picking, canvas rendering with pan/zoom, inspector)web-app/: Kotlin/Wasm entry point (src/main.kt) and itsresources/index.htmlbuild-web.sh: builds the web app and stages it inweb-app-dist/as a static siteicons/icon-source.png: source artwork for the app icon (web-app/resources/favicon.png)docs/: spec docs (osign-overview.md,osign-file-format.md)schema/osign.schema.json: minimal JSON Schema for basic shape validationexamples/hello-world.osign.json: desktop marketing hero sampleexamples/mobile-app.osign.json: mobile app mock paired with assets underexamples/resources/mobile/
- A JDK isn't needed up front:
./kotlinprovisions its own. justfor the recipes below.
just build # compile every module
just test # run unit tests
just web # serve the viewer at http://127.0.0.1:8080Run just to list every recipe.
Click Open files and select an .osign.json document, or drag and drop it onto the window. The browser can't read files from disk by path, so select any local images the document references (for example examples/mobile-app.osign.json together with examples/resources/mobile/*.png) in the same dialog (or drop). Relative asset paths are matched by file name. Assets given as data: URIs or http(s) URLs load without extra files.
.github/workflows/pages.yml tests, builds the release web app, and deploys web-app-dist/ to GitHub Pages on every push to main. To turn it on, set Settings → Pages → Source to GitHub Actions.
The Kotlin Toolchain can't run Kotlin/Wasm tests yet (KTC-5576), so shared also targets the JVM, and that's where its unit tests run.
./kotlin updatedocs/osign-overview.mddocs/osign-file-format.md- Schema:
schema/osign.schema.json - Sample:
examples/hello-world.osign.json
osign (the specification, schema, and code) is released under the MIT License.
osign builds on JSON Canvas, an open format created by Obsidian and also published under the MIT License.