https://github.com/vanengine/van
A Vue-style server-side template engine for any framework.
https://github.com/vanengine/van
pebble server-side-rendering template-engine template-engine-html twig vue
Last synced: 25 days ago
JSON representation
A Vue-style server-side template engine for any framework.
- Host: GitHub
- URL: https://github.com/vanengine/van
- Owner: vanengine
- License: mit
- Created: 2026-02-24T15:17:17.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-02-27T11:34:47.000Z (about 2 months ago)
- Last Synced: 2026-02-27T11:36:00.848Z (about 2 months ago)
- Topics: pebble, server-side-rendering, template-engine, template-engine-html, twig, vue
- Language: Rust
- Homepage: https://vanengine.dev
- Size: 115 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Van
Language-agnostic template engine with Vue syntax
Server-side HTML rendering · Signal-based client interactivity · WASM-powered
Features ·
Installation ·
Usage ·
Example
---
## Features
- **Vue Syntax** — Write templates with familiar ``, ``, `<style scoped>` blocks
- **Signal-based Reactivity** — Lightweight client-side interactivity with direct DOM updates (~4KB runtime)
## Installation
**One-line install** (Linux / macOS):
```bash
curl -fsSL https://raw.githubusercontent.com/vanengine/van/main/install.sh | sh
```
**Manual download**: grab the latest `van-*` binary from [GitHub Releases](https://github.com/vanengine/van/releases) and place it in your `PATH`.
## Usage
```bash
van init my-project # Scaffold a new Van project
van dev # Start dev server with hot reload
van generate # Static site generation
```
### Framework Integration
Van compiles `.van` files to HTML via a WASM binary — integrate with multiple backends:
- **Spring Boot** — [van-spring-boot-starter](https://github.com/van-java/van-spring-boot-starter)
## Example
```vue
<template>
<h1>{{ title }}</h1>
<button @click="count++">Clicked {{ count }} times</button>
</template>
<script setup>
let count = 0
h1 { color: steelblue; }
```
Server-side `{{ title }}` is interpolated by the host framework; `count` becomes a reactive signal with automatic DOM updates on the client.
## Related
- [**van-spring-boot-starter**](https://github.com/van-java/van-spring-boot-starter) — Spring Boot integration
## License
[MIT](LICENSE)