velite is a free, open source content management systems (cms) project written in TypeScript and released under MIT. It has 813 GitHub stars, 44 forks and 33 open issues, and was last pushed 35 hours ago. On this registry it ranks #38 of 47 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available.

What is velite?

Velite is an MIT-licensed TypeScript tool that turns Markdown, MDX, YAML, JSON, and other files into a type-safe application data layer validated with Zod schemas, aimed at developers building content-driven sites and applications in any JavaScript framework.

What it is

Velite is a build-time content compiler. Content is placed in a content folder, collections are declared as schemas, and the velite command converts those source files into a typed data layer the application reads at runtime. Validation runs through Zod, and Velite generates TypeScript type inference from the same schemas, so the shape that validated the source content is the shape available in application code. Output is emitted as JSON, Entry, and DTS files, described in the README as framework-agnostic and usable from any JavaScript framework or library. The project is written in TypeScript, published under the MIT licence, and maintained by zce.

The concrete problem it solves is the gap between loose content files and typed application code. Without a tool like this, a project hand-writes a loader per source format and manually keeps a TypeScript interface in sync with frontmatter, which drifts as content grows. Velite replaces that bespoke preprocessing script: collection schemas are declared once, and parsing, relative file and image resolution, schema validation, and output generation are handled by the tool. Its topic list explicitly tags it alongside contentlayer, placing it in the same generation of content-to-data-layer tooling that reads local files rather than storing content in a hosted backend.

Key capabilities

  • Validates content collections with Zod schemas and generates TypeScript type inference for the resulting data.
  • Reads Markdown, MDX, YAML, and JSON out of the box, including relative file and image processing.
  • Emits JSON, Entry, and DTS output, described as framework-agnostic with out-of-the-box support for any JavaScript framework or library.
  • Customizable input and output directories, plus support for custom loaders and hooks.
  • Extends to arbitrary file types through custom loaders, and to custom field validation and transformation through schema context().
  • Built on esbuild, per the project topic list, with few runtime dependencies by design.
  • Usage flow documented as: move content into content, define collection schemas, run velite, then consume the output data.

Who uses it and how

  • The README's "Who's using Velite?" section names Ark UI, Chakra UI, and Park UI as dependent projects.
  • zce/taxonomy, a fork of the shadcn-ui/taxonomy project, is offered as a real-world example for starting quickly.
  • Next.js teams are supported through a documented guide at velite.js.org/guide/with-nextjs; a first-party plugin package is on the roadmap, and the current integration is a snippet.
  • Developers evaluating the tool can run it in the browser on StackBlitz using the velite-basic and velite-nextjs examples.
  • Any JavaScript framework or library can consume the emitted JSON, Entry, and DTS output, so adoption is not tied to a single renderer.

Getting started

Define collection schemas over files in a content folder and run the velite command to produce the typed data layer. A browser-based trial is available through the StackBlitz velite-basic and velite-nextjs examples, with guides at velite.js.org.

How it compares

The topic list places Velite alongside contentlayer, the closest named relative in the facts, which puts it in the same category of local-file content compilation rather than hosted content management. Its distinguishing stated properties are Zod-based validation, generated TypeScript inference, and JSON, Entry, and DTS output. The facts name no paid products this project replaces, so no licence or cost comparison against commercial offerings can be drawn from them.

When to use it — and when not to

Velite fits projects that keep content in the repository and want typed, validated access to it without a hosted CMS. The roadmap is candid about maturity gaps: unit and E2E tests, incremental build, a scaffolding tool, and a packaged Next.js plugin are all listed as unfinished, and the repository carries 33 open issues, so teams that need guaranteed test coverage, incremental rebuilds, or a first-party framework plugin should treat those as reasons to wait or to plan around the current snippet-based integration.

project readme (upstream, from github) — read inline

<img src="https://velite.js.org/assets/logo-dark.svg" Velite" title="Velite">

Turns Markdown / MDX, YAML, JSON, or other files into app's data layer with type-safe schema.

Build Status License NPM Version Node Version Code Style
NPM Downloads Install Size Dependencies Status

What is Velite?

Velite is a tool for building type-safe data layer, turns Markdown / MDX, YAML, JSON, or other files into app's data layer with Zod schema.

Velite Workflow

Naming Origin

"Velite" comes from the English word "elite".

"Velite" itself is the code name for Napoleon's elite army.

Key Features

  • Easy to use: Move your contents into content folder, define collections schema, run velite, then use the output data in your application.
  • Type-safe: Contents schema validation by Zod, and generate type inference for TypeScript.
  • Framework Agnostic: JSON & Entry & DTS output, out of the box support for any JavaScript framework or library.
  • Light-weight: Choose more native APIs instead of bloated NPM modules, less runtime dependencies, so it is fast and efficiently.
  • Still powerful: Built-in Markdown / MDX, YAML, JSON support, relative files & images processing, schema validation, etc.
  • Configurable: Both input and output directories can be customized, and support for custom loaders, hooks, etc.
  • Extensible: Support any file types by custom loaders, custom field validation and transform by custom schema with parser context(), and any output formats by hooks.

Check out our detailed Why Velite to learn more about what makes Velite special. ✨

Try Velite Online

You can try Velite directly in your browser on StackBlitz:

[!NOTE] You may need a real-world project to start Velite quickly. I have forked the shadcn-ui/taxonomy project as an example, you can try it out. https://github.com/zce/taxonomy

Who's using Velite?

Roadmap

The following are the features I want to achieve or are under development:

  • More framework or build tool integration examples.
  • More built-in schemas
  • Unit & E2E tests?
  • Scoffolding tool
  • Incremental build
  • Turborepo?
  • Next.js plugin package? It's currently a snippet.

See the open issues for a list of proposed features (and known issues).

Contributing

  1. Fork it on GitHub!
  2. Clone the fork to your own machine.
  3. Checkout your feature branch: git checkout -b my-awesome-feature
  4. Commit your changes to your own branch: git commit -am 'Add some feature'
  5. Push your work back up to your fork: git push -u origin my-awesome-feature
  6. Submit a Pull Request so that we can review your changes.

[!NOTE] Be sure to merge the latest from "upstream" before making a pull request!

License

MIT © zce

Frequently asked questions

Is velite free to use?

velite is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does velite do?

Turns Markdown / MDX, YAML, JSON, or others into app's data layer with Zod schema.

What is velite written in?

velite is primarily written in TypeScript. Its source is publicly available at https://github.com/zce/velite, and it has 813 GitHub stars.