[v0.22.0 — pre-1.0]

The full-stack framework for GO

routing, orm, auth, cache, queues, mail, storage, and more.
One unified framework API — learn once, use across every service.

>brew install --cask velocitykode/tap/velocity
velocity new my-app
velocitykode git:(main) velocity new myapp
.
VELOCITY NEW
.
Project type: Full stack (Inertia + Vite)
Database: sqlite
Enable Inertia server-side rendering? No
.
Creating new Velocity project
Template cloned
Module configured
Git initialized
Migrations created
Environment configured
Hot reload configured
.
Installing dependencies
├─ Go dependencies done
└─ JS dependencies done
.
Building vel
Built ./vel
.
Running migrations
20010101000000_create users table
20010101000001_create cache table
20010101000002_create jobs table
.
Project ready
.
Next steps:
1. cd myapp
2. ./vel serve
App: http://localhost:4000
Vite: http://localhost:5173
[ Features ]

Everything you need, nothing you don't

Velocity is packed with production-ready features designed to accelerate your Go development

[feature]

Batteries Included

30+ built-in services working together out of the box. No hunting for packages — just start building.

·Routing·ORM·Auth·Cache·Queue·Mail·WebSocket·Routing·ORM·Auth·Cache·Queue·Mail·WebSocket
·Storage·Scheduler·Events·Validation·Notifications·HTTP Client·Crypto·Logging·Storage·Scheduler·Events·Validation·Notifications·HTTP Client·Crypto·Logging
·Broadcasting·gRPC·Middleware·Migrations·Testing·CSRF·Views·Tracing·Broadcasting·gRPC·Middleware·Migrations·Testing·CSRF·Views·Tracing
[feature]

Broadcasting

Real-time channels with WebSocket driver and presence tracking. Push events instantly.

>ws://broadcast
1.2k clients
·chat.room.1·presence.lobby·notifications
[feature]

HTTP & gRPC

Full HTTP server with gRPC support, gateway, interceptors, and health checking.

>HTTP:8080
GETPOSTPUTDELETE
>gRPC:9090
unarystream
[ spotlight ]/architecture

Driver Swapping

Database, cache, queue, storage, and mail each ship pluggable drivers, configured by environment variables. Swap backends without touching application code.

SQLitein dev,Postgresin prod.One env var.
zero refactor consistent interface env-driven config
handler.gounchanged
db := ctx.DB()
cache := ctx.Cache()
queue := ctx.Queue()
storage := ctx.Storage()
mail := ctx.Mail()
.env.development
DATABASE_DRIVER=sqlite
CACHE_DRIVER=memory
QUEUE_DRIVER=memory
STORAGE_DRIVER=local
MAIL_DRIVER=local
.env.production
DATABASE_DRIVER=postgres
CACHE_DRIVER=redis
QUEUE_DRIVER=redis
STORAGE_DRIVER=s3
MAIL_DRIVER=postmark
[ spotlight ]/data layer

Builtin ORM

Generic models with a fluent query builder. Define your schema once and query it with full type safety across PostgreSQL, MySQL, and SQLite.

Type-safequeries.Same code, three databases.
generic models fluent query builder eager loading
models/post.gotype-safe
type Post struct {
orm.Model[Post]
Title string `orm:"column:title"`
UserID uint `orm:"column:user_id"`
User *User `orm:"relation:belongsTo"`
}
handler.gofluent
posts, _ := Post{}.
Where("user_id = ?", userID).
With("User").
Get()
[ spotlight ]/security

Secure by Default

Security headers, HTTPS redirect, CORS, CSRF, and rate limiting — all built in with safe defaults. Cross-origin requests are denied until you explicitly allow them.

Default-denycross-origin.Hardened on day one.
zero config safe defaults opt-in to relax
middleware stackauto-applied
HTTPS redirect80 → 443
CORSdeny by default
CSRFdouble-submit cookie
Rate limitper-IP throttle
Security headersHSTS · CSP · X-Frame · …
HTTP/2 200 · response headers
strict-transport-security: max-age=63072000; includeSubDomains
content-security-policy: default-src 'self'
x-content-type-options: nosniff
x-frame-options: DENY
referrer-policy: strict-origin-when-cross-origin
permissions-policy: camera=(), microphone=(), geolocation=()
[feature]

Authentication

Session and JWT guards with authorization gates and policies. Protect routes with declarative middleware.

>Session and JWT guards
>Gates with policy delegation
>ORM-backed user provider
>Per-route authorization
[feature]

Queues & Jobs

Define jobs as Go structs and dispatch them to memory, Redis, or database drivers — with retries, delayed dispatch, and failed job tracking built in.

>Jobs as simple Go structs
>Memory, Redis, Database drivers
>Retries and failed job tracking
>Delayed and inline dispatch
[feature]

Events & Scheduler

Dispatch events to queued listeners and run cron-like tasks on a schedule. Automate your application lifecycle.

>Event dispatching with listeners
>Queued event handling
>Cron-like task scheduling
>Daily, weekly, custom intervals
[ Starter Kit ]

One command. Full stack. Hot reload, both sides.

The stack and the DX that engineers actually want — auth and dashboard pre-wired.

[frontend]
  • React 19with TypeScript
  • Inertia 3SSR optional
  • ViteHMR out of the box
[backend]
  • Go binaryrebuilt on every save
  • ./vel servewatches your Go code
  • SQLite or Postgrespicked at scaffold time
Go
Go
React 19
React 19
TypeScript
TypeScript
Inertia
Inertia
Vite
Vite
Register
[Register]
Sign In
[Sign In]
Dashboard
[Dashboard]
Register
[Register]
Sign In
[Sign In]
Dashboard
[Dashboard]
[ ./vel · code gen ]

One CLI. Full development loop.

./vel generates handlers, models, migrations, and jobs the way Velocity expects — then runs your dev server, queues, and migrations from the same place.

./vel · cli15 commands · 5 categories
[ generators ]
$./vel make:handler postinternal/handlers/post.go$./vel make:model userinternal/models/user.go$./vel make:migration postsdatabase/migrations/<ts>_posts.go$./vel make:job send_emailinternal/jobs/send_email.go
[ database ]
$./vel migraterun pending migrations$./vel migrate:rollbackrevert the last batch$./vel migrate:freshdrop all tables, re-run$./vel migrate:statusshow migration state
[ background ]
$./vel queue:workprocess queued jobs$./vel schedule:workrun scheduler ticks
[ server ]
$./vel servedev server with hot reload$./vel buildcompile production binary
[ inspect ]
$./vel route:listprint registered routes$./vel cache:clearflush cache stores$./vel key:generatewrite APP_KEY to .env
docsSee every ./vel command
[ pro tip ]/dotfile alias

Add this to ~/.zshrc (or ~/.bashrc) and call vel from anywhere.

>alias vel='./vel'
//// production

Production-ready features,
right out of the box

Everything you need to build, test, and deploy — no third-party packages required.

[01]

Testing

Built-in test helpers with in-memory services, type-safe model factories, fake dispatchers, and database helpers for setup and teardown.

[02]

Migrations

Fluent migration system with a table builder API, batch tracking, and rollback support. Driver-aware for PostgreSQL, MySQL, and SQLite.

[03]

Validation

Struct-based form requests and inline rules with database-aware checks. Validate once, trust everywhere.

[04]

Notifications

Multi-channel delivery to mail, database, broadcast, and Slack with one unified API. Send the same message everywhere your users are.

[05]

Encryption

AES-256-GCM with key rotation and HMAC signing helpers. Wrap secrets without rolling your own crypto.

[06]

Inertia Views

Server-driven frontends with the Inertia.js adapter and optional SSR. Build SPAs without splitting your stack into two.

[ Get Started ]

Ready to build something great?

Get started with Velocity in minutes.

>brew install --cask velocitykode/tap/velocity