Skip to main content
Deno 2 is finally here 🎉️
Learn more

Cav

Cav is a collection of powerful primitives for building full stack web apps with Deno. Guiding principles:

  • POLA
  • Modular, maintainable server definitions
  • No-fuss data serialization
  • Automatic end-to-end typesafety
  • Use The Platform

Status: Ready to play with, but not ready for production.

Goals

  • It should come with everything a modern web server might need, without relying on third-party services (minus the database)
    • Routing
    • Static asset serving
    • Signed cookies and JWTs
    • Web sockets
    • Form and JSON parsing / validation
    • De/serialization of most data types, including Files, Dates, Maps, etc.
    • Dev-time bundling for TypeScript assets
    • Works with frontend frameworks like Preact
  • “Hello world” should be as easy as deno running a tiny server.ts
    • Zero config
    • Zero CLI commands
  • The client-side API should use types imported from the server to fully type requests and responses
    • End-to-end typesafety
    • Compatible with Zod data parsers
  • Its syntax should be functional and declarative
    • Immutable, schema-like Router and Endpoint definitions
    • No hidden context
    • No middleware
    • No magic Yes magic 🧙‍♂️
  • Production deployments should be a simple git-commit-push
  • It should minimize the threat of supply chain attacks
    • Zero third-party dependencies

Inspirations