{"id":48945127,"url":"https://github.com/quipolabs/runiq","last_synced_at":"2026-04-17T16:01:16.075Z","repository":{"id":321159963,"uuid":"1076613305","full_name":"quipolabs/runiq","owner":"quipolabs","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-16T23:06:05.000Z","size":63527,"stargazers_count":0,"open_issues_count":26,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-04-16T23:14:04.356Z","etag":null,"topics":["diagram-as-code","diagramming","diagrams-as-code"],"latest_commit_sha":null,"homepage":"https://www.runiq.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quipolabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"jgreywolf"}},"created_at":"2025-10-15T05:36:22.000Z","updated_at":"2026-04-16T23:06:08.000Z","dependencies_parsed_at":"2025-10-28T06:27:44.935Z","dependency_job_id":null,"html_url":"https://github.com/quipolabs/runiq","commit_stats":null,"previous_names":["jgreywolf/runiq","quipolabs/runiq"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/quipolabs/runiq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quipolabs%2Fruniq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quipolabs%2Fruniq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quipolabs%2Fruniq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quipolabs%2Fruniq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quipolabs","download_url":"https://codeload.github.com/quipolabs/runiq/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quipolabs%2Fruniq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31935697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T12:37:54.787Z","status":"ssl_error","status_checked_at":"2026-04-17T12:37:25.095Z","response_time":62,"last_error":"SSL_read: 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":["diagram-as-code","diagramming","diagrams-as-code"],"created_at":"2026-04-17T16:00:31.218Z","updated_at":"2026-04-17T16:01:16.040Z","avatar_url":"https://github.com/quipolabs.png","language":"TypeScript","funding_links":["https://github.com/sponsors/jgreywolf"],"categories":[],"sub_categories":[],"readme":"# Runiq\n\nA text-based diagram language that parses `.runiq` files and renders them to SVG.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue.svg)](https://www.typescriptlang.org/)\n[![Docs](https://img.shields.io/badge/docs-runiq.org-blue)](https://runiq.org)\n[![npm: @runiq/web](https://img.shields.io/npm/v/@runiq/web?label=%40runiq%2Fweb)](https://www.npmjs.com/package/@runiq/web)\n[![npm: @runiq/cli](https://img.shields.io/npm/v/@runiq/cli?label=%40runiq%2Fcli)](https://www.npmjs.com/package/@runiq/cli)\n\nRuniq is for keeping diagrams in source control. Write a diagram as text, render it as SVG, and use the same source in docs, build scripts, web apps, or editor tooling.\n\n## Links\n\n- [Documentation](https://runiq.org)\n- [Guide](https://runiq.org/guide/getting-started)\n- [Examples](https://runiq.org/examples/)\n- [DSL Reference](https://runiq.org/reference/dsl)\n- [Web SDK](./packages/web)\n- [CLI](./packages/cli)\n\n## What It Supports\n\nRuniq has a general `diagram` profile plus specialized profiles for common diagram domains.\n\n- Flowcharts, architecture diagrams, containers, C4, UML-style diagrams, data flow diagrams, ERDs, requirements diagrams, threat models\n- Sequence diagrams, state machines, activity diagrams, BPMN, railroad diagrams\n- Mindmaps, timelines, Wardley maps, kanban boards, Git graphs, treemaps, pedigrees\n- Charts, Sankey diagrams, Venn diagrams, pyramid diagrams, weighted/force-directed graphs\n- Electrical, digital, pneumatic, hydraulic, HVAC, control, P\u0026ID, block, kinematic, and quantum diagrams\n- Glyphsets: SmartArt-style templates such as funnels, cycles, pyramids, matrices, org charts, and process layouts\n\nOutput is SVG. Some profiles also export to domain formats such as SPICE, Verilog, BPMN XML, LaTeX/TikZ, and Simulink MDL.\n\n## Install\n\nFor web apps:\n\n```bash\npnpm add @runiq/web\n```\n\nFor CLI use:\n\n```bash\npnpm add -g @runiq/cli\n```\n\nFor local repo development:\n\n```bash\ngit clone https://github.com/quipolabs/runiq.git\ncd runiq\npnpm install\npnpm build\npnpm test\n```\n\nRequirements: Node.js `\u003e=20.13.0 \u003c21 || \u003e=22.12.0`, pnpm `8.15.0`.\n\n## Quick Start\n\nCreate a `.runiq` file:\n\n```runiq\ndiagram \"Auth Flow\" {\n  direction LR\n\n  style decision fillColor:\"#fff7e6\" strokeColor:\"#aa7700\"\n\n  shape user as @actor label:\"Visitor\"\n  shape landing as @rounded label:\"Landing Page\"\n  shape check as @rhombus label:\"Signed up?\" style:decision\n  shape welcome as @hexagon label:\"Welcome\"\n\n  user -\u003e landing label:\"visits\"\n  landing -\u003e check\n  check -yes-\u003e welcome\n}\n```\n\nRender it with the CLI:\n\n```bash\nruniq render auth-flow.runiq -o auth-flow.svg\n```\n\nOr render it from TypeScript:\n\n```ts\nimport { renderRuniqToSvg } from '@runiq/web';\n\nconst { svg, warnings } = await renderRuniqToSvg(source);\n```\n\n`@runiq/web` can run in the browser or on the server. See [Server-Side SVG Rendering](https://runiq.org/guide/server-side-rendering) for Node/API route examples.\n\n## Specialized Example\n\n```runiq\nsequence \"Login\" {\n  participant \"User\" as actor\n  participant \"API\" as control\n  participant \"Database\" as database\n\n  User -\u003e API: \"POST /login\"\n  API -\u003e Database: \"lookup user\"\n  Database --\u003e API: \"user record\"\n  API --\u003e User: \"200 OK\"\n}\n```\n\nUse the same `renderRuniqToSvg` helper for supported specialized profiles.\n\n## Packages\n\n| Package                                                      | npm                                                                                                                           | Purpose                                      |\n| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |\n| [`@runiq/web`](./packages/web)                               | [![npm](https://img.shields.io/npm/v/@runiq/web.svg)](https://www.npmjs.com/package/@runiq/web)                               | Browser/server SDK for parsing and rendering |\n| [`@runiq/cli`](./packages/cli)                               | [![npm](https://img.shields.io/npm/v/@runiq/cli.svg)](https://www.npmjs.com/package/@runiq/cli)                               | Command-line rendering and export            |\n| [`@runiq/core`](./packages/core)                             | [![npm](https://img.shields.io/npm/v/@runiq/core.svg)](https://www.npmjs.com/package/@runiq/core)                             | Core AST types, registries, shapes, themes   |\n| [`@runiq/parser-dsl`](./packages/parser-dsl)                 | [![npm](https://img.shields.io/npm/v/@runiq/parser-dsl.svg)](https://www.npmjs.com/package/@runiq/parser-dsl)                 | Langium-based DSL parser                     |\n| [`@runiq/layout-base`](./packages/layout-base)               | [![npm](https://img.shields.io/npm/v/@runiq/layout-base.svg)](https://www.npmjs.com/package/@runiq/layout-base)               | Layout interfaces and ELK adapter            |\n| [`@runiq/renderer-svg`](./packages/renderer-svg)             | [![npm](https://img.shields.io/npm/v/@runiq/renderer-svg.svg)](https://www.npmjs.com/package/@runiq/renderer-svg)             | SVG renderer for diagram profiles            |\n| [`@runiq/renderer-schematic`](./packages/renderer-schematic) | [![npm](https://img.shields.io/npm/v/@runiq/renderer-schematic.svg)](https://www.npmjs.com/package/@runiq/renderer-schematic) | Schematic renderer for engineering profiles  |\n| [`@runiq/io-json`](./packages/io-json)                       | [![npm](https://img.shields.io/npm/v/@runiq/io-json.svg)](https://www.npmjs.com/package/@runiq/io-json)                       | JSON import/export helpers                   |\n| [`@runiq/glyphsets`](./packages/glyphsets)                   | [![npm](https://img.shields.io/npm/v/@runiq/glyphsets.svg)](https://www.npmjs.com/package/@runiq/glyphsets)                   | Built-in SmartArt-style diagram patterns     |\n| [`@runiq/icons-brand`](./packages/icons-brand)               | [![npm](https://img.shields.io/npm/v/@runiq/icons-brand.svg)](https://www.npmjs.com/package/@runiq/icons-brand)               | Brand icon provider                          |\n| [`@runiq/icons-fontawesome`](./packages/icons-fontawesome)   | [![npm](https://img.shields.io/npm/v/@runiq/icons-fontawesome.svg)](https://www.npmjs.com/package/@runiq/icons-fontawesome)   | Font Awesome icon provider                   |\n| [`@runiq/icons-iconify`](./packages/icons-iconify)           | [![npm](https://img.shields.io/npm/v/@runiq/icons-iconify.svg)](https://www.npmjs.com/package/@runiq/icons-iconify)           | Iconify-style icon provider                  |\n| [`@runiq/data-loader`](./packages/data-loader)               | [![npm](https://img.shields.io/npm/v/@runiq/data-loader.svg)](https://www.npmjs.com/package/@runiq/data-loader)               | JSON/CSV data loading                        |\n| [`@runiq/export-spice`](./packages/export-spice)             | [![npm](https://img.shields.io/npm/v/@runiq/export-spice.svg)](https://www.npmjs.com/package/@runiq/export-spice)             | SPICE netlist export                         |\n| [`@runiq/export-verilog`](./packages/export-verilog)         | [![npm](https://img.shields.io/npm/v/@runiq/export-verilog.svg)](https://www.npmjs.com/package/@runiq/export-verilog)         | Verilog export                               |\n| [`@runiq/export-bpmn`](./packages/export-bpmn)               | [![npm](https://img.shields.io/npm/v/@runiq/export-bpmn.svg)](https://www.npmjs.com/package/@runiq/export-bpmn)               | BPMN XML export/import                       |\n| [`@runiq/export-latex`](./packages/export-latex)             | [![npm](https://img.shields.io/npm/v/@runiq/export-latex.svg)](https://www.npmjs.com/package/@runiq/export-latex)             | LaTeX/TikZ export                            |\n| [`@runiq/export-simulink`](./packages/export-simulink)       | [![npm](https://img.shields.io/npm/v/@runiq/export-simulink.svg)](https://www.npmjs.com/package/@runiq/export-simulink)       | Simulink MDL export                          |\n\n## Development\n\n```bash\npnpm install\npnpm build\npnpm test\npnpm docs:dev\npnpm dev\n```\n\nUseful scripts:\n\n- `pnpm build` builds all packages.\n- `pnpm test` builds and runs the package test suites.\n- `pnpm docs:dev` starts the VitePress docs site.\n- `pnpm dev` starts the editor app.\n- `pnpm generate-svgs` regenerates example SVG outputs.\n\n## Project Layout\n\n```txt\napps/editor                 SvelteKit editor\ndocs                        VitePress documentation\nexamples                    Example .runiq files\npackages/core               Shared types, registries, shapes, themes\npackages/parser-dsl         Langium parser\npackages/layout-base        Layout engine adapter\npackages/renderer-svg       SVG renderers\npackages/renderer-schematic Schematic renderers\npackages/web                Browser/server SDK\npackages/cli                CLI\npackages/export-*           Domain export packages\n```\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n\n## Acknowledgments\n\n- [Langium](https://langium.org/) for language tooling\n- [Eclipse Layout Kernel](https://www.eclipse.org/elk/) for graph layout\n- [VitePress](https://vitepress.dev/) for documentation\n- [Vitest](https://vitest.dev/) for testing\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquipolabs%2Fruniq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquipolabs%2Fruniq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquipolabs%2Fruniq/lists"}