{"id":14962743,"url":"https://github.com/freon4dsl/freon4dsl","last_synced_at":"2026-01-12T02:23:47.582Z","repository":{"id":37396985,"uuid":"154798200","full_name":"freon4dsl/Freon4dsl","owner":"freon4dsl","description":"Web Native language Workbench with Projectional Web Editor","archived":false,"fork":false,"pushed_at":"2025-04-01T14:25:29.000Z","size":28499,"stargazers_count":69,"open_issues_count":14,"forks_count":9,"subscribers_count":8,"default_branch":"development","last_synced_at":"2025-04-01T15:38:57.514Z","etag":null,"topics":["domain-specific-language","dsl","language-modeling","projectional-editor","svelte","typescript"],"latest_commit_sha":null,"homepage":"https://www.freon4dsl.dev","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/freon4dsl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2018-10-26T07:55:38.000Z","updated_at":"2025-03-27T08:48:15.000Z","dependencies_parsed_at":"2024-05-29T14:56:48.875Z","dependency_job_id":"421dd4cc-fbec-49d7-b074-097f41a9923b","html_url":"https://github.com/freon4dsl/Freon4dsl","commit_stats":{"total_commits":2580,"total_committers":9,"mean_commits":286.6666666666667,"dds":0.4728682170542635,"last_synced_commit":"bf610211b51889864a68ebb76268603eec1de3e9"},"previous_names":["joswarmer/projectit"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freon4dsl%2FFreon4dsl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freon4dsl%2FFreon4dsl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freon4dsl%2FFreon4dsl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freon4dsl%2FFreon4dsl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freon4dsl","download_url":"https://codeload.github.com/freon4dsl/Freon4dsl/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247332560,"owners_count":20921853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["domain-specific-language","dsl","language-modeling","projectional-editor","svelte","typescript"],"created_at":"2024-09-24T13:30:27.027Z","updated_at":"2026-01-12T02:23:47.576Z","avatar_url":"https://github.com/freon4dsl.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Freon — The Language Workbench for the Web\n\n[![Build Status](https://github.com/freon4dsl/freon4dsl/actions/workflows/node.js.yml/badge.svg)](https://github.com/freon4dsl/freon4dsl/actions)\n[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](../../discussions)\n[![GitHub issues](https://img.shields.io/github/issues/freon4dsl/freon4dsl)](../../issues)\n\n📦 [NPM](https://www.npmjs.com/org/freon4dsl) · 🧠 [Docs](https://www.freon4dsl.dev) · 💬 [Discussions](../../discussions)\n\n\n**From documents to models**  \nFreon is a language workbench that generates browser-based editors from your own domain-specific language (DSL).  \nIt helps businesses capture knowledge in a structured way — turning Word-style requirements into models that can be automated, stored, and reused.\n\n- ⚡ **Easy to start**: smart defaults and generators for common tasks.\n- 🌐 **Runs in the browser**: editors are instantly usable, no complex setup.\n- 🧩 **Meta-languages for scope \u0026 typing**: declare rules instead of hard-coding them.\n- 🔀 **Hybrid approach**: combines projectional editing with parsing for flexible, natural DSLs.\n\n📖 [Freon documentation](https://www.freon4dsl.dev)  \n🎮 [Sample DSLs](packages/samples)\n\n---\n\n## Which Repo Do You Need?\n\n\u003e 💡 **If your goal is to *use* Freon to build your own DSL**, head over to the [create-freon](https://github.com/freon4dsl/create-freon) repository.  \n\u003e This repository (`freon4dsl/freon4dsl`) is for **developing Freon itself** — its core framework, editor engine, and generators.\n\n---\n\n## 🤝 Want to Contribute?\n\nWe’re always happy to welcome new contributors to the **Freon** project!\n\nWhether you’re fixing bugs, improving documentation, or adding new features — your help makes a real difference.  \nIf you’d like to join in:\n\n1. **Fork** this repository\n2. **Create a branch** for your change\n3. **Submit a pull request**\n\nNot sure where to start? Check our [issues](../../issues) labeled `good first issue`, or reach out by opening a [discussion](../../discussions).\n\n📘 For full contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\nLet’s build something great together!\n\n## Releases\n\n- **November, 2025: Version 2.0.0 released**\n- **August 1, 2025: Version 2.0.0-beta.2 released**\n- **May 13, 2025: Version 1.1.0-beta.3 released**\n  - Updated to Svelte 5 (was Svelte 4).\n  - Performance improvements in generation.\n  - Really fast hot reloading thanks to Vite.\n- **May 13, 2025: IDE plugin version 0.0.4 released** → [see details here](https://github.com/freon4dsl/freon-ide/blob/main/README.md)\n\n---\n\n## What is Freon?\n\nFreon is a **TypeScript/JavaScript framework** for creating and implementing domain\nspecific languages with projectional editors for DSLs that run natively in the browser.  \nBeyond the core framework, Freon includes generators for many parts of a DSL’s working environment.\n\n---\n\n## Developing Freon\n\nIf you want to work on the Freon framework itself:\n\n### Prerequisites\n- [Node.js](https://nodejs.org/)\n- [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/)\n\nWe typically use the latest versions, although older versions may work as well.\n\nFor more background on Freon’s internal structure and build process, check out the [`developer-documentation`](developer-documentation) folder.  \nIt includes technical notes and guidelines for maintainers and advanced contributors.\n\n\n### Build and Test\n```bash\ngit clone https://github.com/freon4dsl/freon4dsl.git\ncd Freon4dsl\nnpm install\nnpm run build\nnpm run test\n```\n\n### Running the Web App Editor\n\nYou can try Freon with one of the sample languages.\n\n#### 1. Build the language\n```bash\ncd packages/samples/\u003cyour-sample\u003e\nnpm run build\n```\n\n#### 2. Configure the web app\nEdit `packages/webapp-flowbite/package.json`:  \n```json\n\"dependencies\": {\n\"@freon4dsl/\u003cyour-sample\u003e\": \"2.0.0\"\n}\n```\n\nEdit `packages/webapp-flowbite/src/starter.ts`:  \n```ts\nimport { LanguageEnvironment } from \"@freon4dsl/\u003cyour-sample\u003e\";\n```\n\n#### 3. Start the server\n```bash\ncd packages/server\nnpm run start\n```\nThe server runs continuously in the background, so open another terminal to start the web app.\n\n#### 4. Run the web app\n```bash\ncd packages/webapp-flowbite\nnpm run styles\nnpm run dev\n```\n\n➡️ Open the URL shown in your terminal (e.g. `http://localhost:\u003cport\u003e/`).  \nThis will display the example language editor in your browser.\n\n---\n\n### Source Organization\n\nThe codebase is organized into multiple packages:\n\n- **packages/core** – main framework\n  - `src/editor` → editor framework\n  - `src/language/decorators` → [MobX](https://mobx.js.org/) decorators\n- **packages/core-svelte** – HTML \u0026 CSS integration\n- **packages/meta** – DSL definition \u0026 code generation\n  - `languagedef` → generates code from `*.ast` files (abstract syntax trees)\n  - `editordef` → generates code from `*.edit` files (editor definitions)\n  - `scoperdef` → generates code from `*.scope` files (scoping rules)\n  - `typerdef` → generates code from `*.type` files (typing rules)\n  - `validatordef` → generates code from `*.valid` files (validators)\n- **packages/samples** – example DSLs\n- **packages/server** – minimal development model server\n- **packages/weblib-flowbite`** – shared web libraries for demo web app\n- **packages/webapp-flowbite** – current demo web app using [Flowbite-Svelte](https://flowbite-svelte.com/)\n- **developer-documentation** – technical information for contributors and maintainers\n  - Explains architecture, build setup, generators, and API internals\n\n\nWe build Freon and its documentation out of curiosity, passion, and love for language engineering.\nWe invite you to share that enthusiasm and help make something meaningful — together. ❤️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreon4dsl%2Ffreon4dsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreon4dsl%2Ffreon4dsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreon4dsl%2Ffreon4dsl/lists"}