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" comes from the English word "elite".
"Velite" itself is the code name for Napoleon's elite army.
- Easy to use: Move your contents into
content
folder, define collections schema, runvelite
, 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, and any output formats by hooks.
Check out our detailed Why Velite to learn more about what makes Velite special. ✨
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
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).
- Fork it on GitHub!
- Clone the fork to your own machine.
- Checkout your feature branch:
git checkout -b my-awesome-feature
- Commit your changes to your own branch:
git commit -am 'Add some feature'
- Push your work back up to your fork:
git push -u origin my-awesome-feature
- 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!