{"id":47784333,"url":"https://github.com/canmi21/seam","last_synced_at":"2026-04-03T14:10:29.841Z","repository":{"id":338730959,"uuid":"1144721873","full_name":"canmi21/seam","owner":"canmi21","description":"Rendering is a protocol, not a runtime.","archived":false,"fork":false,"pushed_at":"2026-03-21T09:55:07.000Z","size":5727,"stargazers_count":31,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-22T01:33:03.123Z","etag":null,"topics":["codegen","ctr","injection","procedure","protocol","skeleton"],"latest_commit_sha":null,"homepage":"https://seamjs.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/canmi21.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-29T01:19:34.000Z","updated_at":"2026-03-21T09:55:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"68ac6056-2d44-431c-9902-215400b9da6b","html_url":"https://github.com/canmi21/seam","commit_stats":null,"previous_names":["canmi21/seam"],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/canmi21/seam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canmi21%2Fseam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canmi21%2Fseam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canmi21%2Fseam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canmi21%2Fseam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/canmi21","download_url":"https://codeload.github.com/canmi21/seam/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canmi21%2Fseam/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31356417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T08:03:20.796Z","status":"ssl_error","status_checked_at":"2026-04-03T08:00:37.834Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["codegen","ctr","injection","procedure","protocol","skeleton"],"created_at":"2026-04-03T14:10:27.066Z","updated_at":"2026-04-03T14:10:29.835Z","avatar_url":"https://github.com/canmi21.png","language":"TypeScript","readme":"# SeamJS\n\n**Seam** is a protocol that separates rendering from runtime. **SeamJS** is the framework that implements it — stitching together existing tools (Vite, TanStack Query, TanStack Router) where they already work, and building custom pipelines (skeleton extraction, injection engine, CLI) where they don't.\n\n## How It Works\n\nTraditional SSR calls `renderToString` on every request — your entire component tree is re-evaluated, a virtual DOM is built, and the result is serialized. Even in a pure TypeScript stack, this costs ~100-300ms per page.\n\nSeamJS moves that work to build time:\n\n1. **Build time** — `renderToString` runs once. The output is diffed into an HTML skeleton with typed slot markers\n2. **Request time** — the server resolves data loaders, then the engine fills slots via AST-based injection (~1ms)\n3. **Client** — hydrates the known skeleton and takes over\n\nNo component tree at request time. No virtual DOM. No `renderToString`. The rendering cost becomes negligible — only your data loaders matter.\n\nThis is **compile-time rendering (CTR)**. It works with any backend language because the server never imports UI code — it only performs data injection on a pre-built template. Rust, TypeScript, and Go all share the same engine and the same protocol.\n\n## What You Get\n\n| Layer      | Details                                                                                              |\n| ---------- | ---------------------------------------------------------------------------------------------------- |\n| Frontend   | React: client bindings, TanStack Router, filesystem router, i18n, TanStack Query, ESLint plugin      |\n| Backend    | Rust (Axum) / TypeScript (Hono, Bun, Node) / Go (Gin, Chi, net/http) — symmetric APIs, same protocol |\n| Procedures | query, command, subscription, stream, upload — codegen, namespaces, context, invalidation, JTD       |\n| Transport  | HTTP RPC, batch RPC, SSE, WebSocket channels, stream SSE, multipart upload                           |\n| Rendering  | CTR (compile-time), SSR ([HTML slot injection](docs/protocol/slot-protocol.md)), SSG (hybrid modes)  |\n| CLI        | `build`, `generate`, `dev`, `pull`, `clean` — virtual modules, `loadBuild()`, head metadata          |\n\n## Getting Started\n\nPick a standalone server example and run it:\n\n```sh\n# TypeScript (Bun)\ncd examples/standalone/server-bun \u0026\u0026 bun run src/index.ts\n\n# Rust (Axum)\ncd examples/standalone/server-rust \u0026\u0026 cargo run\n\n# Go (net/http)\ncd examples/standalone/server-go \u0026\u0026 go run .\n```\n\nFor a fullstack example with React frontend, see the [GitHub Dashboard](examples/github-dashboard/) — same UI running on three interchangeable backends.\n\n## Examples\n\n- [GitHub Dashboard](examples/github-dashboard/) — fullstack CTR with Rust, TypeScript, and Go backends\n- [Markdown Demo](examples/markdown-demo/) — SSR via HTML slot injection with server-side rendering\n- [i18n Demo](examples/i18n-demo/) — URL-prefix and hidden locale resolution\n- [shadcn/ui Demo](examples/shadcn-ui-demo/) — Tailwind CSS v4 + Radix/shadcn behavior under CTR and hydration\n- [FS Router Demo](examples/fs-router-demo/) — filesystem router with all route types\n- [Feature Demos](examples/features/) — channels, context, streams, queries, and handoff\n- [Standalone Servers](examples/standalone/) — minimal SDK usage for each language\n\n## Documentation\n\n**Architecture** — [UI Layer](docs/architecture/ui-layer.md) / [Logic Layer](docs/architecture/logic-layer.md) / [Transport Layer](docs/architecture/transport-layer.md)\n\n**Protocol** — [Slot](docs/protocol/slot-protocol.md) / [Sentinel](docs/protocol/sentinel-protocol.md) / [Manifest](docs/protocol/procedure-manifest.md) / [Subscription](docs/protocol/subscription-protocol.md) / [Channel](docs/protocol/channel-protocol.md) / [Skeleton Constraints](docs/protocol/skeleton-constraints.md)\n\n**Development** — [Build commands, test matrix, prerequisites](docs/development.md)\n\n## Roadmap\n\nSoild, Svelte and Vue frontends. Tauri and Electron desktop adapters. Serverless deployment mode. Island Mode; See the [full roadmap](docs/roadmap.md).\n\nThe seam protocol is open — any language that serves HTTP can be a backend. PRs for new UI frameworks, backend languages, and transport adapters are welcome.\n\n## Community\n\n- [Ecosystem](ECOSYSTEM.md) — third-party frameworks, backends, and adapters\n- [Code of Conduct](CODE_OF_CONDUCT.md)\n\n## License\n\nMIT License © 2026 [Canmi](https://github.com/canmi21)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanmi21%2Fseam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanmi21%2Fseam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanmi21%2Fseam/lists"}