jazzy
Productive, developer-friendly web framework for Nim. Write less code, build more features.
Summary
| Latest Version | 0.4.7 |
|---|---|
| License | MIT |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:27 |
Tags
Authors
- canermastan
Installation
nimble install jazzy
choosenim install jazzy
git clone https://github.com/canermastan/jazzy-framework
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| jazzy | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Dependencies
| Package | Version | Optional |
|---|---|---|
| nim >= | 2.0.0 | No |
| mummy >= | 0.4.0 | No |
| jwt >= | 0.1.0 | No |
| nimcrypto >= | 0.5.4 | No |
| tiny_sqlite >= | 0.2.0 | No |
Source
| Repository | https://github.com/canermastan/jazzy-framework |
|---|---|
| Homepage | https://github.com/canermastan/jazzy-framework |
| Registry Source | nimble_official |
README
🎷 Jazzy Framework
Write Less Code, Build More Features.
The Productive Framework. Developer-friendly, lightning fast, and designed for rapid development.
THE POWER SNIPPET
See how easy it is to validate input, save to the database, and return a response.
proc createTodo*(ctx: Context) {.async.} =
# 1. VALIDATE (Automatic 422 on failure)
let data = ctx.validate(%*{
"title": "required|min:3",
"priority": "int|between:1,5"
})
# 2. DATABASE (Fluent API)
let id = DB.table("todos").insert(%*{
"title": data["title"].getStr,
"priority": data["priority"].getInt,
"completed": 0
})
# 3. RESPONSE
ctx.status(201).json(%*{"id": id, "status": "created"})
EVERYTHING YOU NEED TO SHIP IT
Jazzy comes batteries-included so you can focus on your product, not the plumbing.
- ⚡ Lightning Fast: Powered by
Mummy, keeping your app blazing fast. - 🛡️ Built-in Auth: JWT Authentication and Middleware ready to go.
- 💾 Fluent ORM: A lightweight, expressive query builder.
- ✅ Validation: Declarative validation rules (Laravel style).
- ⚙️ Zero Config: Auto-loads
.envand just works.
QUICK START
nimble install jazzy
app.nim
import jazzy
proc home(ctx: Context) =
ctx.text("Hello Jazzy!")
Route.get("/", home)
Jazzy.serve(8080)
Run it:
nim c -r app.nim
FEATURES IN DEPTH
1. DATABASE
Jazzy makes database interactions trivial.
connectDB("app.db")
# Fetch
let users = DB.table("users").where("active", 1).get()
# First
let user = DB.table("users").where("id", 5).first()
# Insert
DB.table("logs").insert(%*{"level": "info", "msg": "Login"})
2. ROUTING & GROUPS
Organize your routes cleanly. Secure them with middleware easily.
Route.groupPath("/api/v1", guard):
Route.get("/todos", listTodos) # required bearer token
Route.post("/todos", createTodo) # required bearer token
Route.delete("/todos/:id", deleteTodo) # required bearer token
3. AUTHENTICATION
Secure your app in minutes.
# Login
let token = ctx.login(%*{"id": 1, "role": "admin"})
# Protect
if ctx.check():
echo "User is logged in!"
Basic Auth
Jazzy supports Basic Auth via the basicAuthGuard middleware.
Add credentials to your .env file:
BASIC_AUTH_USER=admin
BASIC_AUTH_PASSWORD=secret123
Then use the basicAuthGuard middleware on routes that need protection:
Route.groupPath("/admin", basicAuthGuard):
Route.get("/", admin_controller.index)
4. CONFIGURATION
Jazzy automatically reads your .env file.
JWT_SECRET=my-secret-key
let secret = getConfig("JWT_SECRET")
⭐️ Star History
Jazzy pays the boilerplate tax so you don't have to.
Made with ❤️ by the Jazzy Team.