We don't ship it?
Build it yourself.
A pack is a folder with a manifest.json and your source files. Write one, install it into any Hype Stack project from a directory, a git repo, or npm. Same format we use for ours.
A folder, a manifest, and your code.
Declare where files go
Each entry has a source and a target written as a path template, like {{frontend.features}}, so your pack lands correctly in a project laid out differently from yours.
Declare how it wires in
A backend route, a sidebar entry, an env var, a settings tab. Twenty fields, each one patching a known file at install time.
Install it anywhere
One command takes a folder, a git ref, or an npm version. The pack goes through the same installer our own packs do.
{
"$schema": "https://www.hype-stack.dev/schema/pack-manifest-v1.json",
"name": "pack-analytics",
"version": "1.0.0",
"displayName": "Analytics",
"description": "Page view tracking with a dashboard widget",
"category": "feature",
"dependencies": ["starter-saas-workos"],
"files": [
{
"source": "files/frontend/src/features/analytics",
"target": "{{frontend.features}}/analytics",
"strategy": "create"
}
],
"nav": [
{ "group": "primary", "label": "Analytics", "icon": "BarChart3", "to": "/analytics" }
]
}Your feature.
Our installer.
Dependency resolution, overwrite prompts, npm installs, database migrations. A pack you wrote gets all of it.
A manifest, a files/ tree, and a README that already validates.
Catches the silent one: a file sitting in files/ that no manifest entry declares never gets copied.
Into a real project, through the same installer our packs use.
Ship it however you already ship things.
There is no registry to submit to and no review to wait on. Push the folder somewhere and people install it directly.
A folder
while you write it
./pack-analytics
A git repo
pinned to a tag
github:you/pack#v1.0.0
npm
versioned like anything else
npm:@you/pack-analytics
the cli records where each one came from, in stack.json
Copying files is rarely enough.
Declare a route, a nav entry, an env var, a scheduled job, an admin widget. The CLI patches the right file at install time, and re-running never duplicates an entry.
A pack is data, not a plugin.
There is no hook file, no install script, no lifecycle callback. Everything a pack asks for is declared in JSON and carried out by the CLI, so installing one from a stranger runs none of their code.
what the pack ships
- manifest.json
- source files
what runs it
- the Hype Stack CLI
- on your machine
the guarantee, not a setting
2
Things a pack has to contain
A manifest.json and a files/ directory. There is no build step and nothing to compile.
manifest.jsonfiles/20
Places a manifest can wire into the app
Routes, sockets, nav, env, jobs, permissions, settings tabs, admin widgets. All declarative.
10 frontend5 backend3 admin2 shared0
Lines of your code that run on their machine
A pack is data. The CLI is what acts on it, so installing a stranger's pack executes nothing they wrote.
install scriptslifecycle hooksdeclarative json
Your pack can own database tables too.
Drop a .prisma file into the schema directory and the CLI offers to generate the migration in that project, against its own history. It refuses first if a model name is already taken, naming both packs, before anything is written.
Feature packs to grow with
Every pack ships real source code: frontend, backend, and admin surfaces where the feature needs them. Add them when you need them, one command each.
Two ways to install features
Same features underneath, different starting point. Either command resolves what the packs depend on, copies the source into your repository, and merges the database schema.
Take a template
A landing page, a design system, a themed layout, and the features already wired into it. Rebrand it, put your product in the middle, ship.
$ hype-stack compose
Compose your own design
Your design and your choices, without rebuilding auth, billing, or notifications. Tick the packs you want and the CLI wires them into the open-source starter.
Questions, answered
Start with one command.
Scaffold a pack that already validates, fill in your code, and install it into a project you have open.
a folder / a manifest / your code