Skip to content

Introduction

What Blasdoc is, what it is not, and the idea it is built on.

Blasdoc renders Markdown as real Angular components. Not HTML that looks like components, and not a string of markup injected into the page: a tag in your content becomes a component instance, with its inputs, its outputs and its projected children intact.

The idea

Content arrives as a string — from a file, an HTTP response, a CMS, a textarea. Blasdoc parses it into a typed intermediate representation, and hands that to Angular:

text
Markdown + Angular template syntax
                |
           Blasdoc IR
          /         \
  Angular            Source
  Runtime            Renderer

One representation drives both sides. That is the whole design, and it is why a live preview and the code beside it can never disagree: they are the same nodes, rendered twice.

A live example

Switch to Code and you see the source that produced the button — read out of the document's own text, not serialised back from the DOM.

What you get

CapabilityWhat it means
Components<app-button> is an Angular instance, not a string
Bindings[disabled], (clicked), [(value)] all apply at runtime
Interpolation{{ count }} reads your component's own fields
Control flow@if, @for and @switch, the Angular spelling
Code blocksShiki highlighting, tabs, live previews, per-block themes
PagesA .md file is a component's template
SafetyNo eval, no new Function, no innerHTML

What Blasdoc is not

It is not a Markdown-to-HTML library, not a React MDX clone, not JSX, and not a transpiler. There is no build step that turns your content into components: the content stays content, and it is read at runtime.

It is also not a documentation theme you must adopt. The default theme is optional and every value in it is a CSS custom property; the behaviour lives in headless primitives you can apply to your own markup.

Where to go next