Three packages, one site you own
Alkemist separates reusable components, optional theme behavior, and Astro defaults so an existing site can adopt only what it needs.
Alkemist has three public package boundaries in the current source checkout.
Components begin with one useful thing
@alkemdotdev/alkemist-components contains the visible building blocks: Layout,
Chart, Model, Math, Code, and the bounded
Shader study. An existing Astro site can import a single component without
adopting a starter, a stylesheet system, or an integration.
That is the smallest useful promise. A chart remains a chart in the site’s own page and data model; Alkemist supplies the supported rendering and interaction contract around it.
Theme and integration are choices
@alkemdotdev/alkemist-theme holds the board tokens, local fonts, invariant palette, CSS,
and browser preference helpers. A site can use those pieces when it wants the
Alkemist visual language, or keep its own theme while using a component.
@alkemdotdev/alkemist-astro holds the optional integration and Markdown/MDX defaults. It
is useful when a site wants those authoring defaults, but component imports do
not depend on configuring the integration.
The split keeps the dependency graph legible: components need the theme’s shared values internally, while an author chooses whether the page imports the theme’s global CSS or integration behavior.
A generator is an initial handoff
The repository’s source generator creates a complete site in an empty directory.
It places packed package snapshots in vendor/; its explicit
--update refreshes those snapshots while preserving the generated site’s
content, assets, configuration, and custom source. The two paths make different
ownership promises on purpose.
The getting-started guide explains the source workflow, and the publishing guide records the release policy.