๐ฆ 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 domain
specific languages with 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. โค๏ธ