mirror of
https://github.com/wasp-lang/open-saas.git
synced 2025-06-01 10:41:44 +02:00
initial push
This commit is contained in:
parent
1a01616652
commit
3c049669f0
@ -107,6 +107,12 @@ export default defineConfig({
|
|||||||
picture: '/matija.jpeg', // Images in the `public` directory are supported.
|
picture: '/matija.jpeg', // Images in the `public` directory are supported.
|
||||||
url: 'https://wasp-lang.dev',
|
url: 'https://wasp-lang.dev',
|
||||||
},
|
},
|
||||||
|
milica: {
|
||||||
|
name: 'Milica',
|
||||||
|
title: 'Growth @ Wasp',
|
||||||
|
picture: '/milica.jpg', // Images in the `public` directory are supported.
|
||||||
|
url: 'https://wasp-lang.dev',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
|
17
opensaas-sh/blog/package-lock.json
generated
17
opensaas-sh/blog/package-lock.json
generated
@ -13,6 +13,7 @@
|
|||||||
"@astrojs/starlight-tailwind": "^2.0.3",
|
"@astrojs/starlight-tailwind": "^2.0.3",
|
||||||
"@astrojs/tailwind": "^5.1.2",
|
"@astrojs/tailwind": "^5.1.2",
|
||||||
"astro": "^4.16.15",
|
"astro": "^4.16.15",
|
||||||
|
"prettier": "^3.4.2",
|
||||||
"sharp": "^0.32.5",
|
"sharp": "^0.32.5",
|
||||||
"starlight-blog": "^0.15.0",
|
"starlight-blog": "^0.15.0",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.4.5"
|
||||||
@ -6826,12 +6827,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "3.4.1",
|
"version": "3.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
|
||||||
"integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
|
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
},
|
},
|
||||||
@ -13595,11 +13594,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "3.4.1",
|
"version": "3.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
|
||||||
"integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
|
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ=="
|
||||||
"optional": true,
|
|
||||||
"peer": true
|
|
||||||
},
|
},
|
||||||
"prismjs": {
|
"prismjs": {
|
||||||
"version": "1.29.0",
|
"version": "1.29.0",
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
"@astrojs/starlight-tailwind": "^2.0.3",
|
"@astrojs/starlight-tailwind": "^2.0.3",
|
||||||
"@astrojs/tailwind": "^5.1.2",
|
"@astrojs/tailwind": "^5.1.2",
|
||||||
"astro": "^4.16.15",
|
"astro": "^4.16.15",
|
||||||
|
"prettier": "^3.4.2",
|
||||||
"sharp": "^0.32.5",
|
"sharp": "^0.32.5",
|
||||||
"starlight-blog": "^0.15.0",
|
"starlight-blog": "^0.15.0",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.4.5"
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 68 KiB |
BIN
opensaas-sh/blog/public/milica.jpg
Normal file
BIN
opensaas-sh/blog/public/milica.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 MiB |
BIN
opensaas-sh/blog/src/assets/turboreel/interface.mp4
Normal file
BIN
opensaas-sh/blog/src/assets/turboreel/interface.mp4
Normal file
Binary file not shown.
BIN
opensaas-sh/blog/src/assets/turboreel/landing.webp
Normal file
BIN
opensaas-sh/blog/src/assets/turboreel/landing.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 76 KiB |
BIN
opensaas-sh/blog/src/assets/turboreel/opensaas.mp4
Normal file
BIN
opensaas-sh/blog/src/assets/turboreel/opensaas.mp4
Normal file
Binary file not shown.
@ -2,6 +2,7 @@
|
|||||||
title: How I Built & Grew CoverLetterGPT to 5,000 Users and $200 MRR
|
title: How I Built & Grew CoverLetterGPT to 5,000 Users and $200 MRR
|
||||||
date: 2023-11-21
|
date: 2023-11-21
|
||||||
tags: ["indiehacker", "saas", "sideproject"]
|
tags: ["indiehacker", "saas", "sideproject"]
|
||||||
|
authors: vince
|
||||||
---
|
---
|
||||||
import { Image } from 'astro:assets';
|
import { Image } from 'astro:assets';
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ tags:
|
|||||||
- sideproject
|
- sideproject
|
||||||
- hackathon
|
- hackathon
|
||||||
hideBannerImage: true
|
hideBannerImage: true
|
||||||
|
authors: vince
|
||||||
---
|
---
|
||||||
import { Image } from 'astro:assets';
|
import { Image } from 'astro:assets';
|
||||||
import wheel from '@assets/cookie-consent/wheel.gif';
|
import wheel from '@assets/cookie-consent/wheel.gif';
|
||||||
|
@ -7,6 +7,7 @@ tags:
|
|||||||
- sideproject
|
- sideproject
|
||||||
- hackathon
|
- hackathon
|
||||||
subtitle: and it was totally worth it
|
subtitle: and it was totally worth it
|
||||||
|
authors: vince
|
||||||
---
|
---
|
||||||
import VideoPlayer from '../../../components/VideoPlayer.astro';
|
import VideoPlayer from '../../../components/VideoPlayer.astro';
|
||||||
import { Image } from 'astro:assets';
|
import { Image } from 'astro:assets';
|
||||||
|
@ -0,0 +1,125 @@
|
|||||||
|
---
|
||||||
|
title: "TurboReel: An Open Source AI Video Generator Built With Open SaaS"
|
||||||
|
date: 2024-12-10
|
||||||
|
tags:
|
||||||
|
- webdev
|
||||||
|
- saas
|
||||||
|
- sideproject
|
||||||
|
- indiehackers
|
||||||
|
authors: milica
|
||||||
|
---
|
||||||
|
import VideoPlayer from '../../../components/VideoPlayer.astro';
|
||||||
|
import { Image } from 'astro:assets';
|
||||||
|
import landing from '../../../assets/turboreel/landing.webp';
|
||||||
|
import interface from '../../../assets/turboreel/interface.mp4';
|
||||||
|
import opensaas from '../../../assets/turboreel/opensaas.mp4';
|
||||||
|
|
||||||
|
<Image src={landing} alt="Landing page" loading="lazy" />
|
||||||
|
|
||||||
|
Peter is the creator of [**TurboReel**](https://turboreelgpt.tech/), an open-source platform with a paid SaaS layer, that transforms how creators generate short-form video content. With just a prompt, users can produce polished TikToks and YouTube Shorts in moments.
|
||||||
|
|
||||||
|
But like any SaaS founder, Peter faced the challenge of turning his vision into reality without getting bogged down in repetitive technical setup. That’s where [**Wasp’s Open SaaS boilerplate**](https://opensaas.sh/) came in.
|
||||||
|
|
||||||
|
In this post, we'll cover three main things: what gave Peter the idea, how he chose the tech stack to build on, and finally, how he made his first $100. Let's dive in!
|
||||||
|
|
||||||
|
## The Starting Point: Open SaaS Boilerplate
|
||||||
|
|
||||||
|
Peter’s journey to Open SaaS began with a simple Google search for SaaS boilerplates.
|
||||||
|
|
||||||
|
> *"I was looking for something that could save me time,"* Peter recalls. *"I came across a few options—some were free but basic, and [others were paid but didn’t feel worth it](https://docs.opensaas.sh/blog/2024-12-04-open-source-saas-boilerplate-vs-paid/). Then I found Wasp’s Open SaaS boilerplate."*
|
||||||
|
|
||||||
|
What stood out to Peter wasn’t just that it was free, but that it was **open source**. *"I liked the idea of building on something maintained by a community, not locked behind a paywall,"* he says. Intrigued, Peter explored [Wasp](https://wasp-lang.dev/) further and discovered an engaging community that offered exactly what he needed to start building TurboReel.
|
||||||
|
|
||||||
|
Here’s a video presenting Open SaaS, generated with TurboReel 🐝
|
||||||
|
|
||||||
|
<VideoPlayer src={opensaas} />
|
||||||
|
|
||||||
|
## TurboReel’s Tech Stack
|
||||||
|
|
||||||
|
TurboReel lets users generate short explainer videos with minimal effort. Starting with a single text prompt describing the video’s purpose (e.g., “Create a video on building your SaaS with OpenSaaS”), users can produce professional-grade TikTok and YT shorts without needing any video editing skills.
|
||||||
|
|
||||||
|
<VideoPlayer src={interface} />
|
||||||
|
|
||||||
|
The platform’s **open-source foundation** unlocks development potential, while the **paid SaaS layer** helps with funding.
|
||||||
|
|
||||||
|
Here’s a closer look at the tech stack behind TurboReel:
|
||||||
|
|
||||||
|
- **Open SaaS - a free, open-source React & Node.js SaaS starter**
|
||||||
|
- Powered by [Wasp](https://wasp-lang.dev/), a full-stack web framework for JavaScript.
|
||||||
|
- Combines **React** for the frontend and **Node.js** for backend.
|
||||||
|
- [Prisma](https://www.prisma.io/) handles the database.
|
||||||
|
- **OpenAI**
|
||||||
|
- Used for generating scripts and scenes in the videos.
|
||||||
|
- [**Pollinations**](https://pollinations.ai/)
|
||||||
|
- Open-source platform for image and text generation.
|
||||||
|
- Provides creative assets to enhance video quality.
|
||||||
|
- [**Revideo**](https://re.video/)
|
||||||
|
- Library for programmatic video creation, replacing the previously used **MoviePy**.
|
||||||
|
|
||||||
|
## Building Faster With Open SaaS Boilerplate
|
||||||
|
|
||||||
|
*"The first thing that impressed me with Open SaaS was how much time it saved,"* Peter says. *"I could start with `wasp new saas` and immediately have a functioning boilerplate. It gave me the foundation I needed to focus on my product, not the setup."*
|
||||||
|
|
||||||
|
The boilerplate included everything he needed:
|
||||||
|
|
||||||
|
- **Authentication via email, GitHub, and Google**
|
||||||
|
- **Running background jobs via pg-boss**
|
||||||
|
- **Database management**
|
||||||
|
- **Frontend-backend communication via a type-safe RPC layer**
|
||||||
|
- **Deployment of the app with a single CLI command**
|
||||||
|
|
||||||
|
One feature that particularly stood out was **Wasp’s deployment commands**.
|
||||||
|
|
||||||
|
> "Usually, deployment takes time to set up properly," Peter explains. "But with Wasp, it was as simple as running `wasp deploy fly deploy`."
|
||||||
|
|
||||||
|
Here’s what Wasp's config file looks like, showcasing full-stack auth in a Wasp app:
|
||||||
|
|
||||||
|
```wasp
|
||||||
|
app myApp {
|
||||||
|
wasp: {
|
||||||
|
version: "^0.15.0"
|
||||||
|
},
|
||||||
|
title: "My App",
|
||||||
|
auth: {
|
||||||
|
userEntity: User,
|
||||||
|
methods: {
|
||||||
|
gitHub: {},
|
||||||
|
email: {
|
||||||
|
fromField: {
|
||||||
|
name: "My App Postman",
|
||||||
|
email: "hello@itsme.com"
|
||||||
|
},
|
||||||
|
emailVerification: {
|
||||||
|
clientRoute: EmailVerificationRoute
|
||||||
|
},
|
||||||
|
passwordReset: {
|
||||||
|
clientRoute: PasswordResetRoute
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onAuthFailedRedirectTo: "/login"
|
||||||
|
},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Out-of-the-box Stripe Integration
|
||||||
|
|
||||||
|
Another significant advantage for Peter was how Open SaaS handled third-party integrations. Setting up services like [**Stripe for payments**](https://docs.opensaas.sh/guides/payments-integration/) often requires a lot of effort, but Wasp’s Open SaaS streamlined the process—just add your API key and you're good to go.
|
||||||
|
|
||||||
|
> *"Payments are usually a huge headache,"* Peter says. *"But Open SaaS made it so smooth. I didn’t have to spend weeks integrating Stripe—it just worked. That gave me more time to focus on TurboReel’s core functionality."*
|
||||||
|
|
||||||
|
## The Power of Open Source
|
||||||
|
|
||||||
|
Both TurboReel and Wasp share a commitment to open source.
|
||||||
|
|
||||||
|
> *"The video generation space is complex,"* Peter explains. *"There aren’t many established solutions for what I’m trying to do. [By making TurboReel open source](https://github.com/TurboReel), I’m inviting smart people to collaborate and help push the project forward."*
|
||||||
|
|
||||||
|
## Getting First Users
|
||||||
|
|
||||||
|
Peter found interesting subreddits on Reddit and shared his product with users. He enabled everyone to sign up and create a few videos to get feedback early. Many in the creator community loved it, and based on their feedback, he iterated, improving the UI and workflow.
|
||||||
|
|
||||||
|
Within days, he secured his first paying customers, validating that his MVP was heading in the right direction. Plans for the future? The sky is the limit!
|
||||||
|
|
||||||
|
## Ready to Build Your SaaS?
|
||||||
|
|
||||||
|
Get started with [Wasp](https://wasp-lang.dev/) today, or explore the [Open SaaS boilerplate](https://opensaas.sh/) to see how it can work for you.
|
Loading…
x
Reference in New Issue
Block a user