๐ฆ NPM ยท ๐ง Docs ยท ๐ฌ Discussions
From documents to models
Freon is a language workbench that generates browser-based editors from your own domain-specific language (DSL).
It helps businesses capture knowledge in a structured way โ turning Word-style requirements into models that can be automated, stored, and reused.
๐ Freon documentation
๐ฎ Sample DSLs
๐ก If your goal is to use Freon to build your own DSL, head over to the create-freon repository.
This repository (freon4dsl/freon4dsl) is for developing Freon itself โ its core framework, editor engine, and generators.
Weโre always happy to welcome new contributors to the Freon project!
Whether youโre fixing bugs, improving documentation, or adding new features โ your help makes a real difference.
If youโd like to join in:
Not sure where to start? Check our issues labeled good first issue, or reach out by opening a discussion.
๐ For full contribution guidelines, see CONTRIBUTING.md.
Letโs build something great together!
Freon is a TypeScript/JavaScript framework for creating and implementing projectional editors for DSLs that run natively in the browser.
Beyond the core framework, Freon includes generators for many parts of a DSLโs working environment.
If you want to work on the Freon framework itself:
We typically use the latest versions, although older versions may work as well.
For more background on Freonโs internal structure and build process, check out the developer-documentation folder.
It includes technical notes and guidelines for maintainers and advanced contributors.
git clone https://github.com/freon4dsl/freon4dsl.git
cd Freon4dsl
npm install
npm run build
npm run test
You can try Freon with one of the sample languages.
cd packages/samples/<your-sample>
npm run build
Edit packages/webapp-flowbite/package.json:
"dependencies": {
"@freon4dsl/<your-sample>": "2.0.0"
}
Edit packages/webapp-flowbite/src/starter.ts:
import { LanguageEnvironment } from "@freon4dsl/<your-sample>";
cd packages/server
npm run start
The server runs continuously in the background, so open another terminal to start the web app.
cd packages/webapp-flowbite
npm run styles
npm run dev
โก๏ธ Open the URL shown in your terminal (e.g. http://localhost:<port>/).
This will display the example language editor in your browser.
The codebase is organized into multiple packages:
src/editor โ editor frameworksrc/language/decorators โ MobX decoratorslanguagedef โ generates code from *.ast files (abstract syntax trees)editordef โ generates code from *.edit files (editor definitions)scoperdef โ generates code from *.scope files (scoping rules)typerdef โ generates code from *.type files (typing rules)validatordef โ generates code from *.valid files (validators)We build Freon and its documentation out of curiosity, passion, and love for language engineering. We invite you to share that enthusiasm and help make something meaningful โ together. โค๏ธ