Staart API is a Node.js backend starter for SaaS startups written in TypeScript. It has all the features you need to build a SaaS product, like user management and authentication, billing, organizations, GDPR tools, API keys, rate limiting, superadmin impersonation, and more.
Status | |
---|---|
Build | |
PRs | |
Community |
Staart API is build to work with Staart UI, the frontend PWA starter for SaaS startups.
master
branch and all 3.x releases are currently in beta. For production, use v1.x instead.
- Casbin-powered permission management
- JWT-powered single-use coupon codes
- Redis-powered queues for outbound emails and logs
- Cloud agnostic, no longer specific to AWS
- Staart scripts for building and deploying
- Async JSON response and smart controller injection
- JWT-powered authentication and user management
- TOTP-powered two-factor authentication (2FA)
- OAuth2 login with third-party accounts
- Location-based login verification
- Security event logging and history
- Stripe-powered recurring billing
- Teams with managed user permissions
- CRUD invoices, methods, transactions, etc.
- Rich HTML transactional emails
- GDPR-compliant data export and delete
- API gateway with API keys and rate limiting
- Domain verification with auto-approve members
- OvernightJS-powered decorators and class syntax
- Injection-proof helpers for querying databases
- Data pagination and CRUD utilities for all tables
- Authorization helpers
- Caching and invalidation for common queries
- User impersonation for super-admin
- Easy redirect rules in YAML
- ElasticSearch-powered server and event logs
- Use this template or fork this repository
- Install dependencies with
npm install
- Add a
.env
file based on config.ts. - Create MariaDB/MySQL tables based on schema.sql
- Add your controllers in the
./src/controllers
directory - Generate your
app.ts
file usingstaart controllers
- Build with
staart build
and deploy withstaart launch
To update your installation of Staart, run the following:
staart update api
If you've used the "Use this template" option on GitHub, you might have to force pull from staart/api
the first time since the histories wouldn't match. You can use the flag --allow-unrelated-histories
in this case.
- Getting started
- Setting up environment variables
- Creating a controller
- Updating Staart
- Response headers
- Throwing errors
- Authorization
- API key authentication
- Redirects
- Serving static files
The Staart ecosystem consists of open-source projects to build your SaaS startup, written in TypeScript.
Package | ||
---|---|---|
🛠️ Staart API | Node.js backend with RESTful APIs | |
🌐 Staart UI | Frontend Vue.js Progressive Web App | |
📑 Staart Site | Static site generator for docs/helpdesk | |
📱 Staart Native | React Native app for Android and iOS | |
🎨 Staart.css | Sass/CSS framework and utilities | |
📦 Staart Packages | Helper functions and utility packages |
The development of Staart projects is supported by these wonderful companies. Find us on OpenCollective
Oswald Labs |
O15Y |
Speakup |
Netlify |
Koj |