v0.5.3 is now live!
Write Less Code,
Build More Features.
The Productive Framework. Developer-friendly, lightning fast, and designed for rapid development.
Nim Lang
Type Safe
Batteries Included
user_controller.nim
|Everything you need to ship it.
🚀 The 1-Minute Challenge: From "jazzy new" to a secured API in
less than 60 seconds.
Built-in Authentication
Tired of writing Auth? Registration, login, and profile
management ready out-of-the-box. Secure JWT included.
Automatic Data Validation
Secure data, clean code. Auto-validate JSON/Form requests before
they even reach your controller.
SQLite + PostgreSQL
One await-first API, versioned migrations, a typed ORM, and
portable CRUD from local SQLite to production PostgreSQL.
Scaffolding CLI
Start with `jazzy new`, then create reviewable migrations and
seeders from the CLI instead of hand-wiring project setup.
High-Performance Async
Security at speed. Powered by Mummy, featuring fully async
middleware for CORS, Logging, and custom guards.
Developer-First Errors
Debug without the pain. Standardized, cleaner JSON error
responses that your frontend developers will love.
Authentication? It's built-in.
Secure, session-less JWT authentication built right into the core. No external libraries needed.
AuthController.nim
proc login*(ctx: Context) {.async.} =
let user = DB.table("users").where("email", ctx.input("email")).first()
if not user.isNull() and verifyPassword(ctx.input("password"), user.getString("password")):
let token = ctx.login(user)
ctx.json(%*{"token": token, "message": "Welcome!"})
else:
ctx.status(401).json(%*{"error": "Invalid credentials"})Member Login
Email
Password
Validation? Just define rules.
Expressive and modern validation syntax. Define your rules, let Jazzy handle the rest.
PostController.nim
proc createPost(ctx: Context) {.async.} =let data = ctx.validate(%*{ "title": "required|min:3", "status": "in:draft,published" })# Logic... echo data.getString("title")
New Post
Title
required|min:3
A database workflow, not just a query builder.
Configure once in .env, migrate safely, model your
data, then ship awaited CRUD. SQLite and PostgreSQL keep the same
developer experience.
THE DATABASE PATH
Config to production API
.env ready
DB_CONNECTION=postgres
DATABASE_URL=postgresql://jazzy:•••@db:5432/app
DB_POOL_MIN=1
DB_POOL_MAX=1STEP 01
Configure
One driver switch. No connection boilerplate.
DriverSQLite ↔ PostgreSQL
Public APIawait-first
Migrationstransactional
Built with Jazzy
See what our community is building.