Modern, performant, optimized for DX/AX. Develop powerful apps, clouds & framework-agnostic libraries—faster.
See the code
[!NOTE] Stacks is in active development and usable today — every section below is real, runnable functionality. Expect occasional breaking changes while we cut the official 1.0. Feedback and issue reports are welcome.
Stacks is a rapid development framework, where the goal is to help you create & maintain frontends, backends, and clouds—without having to worry about the boilerplate. An all-in-one toolkit that meets all your full stack needs.
Open the interactive diagram for a theme toggle, node search, route tracing, presentation mode, and SVG, PNG, JPEG, WebP and share-card exports.
As a developer, Stacks helps you every step along the way—in beginner & expert-friendly ways, allowing you to focus on the what & why of your project, all while enabling you to stay in control & ownership of your (& your users’) data.
“It is the framework’s responsibility to remove patterns that lead to boilerplate code. And Stacks is really good at that.” - Chris
Stacks uses Pantry to provision Bun, Git, SQLite, and the project-specific tools declared by the framework. You'll need:
curl -fsSL https://pantry.dev | bash, then run pantry bootstrap once to configure your shell.Pantry installs and pins Bun 1.4.2 for this Stacks workspace, then keeps the rest of the machine and project dependencies in sync. Features such as PostgreSQL, Redis, and cloud deployment add their requirements through the same Pantry manifest where possible, with feature-specific configuration documented alongside them.
Stacks pins Pantry v0.11.50
as an external toolchain contract. Resolution sources, lockfile and integrity
rules, lifecycle trust, registry routes, authentication, storage, and failure
modes are documented in the source-linked whitepaper references for the
package manager and
registry. Stacks does not
redefine those behaviors.
A Codespace provisions Pantry, installs dependencies, runs buddy setup and
forwards the dev ports, so ./buddy dev works on first open. Nothing to
install locally.
The fastest path after Pantry is installed:
panx buddy new my-project
Pantry executes Buddy in an isolated environment and provisions the generated project's declared toolchain during setup.
From there: the documentation, the Buddy command reference, and the agent skills that teach Claude Code, Codex, and Cursor how each subsystem works.
For frontend experiments in the browser, open the live stx starter:
Stacks ships with buddy, a single CLI for everything you'll do day to day. The handful below covers the common workflows; the full reference is collapsed underneath.
buddy dev # start the dev server (frontend, API, dashboard, …)
buddy build # build for production (CLI prompts for what to build)
buddy test # run tests
buddy migrate # run database migrations
buddy make:action UpdateUser # scaffold a new Action (also: model, view, job, …)
buddy --help # show every available command
For the full command reference, see the collapsible section below or the Buddy CLI documentation.
buddy --version # get the Stacks version
buddy --help # view help menu
# please note: you may suffix any command with the
# `command --help` flag to review the help menu
buddy new my-project # creates a new Stacks project
buddy install # installs dependencies
buddy add calendar # pulls a registered project-shaped stack into this project
buddy fresh # fresh reinstall of all deps (--force skips the confirmation)
buddy clean # removes all deps (--force skips the confirmation)
buddy setup # sets up the project initially
buddy setup:oh-my-zsh # optional: sets up Oh My Zsh with auto-completions & "aliases"
buddy upgrade # upgrades the Stacks framework (alias: buddy update)
buddy upgrade:dependencies # auto-upgrades package.json deps
buddy upgrade:shell # upgrades the shell integration
buddy upgrade:binary # upgrades the `stacks` binary
buddy upgrade:bun # upgrades to latest project-defined Bun version
buddy upgrade:all # auto-upgrades all of the above
# if you need any more info on any command listed here, you may suffix
# any of them via the "help option", i.e. `buddy ... --help`
buddy dev # starts the dev servers (frontend, api & docs)
buddy dev -i # prompts you to select which dev server to start
buddy dev:api # starts the API dev server
buddy dev:dashboard # starts the Admin/Dashboard dev server
buddy dev:desktop # starts the Desktop dev server
buddy dev:views # starts frontend dev server
buddy dev:components # starts component dev server
buddy dev:docs # starts local docs dev server
buddy dev docs # also starts the local docs dev server (dev takes the server name as an argument)
buddy share # creates a sharable link to your local project
# production servers (the same entries the deploy target runs as services)
buddy serve # starts the production HTTP server (STX views + /api proxy)
buddy serve:api # starts the production API server
# building for production (e.g. AWS, Google Cloud, npm, Vercel, Netlify, et al.)
buddy build # select a specific build (follow CLI prompts)
buddy build:frontend # builds the frontend (aliases: build:views, build:pages)
buddy build:desktop # builds Desktop application
buddy build:mobile # builds both native iOS and Android applications
buddy build:ios # builds the native iOS application
buddy build:android # builds the native Android application
buddy build:functions # builds function library
buddy build:components # builds the STX component library and Web Component library
buddy build:web-components # builds framework agnostic Web Component library (i.e. Custom Elements)
buddy build:cli # builds the Buddy CLI binary
buddy build:server # builds the Stacks cloud server (Docker image)
buddy build:docs # builds the documentation site
# `buddy build:*` aliases
buddy prod:components # alias for build:components
buddy prod:desktop # alias for build:desktop
buddy prod:mobile # alias for build:mobile
buddy prod:ios # alias for build:ios
buddy prod:android # alias for build:android
buddy prod:web-components # alias for build:web-components
buddy prod:frontend # alias for build:frontend
buddy prod:cli # alias for build:cli
buddy prod:server # alias for build:server
buddy prod:docs # alias for build:docs
buddy prod:frontend-static # alias for build:frontend-static
# sets your application key
buddy key:generate
buddy make:component HelloWorld # bootstraps a HelloWorld component
buddy make:function hello-world # bootstraps a hello-world function
buddy make:view hello-world # bootstraps a hello-word page
buddy make:model Car # bootstraps a Car model
buddy make:database cars # prints guidance: tables come from models + migrations, there is no separate create step
buddy make:migration create_cars_table # creates a cars migration file
buddy make:factory cars # creates a Car factory file
buddy make:notification welcome-email # bootstraps a welcome-email notification
buddy make:lang de # bootstraps a lang/de.yml language file
buddy make:stack my-plugin # scaffolds a project-shaped registry stack (new project? use `panx buddy new`)
buddy migrate # runs database migrations
buddy migrate:fresh # drops all tables & re-runs migrations (destroys all data; --seed reseeds)
buddy dns:pull # prints the live zone as a ./config/dns.ts block
buddy seed # runs database seeders
buddy dns example.com # list all DNS records for example.com
buddy dns example.com --type MX # list MX records for example.com
buddy http example.com/api/hello # sends a GET request & prints the response
buddy http -v example.com/api/get # same, with verbose output
buddy lint # runs linter
buddy lint:fix # runs linter and fixes issues
buddy format # formats your project codebase
buddy format:check # checks formatting without making changes
buddy commit # follow CLI prompts for committing staged changes
buddy release # creates the releases for the stack & triggers the Release Action (workflow)
buddy changelog # generates CHANGELOG.md
# when deploying your app/s to a remote server or cloud provider
buddy deploy # select a specific deployment (follow CLI prompts)
buddy undeploy # be careful: "undeploys" removes/deletes your deployed resources (--yes skips the confirmation)
buddy cloud:remove # removes cloud setup
buddy cloud:cleanup # removes cloud setup & cleans up all potentially leftover resources
buddy cloud:add --jump-box # adds a jump box to your cloud setup
# you likely won’t need to run these commands as they are auto-triggered, but they are available
buddy generate # prompts you to select which generator to run
buddy generate:types # generates types for your components, functions, & views
buddy generate:entries # generates entry files for components, functions, & views
buddy generate:web-types # generates Web Component types
buddy generate:vscode-custom-data # generates VSCode custom data
buddy generate:ide-helpers # generates IDE helpers
buddy generate:component-meta # generates component meta
# generates your application key
buddy key:generate # generates your application key
# manage your environment variables
buddy env:get # get an environment variable
buddy env:set # set an environment variable
buddy env:encrypt # encrypt an environment variable
buddy env:decrypt # decrypt an environment variable
buddy env:keypair # generate a keypair
buddy env:rotate # rotate a keypair
# generate your TypeScript declarations
buddy types:generate # generates types for your components, functions, & views
buddy types:fix # auto-fixes types for your components, functions, & views
buddy domains:add stacksjs.com # adds a domain
buddy domains:remove stacksjs.com # removes a domain
buddy domains:purchase stacksjs.com # purchase a new domain
# handy utilities
buddy doctor # runs health checks on your Stacks installation
buddy list # lists all available Buddy commands
buddy route:list # lists your routes
buddy ports # checks your project for port issues & misconfigurations
buddy outdated # lists outdated project dependencies
buddy env:check # checks your environment configuration & validates setup
buddy tinker # interactive REPL with the Stacks framework preloaded
buddy down # puts the app into maintenance mode
buddy up # brings the app out of maintenance mode
# test your stack
buddy test # runs your test suite
buddy test:unit # runs unit tests
buddy test:feature # runs feature tests
buddy test:types # runs typecheck
# the published @stacksjs/buddy package ships
# `buddy`, `bud`, & `stx` bins; inside this repo
# the CLI is invoked as ./buddy
./buddy fresh
Read more about the Buddy CLI in the official docs: every command, every flag, every prompt explained.
The Stacks framework is a harmony of several “engines” to build any web and/or desktop application, in highly scalable & privacy-friendly ways. It consists of the following engines:
Develop dynamic UIs with helpers for atomic design, and much more.
Develop serverless (or server) functions with countless helpers to build scalable & fast APIs.
Develop & maintain cloud infrastructure with ease. “Imagine Vercel, Vapor and Forge having been unified.”
Focus on coding, not publishing.
Convention over configuration, while staying wholly configurable. No more boilerplate.
node_modulesNo matter whether you are a beginner or an expert, the approachable Stacks design allows you to learn at your own pace, using our thorough documentation covering every aspect of the framework. Stacks is extremely beginner & expert-friendly.
Develop beautiful, reactive, composable UIs without learning a new set of languages. HTML, CSS, and minimal JavaScript—that’s all you need to dive in now! Or TypeScript ✌🏼
An actual rapid application development framework for all Full Stack needs. Next-level simplicity & DX.
./buddy test
Please see our releases page for more information on what has changed recently.
Please see the Contributing Guide for details.
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
For casual chit-chat with others using this package:
Join the Stacks Discord Server
To hear when 1.0 lands, leave your email at stacksjs.com. The site is in its pre-launch state, so that signup is currently the shortest path to being told when something changes.
“Software that is free, but hopes for a postcard.” We love receiving postcards from around the world showing where Stacks is being used! We showcase them on our website too.
Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States 🌎
We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.
And a special thanks to Dan Scanlon for donating the stacks name on npm ✨
The MIT License (MIT). Please see LICENSE for more information.
Made with 💙
40,596 followers · starred Sep 2023
2,722 followers · starred Aug 2023
293 followers · starred Oct 2023
4,072 followers · starred Dec 2024
Modern, performant, optimized for DX/AX. Develop powerful apps, clouds & framework-agnostic libraries—faster.
See the code
[!NOTE] Stacks is in active development and usable today — every section below is real, runnable functionality. Expect occasional breaking changes while we cut the official 1.0. Feedback and issue reports are welcome.
Stacks is a rapid development framework, where the goal is to help you create & maintain frontends, backends, and clouds—without having to worry about the boilerplate. An all-in-one toolkit that meets all your full stack needs.
Open the interactive diagram for a theme toggle, node search, route tracing, presentation mode, and SVG, PNG, JPEG, WebP and share-card exports.
As a developer, Stacks helps you every step along the way—in beginner & expert-friendly ways, allowing you to focus on the what & why of your project, all while enabling you to stay in control & ownership of your (& your users’) data.
“It is the framework’s responsibility to remove patterns that lead to boilerplate code. And Stacks is really good at that.” - Chris
Stacks uses Pantry to provision Bun, Git, SQLite, and the project-specific tools declared by the framework. You'll need:
curl -fsSL https://pantry.dev | bash, then run pantry bootstrap once to configure your shell.Pantry installs and pins Bun 1.4.2 for this Stacks workspace, then keeps the rest of the machine and project dependencies in sync. Features such as PostgreSQL, Redis, and cloud deployment add their requirements through the same Pantry manifest where possible, with feature-specific configuration documented alongside them.
Stacks pins Pantry v0.11.50
as an external toolchain contract. Resolution sources, lockfile and integrity
rules, lifecycle trust, registry routes, authentication, storage, and failure
modes are documented in the source-linked whitepaper references for the
package manager and
registry. Stacks does not
redefine those behaviors.
A Codespace provisions Pantry, installs dependencies, runs buddy setup and
forwards the dev ports, so ./buddy dev works on first open. Nothing to
install locally.
The fastest path after Pantry is installed:
panx buddy new my-project
Pantry executes Buddy in an isolated environment and provisions the generated project's declared toolchain during setup.
From there: the documentation, the Buddy command reference, and the agent skills that teach Claude Code, Codex, and Cursor how each subsystem works.
For frontend experiments in the browser, open the live stx starter:
Stacks ships with buddy, a single CLI for everything you'll do day to day. The handful below covers the common workflows; the full reference is collapsed underneath.
buddy dev # start the dev server (frontend, API, dashboard, …)
buddy build # build for production (CLI prompts for what to build)
buddy test # run tests
buddy migrate # run database migrations
buddy make:action UpdateUser # scaffold a new Action (also: model, view, job, …)
buddy --help # show every available command
For the full command reference, see the collapsible section below or the Buddy CLI documentation.
buddy --version # get the Stacks version
buddy --help # view help menu
# please note: you may suffix any command with the
# `command --help` flag to review the help menu
buddy new my-project # creates a new Stacks project
buddy install # installs dependencies
buddy add calendar # pulls a registered project-shaped stack into this project
buddy fresh # fresh reinstall of all deps (--force skips the confirmation)
buddy clean # removes all deps (--force skips the confirmation)
buddy setup # sets up the project initially
buddy setup:oh-my-zsh # optional: sets up Oh My Zsh with auto-completions & "aliases"
buddy upgrade # upgrades the Stacks framework (alias: buddy update)
buddy upgrade:dependencies # auto-upgrades package.json deps
buddy upgrade:shell # upgrades the shell integration
buddy upgrade:binary # upgrades the `stacks` binary
buddy upgrade:bun # upgrades to latest project-defined Bun version
buddy upgrade:all # auto-upgrades all of the above
# if you need any more info on any command listed here, you may suffix
# any of them via the "help option", i.e. `buddy ... --help`
buddy dev # starts the dev servers (frontend, api & docs)
buddy dev -i # prompts you to select which dev server to start
buddy dev:api # starts the API dev server
buddy dev:dashboard # starts the Admin/Dashboard dev server
buddy dev:desktop # starts the Desktop dev server
buddy dev:views # starts frontend dev server
buddy dev:components # starts component dev server
buddy dev:docs # starts local docs dev server
buddy dev docs # also starts the local docs dev server (dev takes the server name as an argument)
buddy share # creates a sharable link to your local project
# production servers (the same entries the deploy target runs as services)
buddy serve # starts the production HTTP server (STX views + /api proxy)
buddy serve:api # starts the production API server
# building for production (e.g. AWS, Google Cloud, npm, Vercel, Netlify, et al.)
buddy build # select a specific build (follow CLI prompts)
buddy build:frontend # builds the frontend (aliases: build:views, build:pages)
buddy build:desktop # builds Desktop application
buddy build:mobile # builds both native iOS and Android applications
buddy build:ios # builds the native iOS application
buddy build:android # builds the native Android application
buddy build:functions # builds function library
buddy build:components # builds the STX component library and Web Component library
buddy build:web-components # builds framework agnostic Web Component library (i.e. Custom Elements)
buddy build:cli # builds the Buddy CLI binary
buddy build:server # builds the Stacks cloud server (Docker image)
buddy build:docs # builds the documentation site
# `buddy build:*` aliases
buddy prod:components # alias for build:components
buddy prod:desktop # alias for build:desktop
buddy prod:mobile # alias for build:mobile
buddy prod:ios # alias for build:ios
buddy prod:android # alias for build:android
buddy prod:web-components # alias for build:web-components
buddy prod:frontend # alias for build:frontend
buddy prod:cli # alias for build:cli
buddy prod:server # alias for build:server
buddy prod:docs # alias for build:docs
buddy prod:frontend-static # alias for build:frontend-static
# sets your application key
buddy key:generate
buddy make:component HelloWorld # bootstraps a HelloWorld component
buddy make:function hello-world # bootstraps a hello-world function
buddy make:view hello-world # bootstraps a hello-word page
buddy make:model Car # bootstraps a Car model
buddy make:database cars # prints guidance: tables come from models + migrations, there is no separate create step
buddy make:migration create_cars_table # creates a cars migration file
buddy make:factory cars # creates a Car factory file
buddy make:notification welcome-email # bootstraps a welcome-email notification
buddy make:lang de # bootstraps a lang/de.yml language file
buddy make:stack my-plugin # scaffolds a project-shaped registry stack (new project? use `panx buddy new`)
buddy migrate # runs database migrations
buddy migrate:fresh # drops all tables & re-runs migrations (destroys all data; --seed reseeds)
buddy dns:pull # prints the live zone as a ./config/dns.ts block
buddy seed # runs database seeders
buddy dns example.com # list all DNS records for example.com
buddy dns example.com --type MX # list MX records for example.com
buddy http example.com/api/hello # sends a GET request & prints the response
buddy http -v example.com/api/get # same, with verbose output
buddy lint # runs linter
buddy lint:fix # runs linter and fixes issues
buddy format # formats your project codebase
buddy format:check # checks formatting without making changes
buddy commit # follow CLI prompts for committing staged changes
buddy release # creates the releases for the stack & triggers the Release Action (workflow)
buddy changelog # generates CHANGELOG.md
# when deploying your app/s to a remote server or cloud provider
buddy deploy # select a specific deployment (follow CLI prompts)
buddy undeploy # be careful: "undeploys" removes/deletes your deployed resources (--yes skips the confirmation)
buddy cloud:remove # removes cloud setup
buddy cloud:cleanup # removes cloud setup & cleans up all potentially leftover resources
buddy cloud:add --jump-box # adds a jump box to your cloud setup
# you likely won’t need to run these commands as they are auto-triggered, but they are available
buddy generate # prompts you to select which generator to run
buddy generate:types # generates types for your components, functions, & views
buddy generate:entries # generates entry files for components, functions, & views
buddy generate:web-types # generates Web Component types
buddy generate:vscode-custom-data # generates VSCode custom data
buddy generate:ide-helpers # generates IDE helpers
buddy generate:component-meta # generates component meta
# generates your application key
buddy key:generate # generates your application key
# manage your environment variables
buddy env:get # get an environment variable
buddy env:set # set an environment variable
buddy env:encrypt # encrypt an environment variable
buddy env:decrypt # decrypt an environment variable
buddy env:keypair # generate a keypair
buddy env:rotate # rotate a keypair
# generate your TypeScript declarations
buddy types:generate # generates types for your components, functions, & views
buddy types:fix # auto-fixes types for your components, functions, & views
buddy domains:add stacksjs.com # adds a domain
buddy domains:remove stacksjs.com # removes a domain
buddy domains:purchase stacksjs.com # purchase a new domain
# handy utilities
buddy doctor # runs health checks on your Stacks installation
buddy list # lists all available Buddy commands
buddy route:list # lists your routes
buddy ports # checks your project for port issues & misconfigurations
buddy outdated # lists outdated project dependencies
buddy env:check # checks your environment configuration & validates setup
buddy tinker # interactive REPL with the Stacks framework preloaded
buddy down # puts the app into maintenance mode
buddy up # brings the app out of maintenance mode
# test your stack
buddy test # runs your test suite
buddy test:unit # runs unit tests
buddy test:feature # runs feature tests
buddy test:types # runs typecheck
# the published @stacksjs/buddy package ships
# `buddy`, `bud`, & `stx` bins; inside this repo
# the CLI is invoked as ./buddy
./buddy fresh
Read more about the Buddy CLI in the official docs: every command, every flag, every prompt explained.
The Stacks framework is a harmony of several “engines” to build any web and/or desktop application, in highly scalable & privacy-friendly ways. It consists of the following engines:
Develop dynamic UIs with helpers for atomic design, and much more.
Develop serverless (or server) functions with countless helpers to build scalable & fast APIs.
Develop & maintain cloud infrastructure with ease. “Imagine Vercel, Vapor and Forge having been unified.”
Focus on coding, not publishing.
Convention over configuration, while staying wholly configurable. No more boilerplate.
node_modulesNo matter whether you are a beginner or an expert, the approachable Stacks design allows you to learn at your own pace, using our thorough documentation covering every aspect of the framework. Stacks is extremely beginner & expert-friendly.
Develop beautiful, reactive, composable UIs without learning a new set of languages. HTML, CSS, and minimal JavaScript—that’s all you need to dive in now! Or TypeScript ✌🏼
An actual rapid application development framework for all Full Stack needs. Next-level simplicity & DX.
./buddy test
Please see our releases page for more information on what has changed recently.
Please see the Contributing Guide for details.
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
For casual chit-chat with others using this package:
Join the Stacks Discord Server
To hear when 1.0 lands, leave your email at stacksjs.com. The site is in its pre-launch state, so that signup is currently the shortest path to being told when something changes.
“Software that is free, but hopes for a postcard.” We love receiving postcards from around the world showing where Stacks is being used! We showcase them on our website too.
Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States 🌎
We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.
And a special thanks to Dan Scanlon for donating the stacks name on npm ✨
The MIT License (MIT). Please see LICENSE for more information.
Made with 💙
40,596 followers · starred Sep 2023
2,722 followers · starred Aug 2023
293 followers · starred Oct 2023
4,072 followers · starred Dec 2024