Skip to content

stacksjs/debug-app

Repository files navigation

Social Card of Stacks

Rapid App Development

npm version GitHub Actions Commitizen friendly npm downloads

For internal usage only until the beta is released by the end of October.

The goal of the Stacks framework is to help you create & maintain frontends & backends without having to worry about the boilerplate. Whether it's SSG pages, npm distributed & framework-agnostic component & function libraries, or infinitely scalable APIs, Stacks helps you every step along the way, including production deployments and the maintenance of its related infrastructure (server or serverless).

Convention over configuration is our mantraโ€”in beginner & expert-friendly ways.

Atomic UI & FX Design

Features

Stacks Engine

  • โ˜๏ธ Cloud "on-demand, auto-scaling, zero maintenance"โ€”create your own cloud
  • โšก๏ธ CDN auto-setup & maintenance of low-latency CDN on top of your storage origins & APIs
  • ๐Ÿš€ Deployment Manager take the sweat & stress out of production deployments
  • ๐Ÿ“ซ Release Manager libraries (component & function) auto-published to npm, git helpers, and more
  • ๐Ÿค– CI/CD native CI, release, auto changelog generations & other workflows
  • ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ”ง Linter & Formatter auto-configured & built into your IDE
  • ๐Ÿ’ก IDE Integration Auto-completions, inline docs & a powerful VS Code setup
  • ๐Ÿ’ช๐Ÿผ Type Strong Built-in end-to-end type safety
  • ๐Ÿ“š Smart Bundling Vite powered & extendable
  • ๐Ÿ€ Auto Imports Components, Functions. Date, String & Array helpers, Collections, VueUse, etc.
  • ๐Ÿ“ˆ Modern DX latest & greatest tooling accessible natively, including ESNext support
  • ๐Ÿช„ Zero-Config yet highly configurable

No 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.

UI Engine

  • ๐ŸŽจ Atomic CSS style with ease, powered by UnoCSS
  • ๐Ÿงฉ Components automatically generate optimized Vue & Web Component libraries
  • โšก๏ธ Pages (SSG) Static site generation & layouts developedโ€”without breaking a sweat
  • 0๏ธโƒฃ Zero-config PWA sensible built-in default configs for common use cases
  • ๐Ÿค– Deployments natively deploy to AWS, Netlify, Vercel, or elsewhere
  • ๐Ÿ€ Vue-powered extendable & native access to the ecosystem
  • ๐Ÿงช Testing unit & e2e tests powered by Vitest

FX Engine

  • ๐ŸŽ๏ธ APIs scalability & maintainability built-in
  • ๐Ÿ’จ Cache Redis or DynamoDB
  • โš™๏ธ CLIs create beautiful CLIs for Linux, Windows, and Mac. Without any requirements.
  • ๐Ÿ“€ Database Prisma, PlanetScale, Supabase, ...
  • ๐Ÿ‘พ Errors native type-safe error handling
  • ๐Ÿงฉ Functions develop more easily & rapidly
  • ๐Ÿ“ข Notifications simply send emails, SMSs, and webhooks
  • โš™๏ธ Queues run your heavy workload in the background
  • ๐ŸŽ๏ธ Realtime "everything you need to build dynamic real-time apps"
  • ๐Ÿงญ Router smart routing, file-based or Laravel-like
  • ๐Ÿ’พ Storage easily create & make use of local & remote storages/file systems
  • ๐Ÿค– Deployments server & serverless deployment platform for your APIs (AWS support and more)
  • ๐Ÿงช Testing covered by Vitest

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 โœŒ๐Ÿผ

A true rapid application development framework for all Full Stack needs. Next-level & deep DX.

Get Started

It's incredibly easy to get started with this framework. Simply run the following command in your terminal:

curl -fsSL https://stacksjs.dev/setup | sh

# alternatively, if you know pnpm is already installed, get started via:
npx stacks create my-project

Note pnpm 7.14 or higher required. Run the setup script & Stacks will set you up.

๐Ÿค– Usage

Meet the Stacks Toolkit. The following list is of some of the most common ways to interact with the Stacks API:

stacks install # installs all dependencies
stacks dev # starts one of the dev servers (components, functions, pages, or docs)
stacks build # follow CLI prompts to select which library (or server) to build
stacks commit # follow CLI prompts for committing changes
stacks release # creates the releases for the stack & consequently, publishes them to npm

stacks make:component HelloWorld # scaffolds a component
stacks make:function HelloWorld # scaffolds a function
stacks make:page hello-world # scaffolds a page (https://127.0.0.1/hello-world)

stacks --help
View the complete Stacks Toolkit
stacks --version # get the Stacks version
stacks --help # view help menu
# please note: you may suffix any command with the
# `command --help` flag to review the help menu

stacks install # installs your dependencies
stacks fresh # fresh reinstall of all deps
stacks clean # removes all your deps

stacks update # auto-update deps & the Stacks framework
stacks update:dependencies # auto-update deps & the Stacks framework
stacks update:framework # auto-update deps & the Stacks framework
stacks update:package-manager # auto-update deps & the Stacks framework
stacks update:node # update to latest project-defined node version
stacks update:all # update Node, package manager, framework, dependencies

# if you need any more info on any command listed here, you may suffix
# any of them via the "help option", i.e. `stacks ... --help`

stacks dev # start one of the dev servers (components, functions, pages, or docs)
stacks dev:components # start local playground dev server
stacks dev:desktop # start local Desktop dev server
stacks dev:pages # start local playground pages dev server
stacks dev:functions # stub local the functions
stacks dev:docs # start local docs dev server
stacks development # `stacks dev` alias

# for Laravel users, `serve` may be a more familiar command. Hence, we aliased it:
stacks serve
stacks serve:components
stacks serve:pages
stacks serve:functions
stacks serve:docs

# building for production (e.g. AWS, Google Cloud, npm, Vercel, Netlify, et al.)
stacks build # select a specific build (follow CLI prompts)
stacks build:components # build Vue component library & Web Component library
stacks build:vue-components # build Vue 2 & 3-ready Component library
stacks build:web-components # build framework agnostic Web Component library (i.e. Custom Elements)
stacks build:functions # build function library
stacks build:pages # build SSG pages
stacks build:all # build all your code

# `stacks build` aliases
stacks prod
stacks prod:components
stacks prod:vue-components
stacks prod:web-components
stacks prod:functions
stacks prod:pages
stacks prod:all
stacks production # `stacks prod` alias

# sets your application key
stacks key:generate

stacks make:stack project
stacks make:component HelloWorld
stacks make:function hello-world
stacks make:page hello-world
stacks make:lang de
stacks make:notification welcome-email
stacks make:database cars
stacks make:table brands
stacks make:migration create_cars_table
stacks make:factory cars
stacks make:seed cars

stacks lint # runs linter
stacks lint:fix # runs linter and fixes issues

stacks commit # follow CLI prompts for committing staged changes
stacks release # creates the releases for the stack & triggers the Release Action (workflow)
stacks changelog # generates CHANGELOG.md

# when deploying your app/s to a remote server or cloud provider
stacks deploy
stacks deploy:docs
stacks deploy:functions
stacks deploy:pages
stacks deploy:all

# select the example to run (follow CLI prompts)
stacks example
stacks example:vue
stacks example:web-components

# you likely won't need to run these commands as they are auto-triggered, but they are available
stacks generate
stacks generate:entries
stacks generate:vue-compat
stacks generate:web-types
stacks generate:vscode-custom-data
stacks generate:ide-helpers
stacks generate:component-meta
stacks generate:all

# generates your application key
stacks key:generate

# generate your TypeScript declarations
stacks types:generate
stacks types:fix

# test your stack
stacks test # runs test suite
stacks test:unit # runs unit tests
stacks test:e2e # runs e2e tests
stacks test:coverage # runs test coverage
stacks test:types # runs typecheck

# the CLI may be triggered in any
# of the following syntax:
stx fresh
stacks fresh
bud fresh
buddy fresh
pnpm stx fresh
pnpm stacks fresh
pnpm buddy fresh
pnpm fresh
pnpm run fresh
pnpm run buddy fresh

Read more here about the Stacks CLI in the documentation.

๐Ÿ“š Utilizing the Built Libraries

Because Stacks optimizes the development of easily reusable & composable component & function libraries, the primary intention is to always keep it simple, yet configurable.

By default, Stacks realizes whether your Stack includes components, functions, and/or pages. Based on that determination, Stacks builds your outputs.

The UI libraries that automatically get built are: a Web Component (Custom Elements) & Vue Component library.

Web Component usage
npm install my-awesome-library

After you installed your Stacks generated library, you can use a "Custom Element" (Web Component) in the following way:

<html>
  <body>
    <hello-world name="Jane Doe"></hello-world>
    <script src="my-awesome-library.js"></script>
  </body>
</html>
Vue 2 & 3 usage
npm install my-awesome-library

After you installed your Stacks generated library, you can use your Vue Components in the following way:

<script setup lang="ts">
import HelloWorld from 'my-awesome-library'
</script>

<template>
  <HelloWorld name="J Doe" />
</template>

A function library may also be automatically generated.

Functions usage
npm install hello-world-library

After you installed your Stacks generated library, you can use your functions in the following way:

import { count, increment } from 'hello-world-fx'

console.log('count is', count)
increment()
console.log('increased count is', count)

You may view this framework as an incredibly "useful set of frames" to assist in efficiently bootstrapping, designing, and managing component & function librariesโ€”using industry best practices, to reach one of the broadest user bases possible.

๐Ÿš™ Roadmap

Part of the Stacks ecosystem are the following first-party supported stacks:

  • Table (Q4 - Data tables with ease)
  • Calendar (Q4 - Add to Calendar utilitiesโ€”iCal, Google, and more)
  • Command Palette (Q4 - โŒ˜ + k for the web)
  • Date Picker (Q4 - Beautiful, modern date picker)
  • File Manager (Q4 - Build your own file managerโ€”like Dropbox or Google Drive)
  • Image (Q4 - Modern image experience)
  • Video (Q4 - Modern video experience)
  • Audio (Q4 - Modern audio experience)
  • Web3 (Q4 - Solana support, cross-chain core. Ethereum & Cardano drivers coming.)
    • Wallets (Q4 - Wallet Authentication)
    • NFT (Q4 - NFTs, Candy Machine mechanisms, and more.)
    • DeFi (Q4 - Cross-chain DeFi engine, including staking support)
    • DAO (Q4 - Powerful toolkit for DAO governance)

View our detailed roadmap/s here for more information. Additionally, you may find interesting information & examples over at Awesome Stacks.

๐Ÿงช Testing

pnpm test

๐Ÿ“ˆ Changelog

Please see our releases page for more information on what has changed recently.

๐Ÿ’ช๐Ÿผ Contributing

Please see CONTRIBUTING for details.

๐Ÿ Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

Discussions on GitHub

For casual chit-chat with others using this package:

Join the Open Web Discord Server

๐Ÿ“„ Sponsors

Once we launch a usable Stacks version, we hope people will start enjoying it! Coming soon.

๐Ÿ™๐Ÿผ Credits

Many thanks to the following core technologies & people who have contributed to this package:

๐Ÿ“„ License

The MIT License (MIT). Please see LICENSE for more information.

Made with โค๏ธ