Gramlot for Node.js & Bun
You know JavaScript.
See what is already included.
The reason to consider Gramlot here is the integrated model: Source, Data, widgets, validation and reactive behavior that are designed to work together.
A familiar language does not remove the integration work.
For a JavaScript developer, writing browser behavior is already familiar. The question is how much of the repeated work you want to assemble and maintain for each application.
Gramlot gives fields, data paths, validation, calculations and event-driven behavior a common grammar. Consider it when your interface has many relationships to keep consistent: data-entry screens, configurable forms and calculated summaries.
The benefit to evaluate is effort and clarity. Follow one input, one rule and one effect through the declarations, then judge how easy that relationship would be to change.
The same connection is visible in JavaScript.
This excerpt belongs in Page.main(root). One Data path connects an editor and a div; the browser runtime keeps the binding active.
root.dataSetter({destination_path: 'message', value: 'Hello world'});
root.div('^message');
root.input({value: '^message', live: true});Source describes the elements and their bindings. Data holds the shared value. Adding another view means pointing it at the same path.
Evaluate the pieces together.
- Validation
- Declare checks on the field. The shared pipeline handles rejected drafts, accepted Data, messages and asynchronous checks.
- Data formulas
- Give a calculation named inputs and a result path. Bound views follow that result instead of repeating its update logic.
- Data controllers
- Connect a click or a Data change to browser Logic, with explicit inputs and timing.
- Widgets and inspector
- Compose typed editors and shared layout. Inspect the resulting Source and Data in the running page.
Explore the included behavior →
Generated code benefits from the same explicit relationships. A concise declaration gives you a smaller piece to review and modify after an LLM has helped create the page. Keep control of what you build →
Run the page on Node.js or Bun.
Page builds Source on the server. Browser behavior lives in the module’s Logic export. The server package offers hosts for both Node.js and Bun.
npm create @gramlot site my-site
cd my-site
npm install
npm start
# Or run the generated project with Bun:
npm run start:bunThe development server opens on http://127.0.0.1:8080/. Install the Bun runtime to use the Bun command. Follow the server deployment instructions before exposing a project publicly.
Bonus track
A different delivery option.
JavaScript pages can also be packaged with a browser Worker host. Portable files and offline applications have their own workflow and boundaries.