mirror of
https://github.com/wasp-lang/open-saas.git
synced 2025-03-29 11:12:19 +01: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.
|
||||
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/tailwind": "^5.1.2",
|
||||
"astro": "^4.16.15",
|
||||
"prettier": "^3.4.2",
|
||||
"sharp": "^0.32.5",
|
||||
"starlight-blog": "^0.15.0",
|
||||
"typescript": "^5.4.5"
|
||||
@ -6826,12 +6827,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
|
||||
"integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
|
||||
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"prettier": "bin/prettier.cjs"
|
||||
},
|
||||
@ -13595,11 +13594,9 @@
|
||||
}
|
||||
},
|
||||
"prettier": {
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
|
||||
"integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
|
||||
"optional": true,
|
||||
"peer": true
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
|
||||
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ=="
|
||||
},
|
||||
"prismjs": {
|
||||
"version": "1.29.0",
|
||||
|
@ -15,6 +15,7 @@
|
||||
"@astrojs/starlight-tailwind": "^2.0.3",
|
||||
"@astrojs/tailwind": "^5.1.2",
|
||||
"astro": "^4.16.15",
|
||||
"prettier": "^3.4.2",
|
||||
"sharp": "^0.32.5",
|
||||
"starlight-blog": "^0.15.0",
|
||||
"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
|
||||
date: 2023-11-21
|
||||
tags: ["indiehacker", "saas", "sideproject"]
|
||||
authors: vince
|
||||
---
|
||||
import { Image } from 'astro:assets';
|
||||
|
||||
|
@ -7,6 +7,7 @@ tags:
|
||||
- sideproject
|
||||
- hackathon
|
||||
hideBannerImage: true
|
||||
authors: vince
|
||||
---
|
||||
import { Image } from 'astro:assets';
|
||||
import wheel from '@assets/cookie-consent/wheel.gif';
|
||||
|
@ -7,6 +7,7 @@ tags:
|
||||
- sideproject
|
||||
- hackathon
|
||||
subtitle: and it was totally worth it
|
||||
authors: vince
|
||||
---
|
||||
import VideoPlayer from '../../../components/VideoPlayer.astro';
|
||||
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