{"id":49717207,"url":"https://github.com/lessjs-run/lessjs","last_synced_at":"2026-05-24T02:04:13.123Z","repository":{"id":353231972,"uuid":"1217825892","full_name":"lessjs-run/lessjs","owner":"lessjs-run","description":"Minimal-incremental, progressive fullstack framework built on Web Standards · Less is More","archived":false,"fork":false,"pushed_at":"2026-05-23T15:28:10.000Z","size":7820,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T17:13:46.319Z","etag":null,"topics":["declarative-shadow-dom","deno","fullstack-framework","island-architecture","less","lessjs","progressive-enhancement","ssg","static-site-generation","typescript","web-components","web-standards"],"latest_commit_sha":null,"homepage":"http://lessjs.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lessjs-run.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-22T08:56:52.000Z","updated_at":"2026-05-22T14:18:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lessjs-run/lessjs","commit_stats":null,"previous_names":["sisyphuszheng/openzhi","sisyphuszheng/kiss","lessjs-run/lessjs"],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/lessjs-run/lessjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lessjs-run%2Flessjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lessjs-run%2Flessjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lessjs-run%2Flessjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lessjs-run%2Flessjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lessjs-run","download_url":"https://codeload.github.com/lessjs-run/lessjs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lessjs-run%2Flessjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33418555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["declarative-shadow-dom","deno","fullstack-framework","island-architecture","less","lessjs","progressive-enhancement","ssg","static-site-generation","typescript","web-components","web-standards"],"created_at":"2026-05-08T21:01:10.365Z","updated_at":"2026-05-24T02:04:13.116Z","avatar_url":"https://github.com/lessjs-run.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LessJS\n\n[简体中文](./README.md) | English\n\n**DSD-first Web Components application framework** - LessJS combines a\nstandards-first rendering engine, progressive islands, Hono API routes, and an\nearly Registry Hub for Web Component discovery and compatibility evidence.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Deno](https://img.shields.io/badge/Deno-2.7%2B-000000)](https://deno.com/)\n[![JSR](https://img.shields.io/badge/JSR-published-blue)](https://jsr.io/@lessjs/core)\n[![@lessjs/core](https://img.shields.io/jsr/v/@lessjs/core?label=@lessjs/core)](https://jsr.io/@lessjs/core)\n\n## Current State\n\nProject line: **v0.21.0 Reactive DSD**.\n\nThe current production rendering mode is **SSG + Declarative Shadow DOM** with\nexplicit island hydration strategies, route-level ISR metadata, and Reactive DSD\nfor small DSD-native Web Component interactions. `renderDSD()` remains the\nrendering kernel; v0.21 adds safe `html` templates, Signal-driven `DsdElement`\nupdates, and streaming DSD without turning LessJS into a generic request-time\nSSR server.\n\nAll 16 packages are released at v0.21.0.\n\n## Three Product Pillars\n\n```text\nLessJS\n|\n+-- 1. Application framework\n|   +-- file-convention routes\n|   +-- Hono API routes\n|   +-- Vite dev server and SSG build\n|   +-- serverless-oriented deployment model\n|\n+-- 2. DSD/WC rendering engine\n|   +-- DsdElement, renderDSD(), StyleSheet\n|   +-- Declarative Shadow DOM output\n|   +-- Lit / React / Vanilla adapters\n|   +-- compatibility admission and dsd-report.json\n|\n+-- 3. Registry Hub\n    +-- package discovery\n    +-- compatibility reports and snapshots\n    +-- validation-gated less add workflow\n```\n\n## What Is Shipped\n\n- **DSD-first rendering** - HTML contains `\u003ctemplate shadowrootmode=\"open\"\u003e`\n  output for SSR-capable components.\n- **DsdElement** - a zero-dependency `HTMLElement` base for DSD-native Web\n  Components.\n- **SSR-safe StyleSheet** - a browser/CSSOM-compatible stylesheet abstraction\n  that works during Deno/Node builds.\n- **Ocean-Island UI model** - most UI components render as DSD-native ocean\n  components; framework-heavy behavior remains in islands.\n- **Hydration strategies** - `client:load`, `client:idle`, `client:visible`,\n  and `client:only` are the only public island strategies.\n- **Reactive DSD** - `DsdElement` can render native `html` templates and update\n  from Signal-like values for small interactive components.\n- **Safe templates** - template interpolation escapes by default, with\n  `unsafeHTML()` as the explicit trust boundary.\n- **Streaming DSD** - `renderDSDStream()` emits Response-compatible Web Stream\n  chunks for future edge handlers.\n- **ISR metadata** - routes can expose `revalidate`, producing ISR manifest\n  evidence and using core cache primitives for adapter implementations.\n- **API route parity** - API modules can export a Hono app or a\n  `LessApiContext` with `request`, `params`, `env`, and `platform` (type-only).\n- **Registry evidence pipeline** - Hub records, package validation, snapshots,\n  and `less add` exist as early-access infrastructure.\n- **Release gates** - formatting, linting, typechecking, tests, build, e2e,\n  audit, Hub validation, and DSD report checks are part of the workflow.\n\n## What Is Next\n\n- **Edge Full-Stack** - ISR production handler, KV adapters, showcase proof, and\n  deployment guides.\n- **Hub growth** - more real Web Component packages and clearer compatibility\n  badges.\n\n## Quick Start\n\n```bash\ndeno run -A jsr:@lessjs/create my-app\ncd my-app\ndeno task dev\ndeno task build\n```\n\nRequirements: Deno 2.7+ and a modern browser with Declarative Shadow DOM\nsupport.\n\n## Packages\n\n| Package                   | Role                                                                                          |\n| ------------------------- | --------------------------------------------------------------------------------------------- |\n| `@lessjs/core`            | DSD renderer, DsdElement, StyleSheet, renderer protocol, CEM parser, compatibility classifier |\n| `@lessjs/adapter-vite`    | Vite orchestration, route scanning, SSG pipeline, island entry generation                     |\n| `@lessjs/adapter-lit`     | Lit adapter, retained mainly for island and compatibility paths                               |\n| `@lessjs/adapter-react`   | React adapter                                                                                 |\n| `@lessjs/adapter-vanilla` | Vanilla Web Component adapter                                                                 |\n| `@lessjs/app`             | Unified `lessjs()` entry                                                                      |\n| `@lessjs/content`         | Blog, nav, and sitemap build plugins                                                          |\n| `@lessjs/i18n`            | Locale expansion and route helpers                                                            |\n| `@lessjs/ui`              | DSD-native Web Components and island examples                                                 |\n| `@lessjs/signals`         | Signals helpers and island effects                                                            |\n| `@lessjs/compat-check`    | SSR compatibility classifier (standalone)                                                     |\n| `@lessjs/cem`             | Custom Elements Manifest parser (standalone)                                                  |\n| `@lessjs/style-sheet`     | Cross-environment CSSStyleSheet abstraction (standalone)                                      |\n| `@lessjs/rpc`             | Fetch-based RPC controller                                                                    |\n| `@lessjs/hub`             | Registry Hub schema, indexer, scanner, validator, snapshots                                   |\n| `@lessjs/create`          | Project scaffold CLI                                                                          |\n\n## Rendering Pipeline\n\n```text\nroute component\n  -\u003e renderDSD()\n  -\u003e \u003ctemplate shadowrootmode=\"open\"\u003e\n  -\u003e browser parses DSD\n  -\u003e custom element upgrade\n  -\u003e @click binding / island runtime only where needed\n```\n\n| Mode | State   | When rendering happens | Server requirement        |\n| ---- | ------- | ---------------------- | ------------------------- |\n| SSG  | shipped | build time             | none after build          |\n| ISR  | v0.22   | cache expiry           | edge/serverless function  |\n| SSR  | later   | every request          | always-on request runtime |\n\n## Compatibility Boundary\n\nLessJS does not promise universal automatic SSR for arbitrary Web Components.\nEvery component should reach one deterministic outcome:\n\n- SSR/SSG through a declared adapter or validated package contract\n- client-only fallback when browser APIs are required\n- rejection before build output when metadata is invalid or unsafe\n\n## Roadmap\n\n| Version | Target                                    | Status  |\n| ------- | ----------------------------------------- | ------- |\n| v0.15   | Renderer Kernel Protocol                  | Done    |\n| v0.16   | WC Package Protocol                       | Done    |\n| v0.17   | Ecosystem Entry + SSR Boundary            | Done    |\n| v0.18   | Universal WC Engine                       | Done    |\n| v0.19   | Registry Hub + Component Browser          | Done    |\n| v0.20   | Ocean-Island Architecture + DSD-native UI | Shipped |\n| v0.21   | Reactive DSD + streaming                  | Current |\n| v0.22   | Edge Full-Stack ISR + KV + Showcase       | Planned |\n| v1.0    | Stable Engine contracts                   | Vision  |\n\nSee [ADR docs](docs/adr/), [SOP docs](docs/sop/), and\n[Roadmap](docs/roadmap/ROADMAP.md) for the governing documents.\n\n## Governance Docs\n\n```text\ndocs/\n+-- adr/        architecture decision records\n+-- changelog/  version changelogs\n+-- sop/        standard operating procedures\n+-- status/     project status and review archive\n+-- roadmap/    version planning\n```\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flessjs-run%2Flessjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flessjs-run%2Flessjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flessjs-run%2Flessjs/lists"}