open-saas/README.md

78 lines
4.5 KiB
Markdown
Raw Permalink Normal View History

2024-01-22 17:47:16 -05:00
## Welcome to your new SaaS App! 🎉
2024-01-29 11:15:20 -05:00
<a href="https://www.producthunt.com/posts/open-saas?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-open&#0045;saas" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=436467&theme=light" alt="Open&#0032;SaaS - Open&#0045;source&#0032;&#0038;&#0032;100&#0037;&#0032;free&#0032;React&#0032;&#0038;&#0032;Node&#0046;js&#0032;SaaS&#0032;starter&#0033; | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
2024-01-29 16:18:40 -05:00
https://github.com/wasp-lang/open-saas/assets/70215737/5ff289b1-12b9-4b46-aa90-a6a3122de93e
2024-01-29 11:15:20 -05:00
2024-01-22 17:47:16 -05:00
You've decided to build a SaaS app with the Open SaaS template. Great choice!
2023-03-29 12:31:46 +02:00
2023-12-01 15:44:41 +01:00
This template is:
2023-04-19 14:19:27 +02:00
2023-12-01 15:44:41 +01:00
1. fully open-source
2. completely free to use and distribute
3. comes with a ton of features out of the box!
4. focused on free, open-source services, where possible
2023-04-20 13:49:23 +02:00
2024-01-22 17:47:16 -05:00
🧑‍💻 Check it out in action here: [OpenSaaS.sh](https://opensaas.sh)
📚 Check out the Docs here: [Open SaaS Docs](https://docs.opensaas.sh)
2023-04-20 13:49:23 +02:00
2023-12-01 15:44:41 +01:00
## What's inside?
2023-04-20 13:49:23 +02:00
2023-12-01 15:44:41 +01:00
The template itself is built on top of some very powerful tools and frameworks, including:
2023-04-20 13:49:23 +02:00
2023-12-01 15:44:41 +01:00
- 🐝 [Wasp](https://wasp-lang.dev) - a full-stack React, NodeJS, Prisma framework with superpowers
- 🚀 [Astro](https://starlight.astro.build/) - Astro's lightweight "Starlight" template for documentation and blog
- 💸 [Stripe](https://stripe.com) - for products and payments
- 📈 [Plausible](https://plausible.io) or [Google](https://analytics.google.com/) Analytics
2024-02-08 16:37:58 -05:00
- 🤖 [OpenAI](https://openai.com) - OpenAI API integrated into the app or [Replicate](https://replicate.com/) (coming soon 👀)
- 📦 [AWS S3](https://aws.amazon.com/s3/) - for file uploads
2023-12-01 15:44:41 +01:00
- 📧 [SendGrid](https://sendgrid.com), [MailGun](https://mailgun.com), or SMTP - for email sending
- 💅 [TailwindCSS](https://tailwindcss.com) - for styling
- 🧑‍💼 [TailAdmin](https://tailadmin.com/) - admin dashboard & components for TailwindCSS
Playwright tests & CI (#69) * get tests started * Create opensaas-ci.yml * move github workflows * modify ci scripts * install linebyline * Update package.json * install wait-port * Update package.json * add conditional webserver when in CI env * test tagging action * Update retag-commit.yml * remove unused workflow * add .env file and test stripe webhook * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * test demo app * Update e2e-tests.yml * update github action versions * disable wasp telemetry * Cleanup running (#72) * improve tests * Update ci-start-app.js * remove npm scripts * Update e2e-tests.yml * Update ci-start-app-with-scripts.js * Update ci-start-app-with-scripts.js * rename test folder * Update e2e-tests.yml * Update e2e-tests.yml * export prisma client from server * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update package-lock.json * install linebyline * add npm scripts * Update package.json * Update paidUserTests.spec.ts * update flaky test * update tsconfig * Update e2e-tests.yml * Update e2e-tests.yml * pin node version to github action * Update e2e-tests.yml * fix retag and clean up * add notes on tag action * Update retag-commit.yml * pr changes part 1 * pr changes part 2 * Setup tests with local Prisma (#86) Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> * pr changes part 3 * add db naming script * Update package.json * Update package.json * Update package.json * spawn prisma process * Update package.json * move db setup * Update package.json * Update package.json * Update package.json * Update setupDatabaseName.sh * Update package.json * use same process for local and CI testing * Update package.json * wait for app for prisma setup * Update package.json * changes made with martin * stripe clie * Update e2e-tests.yml * Update e2e-tests.yml * update start stripe cli * try again * start testing stripe payments * stripe payment works * fix base url issue & cleanup * Update playwright.config.ts * Update package.json * Update package-lock.json * Update main.wasp * Update utils.ts * Update e2e-tests.yml * Update utils.ts * Update utils.ts * Update e2e-tests.yml * Update actions.ts * Update actions.ts * Update actions.ts * Update actions.ts * Update stripeUtils.ts * Update e2e-tests.yml * catch stripe checkout error * remove console.logs * fix comments, add err catches * fix cache and cache keys * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update e2e-tests/playwright.config.ts Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Improve CI caching and other stuff * fix cache key, npm scripts, error handling * Update e2e-tests.yml * Update README.md * add template versioning info --------- Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Fran Zekan <zekan.fran369@gmail.com> Co-authored-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com>
2024-04-22 10:43:25 +02:00
- 🧪 [Playwright](https://playwright.dev) - end-to-end tests with Playwright
2023-03-29 12:31:46 +02:00
2023-12-01 15:44:41 +01:00
Because we're using Wasp as the full-stack framework, we can leverage a lot of its features to build our SaaS in record time, including:
2023-03-29 12:31:46 +02:00
2023-12-01 15:44:41 +01:00
- 🔐 [Full-stack Authentication](https://wasp-lang.dev/docs/auth/overview) - Email verified + social Auth in a few lines of code.
- ⛑ [End-to-end Type Safety](https://wasp-lang.dev/docs/data-model/operations/overview) - Type your backend functions and get inferred types on the front-end automatically, without the need to install or configure any third-party libraries. Oh, and type-safe Links, too!
2024-02-29 10:22:59 +01:00
- 🤖 [Jobs](https://wasp-lang.dev/docs/advanced/jobs) - Run cron jobs in the background or set up queues simply by defining a function in the config file.
- 🚀 [One-command Deploy](https://wasp-lang.dev/docs/advanced/deployment/overview) - Easily deploy via the CLI to [Fly.io](https://fly.io), or to other providers like [Railway](https://railway.app) and [Netlify](https://netlify.com).
2023-04-20 13:49:23 +02:00
2023-12-01 15:44:41 +01:00
You also get access to Wasp's diverse, helpful community if you get stuck or need help.
- 🤝 [Wasp Discord](https://discord.gg/aCamt5wCpS)
2023-04-20 13:49:23 +02:00
## Getting Started
2023-04-20 13:49:23 +02:00
### Simple Instructions
First, to install the latest version of [Wasp](https://wasp.sh/) on macOS, Linux, or Windows with WSL, run the following command:
```bash
curl -sSL https://get.wasp-lang.dev/installer.sh | sh
```
Then, create a new SaaS app with the following command:
```bash
wasp new -t saas
```
2024-06-04 13:26:41 +02:00
This will create a **clean copy of the Open SaaS template** into a new directory, and you can start building your SaaS app right away!
### Detailed Instructions
For everything you need to know about getting started and using this template, check out the [Open SaaS Docs](https://docs.opensaas.sh).
We've documented everything in great detail, including installation instructions, pulling updates to the template, guides for integrating services, SEO, deployment, and more. 🚀
## Getting Help & Providing Feedback
Playwright tests & CI (#69) * get tests started * Create opensaas-ci.yml * move github workflows * modify ci scripts * install linebyline * Update package.json * install wait-port * Update package.json * add conditional webserver when in CI env * test tagging action * Update retag-commit.yml * remove unused workflow * add .env file and test stripe webhook * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * test demo app * Update e2e-tests.yml * update github action versions * disable wasp telemetry * Cleanup running (#72) * improve tests * Update ci-start-app.js * remove npm scripts * Update e2e-tests.yml * Update ci-start-app-with-scripts.js * Update ci-start-app-with-scripts.js * rename test folder * Update e2e-tests.yml * Update e2e-tests.yml * export prisma client from server * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update package-lock.json * install linebyline * add npm scripts * Update package.json * Update paidUserTests.spec.ts * update flaky test * update tsconfig * Update e2e-tests.yml * Update e2e-tests.yml * pin node version to github action * Update e2e-tests.yml * fix retag and clean up * add notes on tag action * Update retag-commit.yml * pr changes part 1 * pr changes part 2 * Setup tests with local Prisma (#86) Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> * pr changes part 3 * add db naming script * Update package.json * Update package.json * Update package.json * spawn prisma process * Update package.json * move db setup * Update package.json * Update package.json * Update package.json * Update setupDatabaseName.sh * Update package.json * use same process for local and CI testing * Update package.json * wait for app for prisma setup * Update package.json * changes made with martin * stripe clie * Update e2e-tests.yml * Update e2e-tests.yml * update start stripe cli * try again * start testing stripe payments * stripe payment works * fix base url issue & cleanup * Update playwright.config.ts * Update package.json * Update package-lock.json * Update main.wasp * Update utils.ts * Update e2e-tests.yml * Update utils.ts * Update utils.ts * Update e2e-tests.yml * Update actions.ts * Update actions.ts * Update actions.ts * Update actions.ts * Update stripeUtils.ts * Update e2e-tests.yml * catch stripe checkout error * remove console.logs * fix comments, add err catches * fix cache and cache keys * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update e2e-tests/playwright.config.ts Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Improve CI caching and other stuff * fix cache key, npm scripts, error handling * Update e2e-tests.yml * Update README.md * add template versioning info --------- Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Fran Zekan <zekan.fran369@gmail.com> Co-authored-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com>
2024-04-22 10:43:25 +02:00
There are two ways to get help or provide feedback (and we try to always respond quickly!):
1. [Open an issue](https://github.com/wasp-lang/open-saas/issues)
2. [Wasp Discord](https://discord.gg/aCamt5wCpS) -- please direct questions to the #🙋questions forum channel
Playwright tests & CI (#69) * get tests started * Create opensaas-ci.yml * move github workflows * modify ci scripts * install linebyline * Update package.json * install wait-port * Update package.json * add conditional webserver when in CI env * test tagging action * Update retag-commit.yml * remove unused workflow * add .env file and test stripe webhook * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * test demo app * Update e2e-tests.yml * update github action versions * disable wasp telemetry * Cleanup running (#72) * improve tests * Update ci-start-app.js * remove npm scripts * Update e2e-tests.yml * Update ci-start-app-with-scripts.js * Update ci-start-app-with-scripts.js * rename test folder * Update e2e-tests.yml * Update e2e-tests.yml * export prisma client from server * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update package-lock.json * install linebyline * add npm scripts * Update package.json * Update paidUserTests.spec.ts * update flaky test * update tsconfig * Update e2e-tests.yml * Update e2e-tests.yml * pin node version to github action * Update e2e-tests.yml * fix retag and clean up * add notes on tag action * Update retag-commit.yml * pr changes part 1 * pr changes part 2 * Setup tests with local Prisma (#86) Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> * pr changes part 3 * add db naming script * Update package.json * Update package.json * Update package.json * spawn prisma process * Update package.json * move db setup * Update package.json * Update package.json * Update package.json * Update setupDatabaseName.sh * Update package.json * use same process for local and CI testing * Update package.json * wait for app for prisma setup * Update package.json * changes made with martin * stripe clie * Update e2e-tests.yml * Update e2e-tests.yml * update start stripe cli * try again * start testing stripe payments * stripe payment works * fix base url issue & cleanup * Update playwright.config.ts * Update package.json * Update package-lock.json * Update main.wasp * Update utils.ts * Update e2e-tests.yml * Update utils.ts * Update utils.ts * Update e2e-tests.yml * Update actions.ts * Update actions.ts * Update actions.ts * Update actions.ts * Update stripeUtils.ts * Update e2e-tests.yml * catch stripe checkout error * remove console.logs * fix comments, add err catches * fix cache and cache keys * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update e2e-tests/playwright.config.ts Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Improve CI caching and other stuff * fix cache key, npm scripts, error handling * Update e2e-tests.yml * Update README.md * add template versioning info --------- Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Fran Zekan <zekan.fran369@gmail.com> Co-authored-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com>
2024-04-22 10:43:25 +02:00
## Contributing
Playwright tests & CI (#69) * get tests started * Create opensaas-ci.yml * move github workflows * modify ci scripts * install linebyline * Update package.json * install wait-port * Update package.json * add conditional webserver when in CI env * test tagging action * Update retag-commit.yml * remove unused workflow * add .env file and test stripe webhook * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * test demo app * Update e2e-tests.yml * update github action versions * disable wasp telemetry * Cleanup running (#72) * improve tests * Update ci-start-app.js * remove npm scripts * Update e2e-tests.yml * Update ci-start-app-with-scripts.js * Update ci-start-app-with-scripts.js * rename test folder * Update e2e-tests.yml * Update e2e-tests.yml * export prisma client from server * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update e2e-tests.yml * Update package-lock.json * install linebyline * add npm scripts * Update package.json * Update paidUserTests.spec.ts * update flaky test * update tsconfig * Update e2e-tests.yml * Update e2e-tests.yml * pin node version to github action * Update e2e-tests.yml * fix retag and clean up * add notes on tag action * Update retag-commit.yml * pr changes part 1 * pr changes part 2 * Setup tests with local Prisma (#86) Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> * pr changes part 3 * add db naming script * Update package.json * Update package.json * Update package.json * spawn prisma process * Update package.json * move db setup * Update package.json * Update package.json * Update package.json * Update setupDatabaseName.sh * Update package.json * use same process for local and CI testing * Update package.json * wait for app for prisma setup * Update package.json * changes made with martin * stripe clie * Update e2e-tests.yml * Update e2e-tests.yml * update start stripe cli * try again * start testing stripe payments * stripe payment works * fix base url issue & cleanup * Update playwright.config.ts * Update package.json * Update package-lock.json * Update main.wasp * Update utils.ts * Update e2e-tests.yml * Update utils.ts * Update utils.ts * Update e2e-tests.yml * Update actions.ts * Update actions.ts * Update actions.ts * Update actions.ts * Update stripeUtils.ts * Update e2e-tests.yml * catch stripe checkout error * remove console.logs * fix comments, add err catches * fix cache and cache keys * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update .github/workflows/e2e-tests.yml Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Update e2e-tests/playwright.config.ts Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * Improve CI caching and other stuff * fix cache key, npm scripts, error handling * Update e2e-tests.yml * Update README.md * add template versioning info --------- Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Fran Zekan <zekan.fran369@gmail.com> Co-authored-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com>
2024-04-22 10:43:25 +02:00
2023-12-01 15:44:41 +01:00
Note that we've tried to get as many of the core features of a SaaS app into this template as possible, but there still might be some missing features or functionality.
2023-03-29 12:31:46 +02:00
We could always use some help tying up loose ends: contributions are welcome! Check out [CONTRIBUTING.md](/CONTRIBUTING.md) for more details.