compiler-first framework · v0.2.92

Build once.
Compile everywhere.

Vesk is a compiler-first framework. Write one modern component model, and its compiler transforms your code into optimized web and native Kotlin applications — never a wrapped WebView.

$ npx create-vesk@latest my-app
cd my-app
npm install
npm run dev
compiler pipeline
app.vsk source
↓
vesk compiler preprocess · parse · ir · codegen
↓
web
kotlin native
output → .vesk/ v0.2.92

01 write → understand → compile → ship

The compiler reads your intent.

A .vsk component is parsed, checked for semantics the target can honour, then lowered into platform code. Same source, two honest outputs.

About.vsk source
									
										component About {
  <div class="max-w-3xl mx-auto px-4 py-14">
    <h1 class="text-3xl font-semibold text-ink">About Vesk</h1>
    <p class="text-muted">Some text here.</p>
  </div>
}
									
								
compiled
									
										<div class="max-w-3xl mx-auto px-4 py-14"><h1 class="text-3xl font-semibold text-ink">About Vesk</h1><p class="text-muted">Some text here.</p></div>
									
								
·preprocess ·parse ·ir ·codegen …

If Vesk cannot preserve the semantics of your component on a target, the build fails — it never silently ships different behaviour.

02 the philosophy

Why Vesk exists.

01

Compiler first

Guarantees move from runtime to build time. Less shipped abstraction, more known-good output.

02

One development model

A single component and styling model across targets — no per-platform rewrites of the same screen.

03

Native applications

Vesk Native compiles toward native Kotlin rather than wrapping a web app inside a WebView.

04

Developer experience

Modern tooling, fast feedback, HMR, Tailwind utilities, icons and motion primitives you already know.

05

Performance

The compiler produces optimized platform output instead of carrying a runtime abstraction along.

06

Safety

When semantics can't be preserved on a target, the compiler fails the build. Silence is the bug.

03 vesk native

Build native apps with the tools you already love.

Write the same Vesk components you write for the web. Vesk Native compiles them toward Kotlin application targets — real native views, real platform APIs, Material 3 defaults.

Android Native Kotlin Material 3 Tailwind utilities Motion-style animation Native APIs Fast dev workflow
Explore Vesk Native →
vesk native · preview 360 × 740
9:41 ▮▮▮

Entries

All Notes Tasks
  • project-aurora note · 2.1 kB
  • todo-backlog task · 1.3 kB
  • meeting-notes note · 1.8 kB
  • field-log note · 954 B
entries tags settings
Entries.vsk → Entries.kt compiled · 2.1 kB

04 compiler architecture

The compiler is the product.

Four stages, no hidden runtime. Select a stage to see what happens to your code inside it.

stage detail

IR Generation

The AST becomes a flat intermediate representation — statement-mode control flow is dispatched, blocks are validated, <style> text is extracted to the component.

preprocess → parse → ir → codegen

05 web + native

One development experience. Different targets.

Not "write once, run anywhere". Vesk preserves the semantics of your source application and emits output that is appropriate for each platform it targets.

target graph
vesk
web
web platform

DOM · CSS · ESM

native
kotlin

Compose · Material 3

06 features

What ships in the box.

Compiler-first architecture

Build-time guarantees over runtime cost.

.vsk components

Markup, styling and logic in one unit.

TypeScript

Typed logic and typed component contracts.

Tailwind CSS

The same utility model on web and native.

Vesk Native

Compile toward native Kotlin targets.

Animation primitives

Motion-style transitions, compiled.

Hot Module Replacement

Sub-second feedback while you build.

npm compatibility

Use the ecosystem you already depend on.

Compile-time validation

Unsupported semantics fail the build.

Production builds

Optimized output per platform target.

Developer tooling

CLI, diagnostics and build inspection.

Native APIs

Platform capabilities without escape hatches.

07 developer experience

The loop is the point.

One command to start. Compiler diagnostics in the terminal, hot module replacement in the browser, and the same project compiling toward native without a second toolchain.

start
1 command
dev server
:3000
targets
web + kotlin
vesk — zsh

08 documentation

Documentation is part of the product.

Concepts first, then reference. Every compiler behaviour, diagnostic and native capability is written down — not inferred from example projects.

Read the Documentation →

ecosystem · built on what you know

TypeScript
typed logic
Tailwind
styling model
npm
packages
Material 3
native design
Kotlin
native target
Motion
animation model

Vesk is designed to work with technologies developers already understand rather than forcing an entirely foreign ecosystem.

09 showcase

Built with Vesk.

Web 01

Aurora Console

Operations dashboard for a deployment platform, compiled to the web target.

TypeScript · Tailwind 48 kB shipped
View project →
Android 02

Fieldbook

Offline-first field notes app compiled toward native Kotlin with Material 3.

Vesk Native · Kotlin cold start 240 ms
View project →
Web + Native 03

Signal Docs

Documentation site sharing the same component library as its native companion.

One codebase 2 targets, 1 model
View project →
Build something with Vesk

10 roadmap

Ambitious, and honest about it.

Now

in progress
  • ● Core compiler
  • ● Vesk Native
  • ● Developer tooling
  • ● Documentation

Next

planned
  • ○ Improved HMR
  • ○ More native APIs
  • ○ Package ecosystem
  • ○ Build diagnostics

Future

exploring
  • ○ Additional platforms
  • ○ Advanced compiler optimizations
  • ○ Larger ecosystem
  • ○ Production-scale tooling

The next generation of application development starts with the compiler.

Build for the web. Build for native. Let Vesk handle the translation.