Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
be00608
Account page commit
FranjoMindek Sep 17, 2025
e7e0a1c
return other button
FranjoMindek Sep 17, 2025
838573e
changes
FranjoMindek Sep 17, 2025
354274f
fix find credits
FranjoMindek Sep 22, 2025
2a0cd5f
Merge branch 'main' into franjo/account-page-improvements
FranjoMindek Sep 24, 2025
53c3be8
format
FranjoMindek Sep 24, 2025
545a43c
generate on build + gitignore
FranjoMindek Sep 24, 2025
0bd7bd3
remove generate step
FranjoMindek Sep 24, 2025
cd86e5c
Merge pull request #515 from wasp-lang/franjo/refactor-llms-txt-handling
FranjoMindek Sep 26, 2025
39a0226
Add GitHub Action for automatic template release on tag creation (#511)
Copilot Sep 26, 2025
3f8d012
Ran lossless optimization on assets for template (#518)
cprecioso Oct 1, 2025
fa15f85
Use SVG versions of the banner (#521)
cprecioso Oct 1, 2025
1d04d53
Remove note about ignoring app (#520)
cprecioso Oct 1, 2025
0ebee55
Add note about template requirements (#528)
cprecioso Oct 3, 2025
a5df55a
Add `*.copy` support to `dope.sh` (#525)
cprecioso Oct 7, 2025
2713f9e
Remove Satoshi from template, keep it in opensaas.sh (#526)
cprecioso Oct 7, 2025
41f70e9
remove dt dd
FranjoMindek Oct 9, 2025
537c295
revert credits
FranjoMindek Oct 9, 2025
a41fb47
Merge pull request #506 from wasp-lang/franjo/account-page-improvements
FranjoMindek Oct 9, 2025
57ae0bf
Move `dope.sh` to top level (#531)
infomiho Oct 10, 2025
7d36c8f
Refactor file upload and toast notifications (#472)
vincanger Oct 15, 2025
bc57bb7
Update Product Hunt badges in README
vincanger Oct 15, 2025
02d0c90
Update README.md
vincanger Oct 15, 2025
f0429af
Fix dope.sh handling of empty lines in deletions file (#536)
infomiho Nov 5, 2025
a55adf7
for now
FranjoMindek Nov 6, 2025
5cae99d
Merge pull request #537 from wasp-lang/franjo/fix-e2e-tests
FranjoMindek Nov 6, 2025
026ac73
Test all PRs
cprecioso Nov 10, 2025
93e3e9d
Improve Stripe payment provider logic (#550)
FranjoMindek Nov 12, 2025
4ca8a99
Update OpenSaas for Wasp main
cprecioso Nov 13, 2025
f0b4d61
Update diffs
cprecioso Nov 13, 2025
adb8bb6
Move shadcn directories to client shared folder + update shadcn docs …
FranjoMindek Nov 14, 2025
bb76056
Change Stripe files variable naming and streamline some logic (#570)
FranjoMindek Nov 18, 2025
7d1436e
Update Wasp version in CI
cprecioso Nov 19, 2025
effb104
Add blog post on Gemini 3 and Open SaaS
vincanger Nov 19, 2025
b1c78d4
Update 2025-11-19-gemini-3-open-saas.mdx
vincanger Nov 19, 2025
a11790b
Add images to Gemini 3 Open SaaS blog post
vincanger Nov 19, 2025
9e87f77
Update testing version
cprecioso Nov 19, 2025
cf6afad
Abstract Stripe payment logic into reusable functions (#569)
FranjoMindek Nov 20, 2025
7f2c074
Polar integration (#461)
Genyus Nov 21, 2025
2a858ba
Standardize diffs in `dope.sh` (#557)
FranjoMindek Nov 24, 2025
88c71f2
Add roadmap feature to landing page + small fixes (#574)
vincanger Nov 27, 2025
ad45427
Use `dope.sh` to generate a testable app from production template (#530)
infomiho Dec 1, 2025
4fd82f2
Update to Wasp 0.20.0 (#589)
cprecioso Dec 18, 2025
ffdccbf
Use 0.20.0 in CI
infomiho Dec 18, 2025
55a2df3
Use Wasp `main` (#588)
cprecioso Dec 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .github/workflows/blog-deployment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ jobs:
working-directory: ./opensaas-sh/blog
run: npm install

- name: Generate LLM files
working-directory: ./opensaas-sh/blog
run: npm run generate-llm-files

- name: Build site
working-directory: ./opensaas-sh/blog
run: npm run build
Expand All @@ -53,10 +49,6 @@ jobs:
working-directory: ./opensaas-sh/blog
run: npm install

- name: Generate LLM files
working-directory: ./opensaas-sh/blog
run: npm run generate-llm-files

- name: Build site
working-directory: ./opensaas-sh/blog
run: npm run build
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/check-opensaas-diffs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Check `opensaas-sh` diffs are up to date

on:
pull_request:
push:
branches:
- main

jobs:
check-diffs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Non-existent GitHub Actions checkout versions will break workflows

The new workflow files reference actions/checkout@v6 and actions/checkout@v5, but the latest stable version is v4. These non-existent versions will cause the workflows to fail immediately upon execution. Other workflows in the repository correctly use actions/checkout@v3 or actions/checkout@v4.

Additional Locations (1)

Fix in Cursor Fix in Web


- name: Generate diffs
run: |
./opensaas-sh/tools/patch.sh
./opensaas-sh/tools/diff.sh

- name: Check for uncommitted changes
run: |
if [[ -n $(git status --porcelain) ]]; then
echo "Error: There are uncommitted diff changes"
echo "Please run './opensaas-sh/tools/patch.sh' and './opensaas-sh/tools/diff.sh' locally and commit the changes"
git status
exit 1
fi
16 changes: 11 additions & 5 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ on:
branches:
- main
pull_request:
branches:
- main

env:
WASP_TELEMETRY_DISABLE: 1
WASP_VERSION: 0.18.0
WASP_VERSION:
# If you're copying this workflow to your own project, set this to your app's Wasp version:
main

jobs:
test:
Expand All @@ -29,9 +29,16 @@ jobs:
- name: Docker setup
uses: docker/setup-buildx-action@v3

- name: Install Wasp
- name: Install Wasp ${{ env.WASP_VERSION }}
if: env.WASP_VERSION != 'main'
run: curl -sSL https://get.wasp.sh/installer.sh | sh -s -- -v ${{ env.WASP_VERSION }}

# If you're copying this workflow to your own project, you can remove this step:
- name: Install latest development Wasp
if: env.WASP_VERSION == 'main'
# Installs the latest published build of the CLI from the `main` branch.
run: npm i -g https://pkg.pr.new/@wasp.sh/wasp-cli@main

- name: Cache global node modules
uses: actions/cache@v4
with:
Expand Down Expand Up @@ -108,7 +115,6 @@ jobs:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
STRIPE_API_KEY: ${{ secrets.STRIPE_KEY }}
STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }}
STRIPE_CUSTOMER_PORTAL_URL: https://billing.stripe.com/p/login/test_8wM8x17JN7DT4zC000
PAYMENTS_HOBBY_SUBSCRIPTION_PLAN_ID: ${{ secrets.STRIPE_HOBBY_SUBSCRIPTION_PRICE_ID }}
PAYMENTS_PRO_SUBSCRIPTION_PLAN_ID: ${{ secrets.STRIPE_PRO_SUBSCRIPTION_PRICE_ID }}
PAYMENTS_CREDITS_10_PLAN_ID: ${{ secrets.STRIPE_CREDITS_PRICE_ID }}
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/template-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: Template Release

"on":
push:
tags:
- "wasp-v*-template"

workflow_dispatch:
inputs:
tag:
description: "Tag to release (e.g., wasp-v0.18-template)"
required: true

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest

env:
tag_name: ${{ inputs.tag || github.ref_name }}
archive_name: template.tar.gz

steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
ref: ${{ env.tag_name}}

- name: Create template archive
# The Wasp CLI expects the template contents to be in the root of the archive.
working-directory: template
run: tar -czf "../$archive_name" .

- name: Create release if it doesn't exist
run: |
if ! gh release view "$tag_name"; then
gh release create "$tag_name"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload release asset
run: gh release upload "$tag_name" "$archive_name" --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Dependencies
node_modules/

# MacOS-specific files.
# macOS-specific files.
.DS_Store

# We want to keep the template clean from the usual build artifacts.
Expand Down
4 changes: 4 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ Repo is divided into two main parts: [template](/template) dir and [opensaas-sh]

## How to Contribute

> [!IMPORTANT]
> The in-development version of the template uses the in-development version of Wasp. We've set up the `./tools/wasp` script.
> To use it, whenever you would normally run `wasp <command>`, run `<path-to-repo>/tools/wasp <command>` instead.

1. Make sure you understand the basics of how open-saas works (check out [docs](https://docs.opensaas.sh)).
2. Check out this repo (`main` branch) and make sure you are able to get the app in [template/app/](/template/app) running (to set it up, follow the same steps as for running a new open-saas app, as explained in the open-saas docs).
3. Create a new git branch for your work (aka feature branch) and do your changes on it.
Expand Down
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
## Welcome to your new SaaS App! 🎉

<a href="https://www.producthunt.com/products/open-saas?embed=true&utm_source=badge-featured&utm_medium=badge&utm_source=badge-open&#0045;saas&#0045;2" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=991058&theme=neutral&t=1753776395137" alt="Open&#0032;SaaS - The&#0032;open&#0045;source&#0032;SaaS&#0032;boilerplate&#0032;with&#0032;superpowers&#0033; | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<div style="display: flex; gap: 16px; align-items: center;">
<a href="https://www.producthunt.com/products/open-saas?embed=true&utm_source=badge-top-post-topic-badge&utm_medium=badge&utm_source=badge-open&#0045;saas&#0045;2&#0045;0" target="_blank">
<img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-topic-badge.svg?post_id=1023519&theme=neutral&period=weekly&topic_id=237&t=1760520428563" alt="Open&#0032;SaaS&#0032;2&#0046;0 - Free&#0044;&#0032;open&#0045;source&#0032;SaaS&#0032;starter&#0032;kit&#0032;with&#0032;superpowers | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" />
</a>
<a href="https://www.producthunt.com/products/open-saas?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_source=badge-open&#0045;saas&#0045;2&#0045;0" target="_blank">
<img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=1023519&theme=neutral&period=daily&t=1760520428563" alt="Open&#0032;SaaS&#0032;2&#0046;0 - Free&#0044;&#0032;open&#0045;source&#0032;SaaS&#0032;starter&#0032;kit&#0032;with&#0032;superpowers | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" />
</a>
</div>

https://github.com/user-attachments/assets/3856276b-23e9-455e-a564-b5f26f4f0e98

Expand Down Expand Up @@ -73,6 +80,10 @@ There are two ways to get help or provide feedback (and we try to always respond
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

## Development Tools

For information about the development tools used to maintain derived projects (like opensaas.sh and template-test), see [tools/README.md](./tools/README.md).

## Contributing

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.
Expand Down
27 changes: 8 additions & 19 deletions opensaas-sh/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,18 @@ Inception :)!

### Demo app (app_diff/)

Since the demo app is just the open saas template with some small tweaks, and we want to be able to easily keep it up to date as the template changes, we don't version (in git) the actual demo app code, instead we version the diffs between it and the template: `app_diff/`.

So because we don't version the actual demo app (`app/`) but its diffs instead (`app_diff`), the typical workflow is as follows:

1. Run `./tools/patch.sh` to generate `app/` from `../template/` and `app_diff/`.
2. If there are any conflicts (normally due to updates to the template), modify `app/` till you resolve them. Do any additional changes also if you wish.
3. Generate new `app_diff/`, based on the current updated `app/`, by running `./tools/diff.sh`.
> [!IMPORTANT]
> The in-development version of the template uses the in-development version of Wasp. We've set up the `./tools/wasp` script.
> To use it, whenever you would normally run `wasp <command>`, run `<path-to-repo>/tools/wasp <command>` instead.

**Running on MacOS**

If you're running the `patch.sh` or `diff.sh` scripts on Mac, you need to install:
Since the demo app is just the open saas template with some small tweaks, and we want to be able to easily keep it up to date as the template changes, we don't version (in git) the actual demo app code, instead we version the diffs between it and the template: `app_diff/`.

- `grealpath` (packaged within `coreutils`),
- `gpatch`,
- and `diffutils`.
#### Workflow

```sh
brew install coreutils # contains grealpath
brew install gpatch
brew install diffutils
```
- Generate `app/` from template and diffs: `./tools/patch.sh`
- Update diffs after modifying `app/`: `./tools/diff.sh`

Make sure not to commit `app/` to git. It is currently (until we resolve this) not added to .gitignore because that messes up diffing for us.
For detailed information about the diff/patch workflow and macOS setup requirements, see [../tools/README.md](../tools/README.md).

### Blog (blog/)

Expand Down
Loading