Orga is a flexible org-mode syntax parser. It parses org content into AST (Abstract Syntax Tree 🌲). And it’s written in JavaScript.
org-mode is simply a superior format than other more popular ones, but it’s mostly trapped inside of emacs. It’s so good that it was the #1 reason to learn and use emacs for a lot of people (me included). But it’s too good to not share with the rest of the world. If it can run in JavaScript, it can run on anything.
It integrates natively with popular tools.
☔️ interface for parsing, inspecting, transforming, and serializing content through syntax trees
The orga parser is completely compatible with unified. Which means you get to take advantage of the works of others put into the pipeline. linting for natural language, correct your writing, write music? etc. Here is an example.
@orgajs/loader is a webpack loader that made orga native citizen of webpack ecosystem. Coupled with plugins, it works smoothly. Take a look at the example project.
A JavaScript library for building user interfaces
You can render react components directly in your org file. Something like this:
* Hello World
Let's render *the box*.
#+begin_export jsx
<div style={{
backgroundColor: 'gold',
padding: '1em',
border: '1px solid black',
boxShadow: '5px 5px'
}}>I am a box with shadow</div>
#+end_export
Try it our yourself in the playground.
Next generation frontend tooling
@orgajs/rollup is a plugin compatible with both Rollup and Vite. It lets you import .org files directly in your project.
- Package:
@orgajs/rollup
The web framework for content-driven websites
Astro integration is maintained in a standalone repository.
- orga-astro repository
- Package:
@orgajs/astro
The React Framework
Next.js integration is maintained in a standalone repository.
- orga-next repository
- Package:
@orgajs/next - Guide: Next.js integration guide
Take a look at the collection of examples to quickly get started.
See the contributing file for ways to get started.