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 | |
Dependencies | |
Community |
Staart API is build to work with Staart UI, the frontend PWA starter for SaaS startups.
- 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
Thanks goes to these wonderful people (emoji key):
Anand Chowdhary π» π π¨ |
reallinfo π¨ |
Cool π π€ |
EK π π» |
mattp95 π π |
This project follows the all-contributors specification. Contributions of any kind welcome!
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 |