# dotuix spec (lite docs profile)

Specification profile: lite
Audience: public onboarding
Format target: .uix 1.0

This document defines the lite documentation profile for dotuix.

Important:
- lite is a docs profile, not a different .uix format version
- files created with lite still follow .uix 1.0
- lite content must remain public-safe and onboarding-focused

## 1. Scope

Lite is optimized for quick delivery of polished, offline, single-file interactive pages.

Primary lite use cases:
- CV and profile pages
- portfolio and gallery pages
- invitation pages
- menu pages
- simple business showcase pages

Lite profile goal:
- help creators build production-ready packages with low complexity
- keep docs understandable without forcing architecture-heavy topics

## 2. Container Model

A lite package is a standard .uix ZIP archive.

Required:
- manifest.json
- entry file declared by manifest.entry (usually index.html)

Recommended lite layout:
- manifest.json
- index.html
- app.js
- style.css
- assets/ (optional)

Compression guidance:
- text files (html/css/js/json/txt): DEFLATE
- already compressed assets (png/jpg/webp/mp4/woff2): STORE

## 3. Manifest Contract (Lite)

### 3.1 Required fields

| Field | Type | Rule |
|---|---|---|
| uix | string | MUST be "1.0" |
| id | string | MUST be stable, reverse-domain style |
| name | string | MUST be non-empty |
| version | string | SHOULD use semver |
| entry | string | MUST point to existing file |
| mode | string | MUST be "window" or "kiosk" |

### 3.2 Recommended defaults

| Field | Recommended value | Reason |
|---|---|---|
| network | "blocked" | deterministic offline behavior |
| permissions | [] | least privilege by default |
| minViewer | explicit value | predictable compatibility |

### 3.3 Optional fields used in lite docs

Allowed optional fields in lite docs:
- network
- permissions
- minViewer
- theme
- author
- expires

Lite docs should avoid implementation details that are not required to ship a
lightweight onboarding app.

## 4. Lite Runtime Guidance

Lite content should run correctly without remote dependencies.

Runtime expectations:
- app must render with network disabled
- no remote scripts or remote styles
- no external API dependency for first render
- graceful loading and error states

Bridge usage in lite docs:
- allowed to mention basic viewer metadata and shell APIs
- keep bridge examples minimal and onboarding-safe

## 5. Data Strategy in Lite

Preferred data approaches for lite profile examples:
- static JSON embedded in app.js
- local JSON files in assets/ or files/
- small in-memory state for interactivity

Examples of valid lite interactions:
- filterable catalog grid
- invitation RSVP UI state in-memory only
- language switcher (EN/AR)
- theme toggle

## 6. UI/UX Quality Baseline

Lite examples should still be high quality.

Required baseline:
- responsive layout for mobile and tablet
- accessible semantics (labels, alt text, focus order)
- readable typography and color contrast
- keyboard-safe controls for forms/dialogs
- startup with zero console errors

## 7. Packaging and Validation

Suggested packaging flow:

1. Build files (manifest + html/js/css + assets)
2. Package as .uix using CLI or approved toolchain
3. Validate archive before distribution
4. Open in viewer with network disabled and verify behavior

Validation checklist:
- manifest entry exists
- manifest id/version are correct
- all asset paths resolve
- app works offline
- no undeclared privileged behavior

## 8. Lite Compliance Checklist

A package is considered lite-compliant documentation output if:

- it is a valid .uix archive
- it uses the required manifest fields
- it can run without network
- it avoids requiring advanced workflows to understand the app
- it is ready for non-technical end users to open in viewer

## 9. Lite publication guardrails

This specification is intended for public-lite publication.

When generating lite-facing docs or examples:
- prioritize practical onboarding output
- keep language concise and implementation-safe
- avoid exposing unnecessary workflow internals
