Joystick is an opinionated full-stack JavaScript framework for building SaaS apps.
It combinines a simple, easy-to-learn components API with a batteries-included Node.js back-end. It's designed—first and foremost—for developers who value productivity and performance; essential ingredients for any successful SaaS.
Joystick is for you if:
- You want an all-in-one system for building your app with everyday features built-in; not a stripped down "framework" that forces you to use third-party packages and services to implement basic functionality.
- You want to work with simple, easy-to-understand APIs and structure that don't force you to comb through poorly written docs, wrestle with half-working tutorials, or roll the dice on AI-generated code.
- You want a set of tools that just work, as described, indefinitely. No "sorry, bro, that's deprecated" rug pulls or chasing of patterns that are "it" today and dead tomorrow.
- You want to move fast without compromising quality and scalability.
- You want to build with tools that are actually used by the people making them to build their own apps (not toys or stripped-down demos for a tech talk).
Packages
Though Joystick works as a single framework, it's made up of four packages:
@joystick.js/ui
- The components library for Joystick. Introduces a simple, single-function pattern for implementing your components using plain HTML, CSS, and JavaScript. No attribtue hacks. No compilers. Just straight JavaScript.@joystick.js/node
- The batteries-included, Node.js back-end for Joystick. Incldues everything from routing, to email, uploads, WebSockets, queues, and a whole bunch of other tools common to building a SaaS app.@joystick.js/cli
- The command-line interface for Joystick and its development server. Helps you to create, run, and deploy new Joystick apps.@joystick.js/test
- The testing framework for Joystick. Runs your app as a mirror of itself so that you can write tests against your actual app—not mocks and stubs that create false-positives.
Under-the-hood, @joystick.js/cli
brings all of these together into a cohesive, full-stack framework. When creating a new project, all of these packages are installed and your app is scaffolded with examples of how they're used, when, and where.