Introduction to ShipMySaaS boilerplate
Welcome to the documentation for ShipMySaaS, a boilerplate for SaaS projects designed to accelerate development and streamline deployment. ShipMySaaS is a modern, flexible monorepo built on the Bun JavaScript runtime, offering a robust foundation for SaaS applications. Below, you'll find detailed explanations of the project structure, deployment workflow, and key features.
Project Structure
ShipMySaaS is organized as a monorepo with three main packages, each handling a distinct aspect of your SaaS application:
1. Frontend
- Technology: Built with Next.js.
- Purpose: Manages the client-facing part of the SaaS application.
- Features:
- Fully responsive and modern UI.
- Integration with a GraphQL API for seamless data communication.
- E2E Tests: Uses Playwright to ensure platform integrity through comprehensive end-to-end testing.
- Deployment: Contains its own
Dockerfile
to facilitate independent deployment.
2. Backend
- Technology: Built on Wabe, a flexible and modular Backend as a Service (BaaS) framework written in TypeScript.
- Purpose: Implements the business logic and handles core backend functionality.
- Features:
- Provides a GraphQL API for secure and strongly typed communication with the frontend.
3. Landing page
- Purpose: Contains the marketing website for your SaaS application.
Additional Features
- GitHub Actions:
- A CI workflow is provided
ci.yml
to test the frontend and backend applications on each push to the repository to ensure platform integrity.
- A predefined workflow script,
release.yml
, is provided for automating releases on VPS of your choice.
- A Dockerfile at the root of the repository, containing 3 stages for each application (app-front, app-back, landing), is provided to facilitate independent deployment.
- Monorepo Management: Centralized management of all packages for efficient development and CI/CD workflows.
This structure enables modularity and scalability, ensuring that each component can evolve independently while maintaining a seamless integration.