Skip to content

Introduction ​

Holo-JS is a backend framework that runs inside your Next.js, Nuxt, or SvelteKit app. It gives you the server-side pieces those frameworks leave to you: a database layer and ORM, validation, authentication, queues, mail, file storage, and more.

If you have used Laravel or Rails, Holo will feel familiar: models, migrations, jobs, events, and a holo CLI that generates and runs them.

The problem Holo solves ​

Next.js, Nuxt, and SvelteKit are excellent at routing and rendering. They don't ship a database layer, a job queue, or an auth system. Most teams assemble these from separate libraries, each with its own config style, its own conventions, and its own glue code per framework.

Holo replaces that assembly work with one consistent toolkit:

  • One config/ folder and one set of .env files for every backend feature.
  • One CLI for scaffolding, migrations, workers, and maintenance.
  • Typed APIs end to end. A column you add in a migration autocompletes in your route handler.
  • The same backend code works in all three frameworks.

What Holo handles and what your framework handles ​

Holo does not replace your framework. You still write pages, layouts, and routes the way your framework expects.

Your framework handlesHolo handles
Routing and URL matchingDatabase connections, queries, and models
Page rendering, SSR, and hydrationMigrations and seeders
Route handlers, server actions, load functionsValidation and form handling
Client-side navigation and redirectsSessions, authentication, and authorization
Build output and deployment adaptersQueues, events, mail, and notifications
Cache, file storage, and media
Broadcasting and realtime queries
Config loading and .env files

In practice, you call Holo from your framework's server code. A Next.js route handler, a Nuxt event handler, and a SvelteKit load function can all run the same Post.where(...) query.

Features ​

FeatureWhat it doesDocs
DatabaseConnections, migrations, seeders, transactions, and a query builder for SQLite, Postgres, and MySQLDatabase
ORMTyped models with relationships, scopes, casts, observers, and factoriesORM
ValidationSchemas that validate input on the server and the clientValidation
FormsForm submission helpers with typed errors for each frameworkForms
SecurityCSRF protection, rate limiting, and CORSSecurity
SessionsCookie-backed sessions stored in files, the database, or RedisSessions
AuthenticationLogin, registration, email verification, password reset, MFA, API tokens, social login, WorkOS, and ClerkAuthentication
AuthorizationPolicies and abilities for deciding who can do whatAuthorization
QueuesBackground jobs with sync, database, or Redis driversQueues
EventsDomain events and listeners, optionally queuedEvents
MailMail classes, Markdown mail, previews, and SMTP deliveryMail
NotificationsSend messages over email, database, broadcast, or custom channelsNotifications
CacheKey-value cache, locks, and cached queriesCache
StorageLocal, public, and S3-compatible disksFile Storage
MediaAttach files to models, with image conversionsMedia Library
BroadcastingPush server events to browsers over WebSocketsBroadcasting
RealtimeQuery results that update in the browser when data changesRealtime Queries
CLICreate projects, generate files, run migrations and workersCLI Commands

Only the database layer is always installed. You add the rest when you need them, either when you create the project or later with npx holo install. See Installation.

Supported platforms ​

Supported
FrameworksNext.js 16.4.3+, Nuxt 4.6.2+, SvelteKit 3.1.0+ with Svelte 5.57.1+, within each major version
DatabasesSQLite, PostgreSQL, MySQL
Node.js22.18 or newer on the 22 line, 24, or 26
Package managersnpm, pnpm, Yarn, Bun
File storageLocal disk, public disk, Amazon S3 and S3-compatible services
Queue driversSync, database, Redis
Cache driversFile, memory, database, Redis

Where to go next ​

  • Quick Start: create a project and query a model in about ten minutes.
  • Tutorial: build a complete blog with auth, admin pages, uploads, and realtime updates.
  • Installation: every option for creating a project and adding packages.
  • Your framework: how Holo fits into Next.js, Nuxt, or SvelteKit.

Released under the MIT License.