
📖 SaaS Boilerplate Documentation
Supercharge your SaaS development with our comprehensive starter kit, designed to accelerate your project and save you valuable time and resources. Our battle-tested boilerplate eliminates the need for extensive configuration and development work, allowing you to focus on innovation from day one.
SaaS Boilerplate includes essential features that every SaaS application requires, such as frontend, backend API, admin panel, and workers. With a scalable AWS-based architecture and continuous deployment, you can easily deploy multiple environments representing different stages in your pipeline.
Say goodbye to weeks of setup and coding. Our proven stack and ready-to-use features empower you to jumpstart your project and prioritize building your product's intellectual property. Unlock your SaaS potential faster than ever before and seamlessly transition from setup to innovation.
node -v).
We recommend Node.js 20+ for optimal compatibility with the latest features. You can use nvm or n for managing multiple Node versions installed on a single machine.pnpm --version)python3 --version) and uv (which can be checked by running
uv --version)uv sync command in packages/backend or packages/workers outside
docker containerpyenv for managing multiple Python versions installed on a single machine.You can use a special CLI tool to run a new local instance of the SaaS Boilerplate as soon as possible. It will clone the repository and take care of setting up the environment. Run the following command in the directory where you would like to create a new project:
Using npm:
npm init saas-boilerplate PATH
Using pnpm:
pnpm create saas-boilerplate PATH
Using yarn:
yarn create saas-boilerplate PATH
:information_source: Replace
PATHwith your desired project directory name (e.g.,my-saas-app).:warning: The target directory must be empty or non-existent! The CLI will create it for you.
For the manual setup clone this repository and follow the steps in Getting started guide.
:warning: If you are using a Windows machine, it's mandatory to have WSL 2 (Windows Subsystem for Linux) installed on your system to run the commands for installing dependencies and running the application.
git clone <your-project-repository-url>
cd <project-name>
The project is configured to use pnpm workspaces, which means that you can install node_modules of all packages in
repository, with single command:
pnpm install
💡 Environment Files: Make sure you have the necessary
.envfiles from your team. If not, copy from.env.sharedtemplates:
sh cp .env.shared .env cp packages/backend/.env.shared packages/backend/.env
Start both: backend and webapp
pnpm saas up
pnpm saas backend up
pnpm saas webapp up
In order to run your local documentation server execute following command:
pnpm saas docs up
To stop all services:
pnpm saas down
After starting the application, you'll have these services available:
| Service | URL | Description |
|---|---|---|
| Web App | http://localhost:3000 | Your SaaS frontend |
| Backend API | http://localhost:5001 | Django + GraphQL API |
| Admin Panel | http://admin.localhost:5001 | Django admin interface |
| Mailcatcher | http://localhost:1080 | Catches all emails locally |
| Docs | http://localhost:3006 | Local documentation |
| Workers | http://localhost:3005 | Workers trigger server |
💡 First Steps:
- Open http://localhost:3000 and create an account
- Check http://localhost:1080 for the verification email
- Log in to the Admin Panel at http://admin.localhost:5001 using credentials from your
.envfile
This boilerplate includes plenty of ready to use features that you can adjust to your needs:
<a href="https://docs.demo.saas.apptoku.com/introduction/features/auth">Authentication and authorization</a>
<ul>
<li>User registration and login, including Facebook and Google OAuth</li>
<li>WebAuthn/Passkeys for passwordless authentication</li>
<li>Enterprise SSO (SAML 2.0, OIDC) with SCIM 2.0 directory sync</li>
<li>Basic user data like name, surname, and user role for authorization</li>
<li>User email address verification via a transactional email</li>
<li>Password change and password recovery within the app flow</li>
<li>User management panel in Django admin</li>
<li>Two-factor authentication (2FA)</li>
<li>Active session management across devices</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/emails">Emails</a>
<ul>
<li>A set of ready-to-send transactional emails (new user verification, password recovery, subscription renewals, errors, etc.)</li>
<li>Ability to schedule emails at a given time</li>
<li>Sending test emails directly from a Storybook</li>
<li>Internationalization support out of the box</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/payments">Payments</a>
<ul>
<li>Integration with Stripe services and its dashboard</li>
<li>No customer payment method data is stored locally</li>
<li>Support for multiple payment methods and their management (storing for future use and removal)</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/payments#subscription-management">Subscriptions</a>
<ul>
<li>Ability to charge users immediately or to set up recurring payments</li>
<li>Subscription plans support and ability to freely modify current plans</li>
<li>Free trial subscription plan, a grace period for credit card issues</li>
<li>Superadmin panel enables customer management (i.e. refunds) without the Stripe dashboard</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/multi-tenancy">Multi-tenancy</a>
<ul>
<li>Start immediately with a default tenant provided upon account creation</li>
<li>Add new tenants as needed to manage multiple entities within a single account</li>
<li>Utilize three default roles ”Owner, Admin, and Member” to control tenant activities and collaboration</li>
<li>Securely invite and manage new members within each tenant</li>
</ul>
Tenant backup and restore
<ul>
<li>Per-tenant XML backups of selected modules and models</li>
<li>Encryption of backup content (AWS Secrets Manager or DB fallback with <code>BACKUP_MASTER_KEY</code>); configurable schedule (interval and retention)</li>
<li>Restore into the same or another tenant with conflict handling (skip, update, or fail)</li>
<li>Email notifications when a backup is ready or fails, and when a restore completes or fails</li>
<li>Backup/restore notification templates defined in the backup (tenants) module</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/cms">CMS integration (Contentful)</a>
<ul>
<li>Integration with Contentful service</li>
<li>Example content model (image, title, and description)</li>
<li>Ready to use CMS with a free plan</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/notifications">Notifications</a>
<ul>
<li>Real-time in-app notifications with WebSocket support</li>
<li>Notification center UI with unread indicators</li>
<li>Mark all as read functionality</li>
<li>Easy to add new notification types</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/openai">AI Integration</a>
<ul>
<li>OpenAI integration ready for building AI-powered features</li>
<li>Example implementation included</li>
<li>Easy to extend with other AI providers</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/crud">CRUD Generator</a>
<ul>
<li>Plop-based generators for quickly scaffolding new features</li>
<li>Example CRUD module included</li>
<li>Tenant-scoped data isolation</li>
<li>Generate forms, tables, and GraphQL operations automatically</li>
</ul>
<a href="https://docs.demo.saas.apptoku.com/introduction/features/management-dashboard">Management Dashboard</a>
<ul>
<li>Complete financial management module (example module)</li>
$ claude mcp add saas-boilerplate \
-- python -m otcore.mcp_server <graph>