-
-
Notifications
You must be signed in to change notification settings - Fork 857
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #345 from wasp-lang/coverletter-making-550
Adding a new blog post about cover letter gpt microsaas
- Loading branch information
Showing
8 changed files
with
187 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file added
BIN
+798 KB
opensaas-sh/blog/src/assets/cover-letter-gpt/coverlettergpt-reddit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
--- | ||
interface Props { | ||
trailingText?: string; | ||
} | ||
const { trailingText = 'and support open-source tools for builders, by builders!' } = Astro.props; | ||
--- | ||
|
||
<div class="bg-yellow-300 p-4 text-center text-md font-bold rounded-lg text-black"> | ||
<span> | ||
⭐️ Star the{' '} | ||
</span> | ||
<a href="https://github.com/wasp-lang/open-saas" class="!text-yellow-800 underline hover:!text-yellow-600"> | ||
Open SaaS repo | ||
</a> | ||
<span> | ||
{trailingText} | ||
</span> | ||
</div> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
--- | ||
interface Props { | ||
id: string; | ||
} | ||
const { id } = Astro.props; | ||
--- | ||
|
||
<style> | ||
.tweet-wrapper { | ||
transform: scale(0.85); | ||
margin: -3rem 0; | ||
} | ||
/* Target the Twitter iframe to reduce padding */ | ||
:global(.twitter-tweet-rendered) { | ||
margin: 0 !important; | ||
padding: 0 !important; | ||
} | ||
</style> | ||
|
||
<div class="tweet-wrapper"> | ||
<blockquote class="twitter-tweet"> | ||
<a href={`https://twitter.com/x/status/${id}`}></a> | ||
</blockquote> | ||
</div> | ||
|
||
<script> | ||
declare global { | ||
interface Window { | ||
twttr: any; | ||
} | ||
} | ||
|
||
window.twttr = (function(d, s, id) { | ||
var js, fjs = d.getElementsByTagName(s)[0], | ||
t = window.twttr || {}; | ||
if (d.getElementById(id)) return t; | ||
js = d.createElement(s) as HTMLScriptElement; | ||
js.id = id; | ||
js.src = "https://platform.twitter.com/widgets.js"; | ||
fjs.parentNode?.insertBefore(js, fjs); | ||
t._e = []; | ||
t.ready = function(f: () => void) { | ||
t._e.push(f); | ||
}; | ||
return t; | ||
}(document, "script", "twitter-wjs")); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
115 changes: 115 additions & 0 deletions
115
opensaas-sh/blog/src/content/docs/blog/2024-12-16-my-gpt-wrapper.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
--- | ||
title: My GPT Wrapper Makes $550 MRR One Year After Launch | ||
date: 2024-12-16 | ||
tags: | ||
- gpt | ||
- saas | ||
- sideproject | ||
- indiehacker | ||
authors: vince | ||
--- | ||
|
||
import { Image } from 'astro:assets'; | ||
import Tweet from '../../../components/Tweet.astro'; | ||
import landingPage from '../../../assets/cover-letter-gpt/coverlettergpt.webp'; | ||
import mrrGraph from '../../../assets/cover-letter-gpt/mrr-graph.webp'; | ||
import StarOpenSaaSCTA from '../../../components/StarOpenSaaSCTA.astro'; | ||
import redditPost from '../../../assets/cover-letter-gpt/coverlettergpt-reddit.png'; | ||
|
||
Hey builders, | ||
|
||
I wanted to share my journey building a micro-SaaS, [CoverLetterGPT](https://coverlettergpt.xyz/), which now earns **$550/month in recurring revenue (MRR)**—all while requiring **minimal effort and maintenance**. Here's how I did it and why I believe small, simple SaaS apps are an underrated way to start as an indie maker. | ||
<Tweet id="1863553258586820976" /> | ||
|
||
### Quick Stats: | ||
|
||
- **Built in 1 week** | ||
- using [Wasp](https://wasp-lang.dev/), a React, NodeJS, & Prisma framework | ||
- and [Chakra UI](https://chakra-ui.com/) for the design system. | ||
- **Runs on autopilot** | ||
- **~$550 MRR** after one year | ||
- Minimal customer support—only **3 Stripe disputes** to date | ||
- Costs **~$15/month** to operate (hosting + OpenAI API fees) | ||
- Deployed on [Railway](https://railway.app/) & [Netlify](https://netlify.com/) | ||
|
||
--- | ||
|
||
BTW, I built [Open SaaS](https://opensaas.sh), the free, open-source SaaS template based on what I learned from building and launching CoverLetterGPT. | ||
|
||
Because Open SaaS is a community-driven project, it also benefits from community feedback and contributions, so it boasts a clean codebase and a ton of useful features. Check it out and give us a star! We're always improving it. | ||
|
||
<StarOpenSaaSCTA /> | ||
|
||
### Small Wins Are Worth It | ||
|
||
Many developers think a SaaS has to be big, flashy, or wildly profitable to be worth building. I disagree. For me: | ||
|
||
- $550/month is fantastic as side income. | ||
- It runs itself, requiring virtually no maintenance. | ||
- I can balance it easily alongside my full-time job. | ||
- It's fun and doesn't consume my free time. | ||
|
||
<Image src={mrrGraph} alt="CoverLetterGPT MRR Graph" /> | ||
|
||
Here's why I think you should aim for small, achievable SaaS projects instead of trying to “hit it big” from the start. | ||
|
||
### Build & Launch Fast | ||
|
||
<Image src={redditPost} alt="CoverLetterGPT Reddit Post" /> | ||
|
||
The most important lesson I've learned: **speed is everything.** The faster you launch, the faster you'll know if your idea works. Here's what worked for me: | ||
|
||
1. **Avoid long, drawn-out failures:** Build small, execute early. | ||
2. **Use the fastest tools available:** I used [Wasp](https://wasp-lang.dev/) because it gives me all the building blocks already set up (auth, database, cron jobs, email sending), letting me focus on the business logic of the app. Paired with [Chakra UI](https://chakra-ui.com/), I was able to build the app in about 1 week. | ||
3. **Forget perfection:** I didn't worry about making it pretty or perfect—it just had to work. | ||
|
||
### Keep It Simple | ||
|
||
The beauty of micro-SaaS is in its simplicity. Here's why: | ||
|
||
- My app does **one thing well**: generating cover letters based on résumés and job descriptions. | ||
- There's no need for a fancy landing page or marketing gimmicks. This is my 🌶 hot take. | ||
- Users get **3 trial credits**—enough to try the app and see value before paying. | ||
|
||
<Image src={landingPage} alt="CoverLetterGPT landing page" /> | ||
|
||
One of the biggest perks of micro-SaaS is how low-maintenance it can be. With CoverLetterGPT, I rarely handle customer service thanks to its simplicity. | ||
|
||
This means I spend my time on **new ideas** rather than maintaining old ones. | ||
|
||
### It's All About Tradeoffs | ||
|
||
While I could optimize and grow CoverLetterGPT further, I've chosen to keep it small and simple. For me: | ||
|
||
- **Small wins** are still wins. | ||
- I value having a side project that's easy to manage alongside my full-time job. | ||
- I'd rather have **less stress** than chase higher profits. | ||
|
||
### Links & Resources | ||
|
||
If you're thinking about launching your own SaaS, here are some helpful resources: | ||
|
||
- 👨💻 [CoverLetterGPT (Live App)](https://coverlettergpt.xyz/) | ||
- 💸 [Open-Source SaaS Template](https://github.com/wasp-lang/open-saas) | ||
- 🛠️ [Framework: Wasp](https://wasp-lang.dev/) | ||
- ✨ [UI Components: Chakra UI](https://chakra-ui.com/) | ||
- 🛠️ [Hosting: Railway](https://railway.app/) & [Netlify](https://netlify.com/) | ||
- ✍️ [My Original Reddit Post](https://www.reddit.com/r/SideProject/comments/1h4t8vk/my_saas_only_makes_550_a_month_and_i_think_thats/) | ||
|
||
### Final Thoughts | ||
|
||
If you're considering building a SaaS, **don't overthink it.** Start small, move fast, and treat it as an experiment. Forget the “rules” and focus on launching. Here's what matters most: | ||
|
||
- Keep it simple: Build an app that solves one problem well. | ||
- Launch fast: Test your idea and iterate based on real feedback. | ||
- Minimize effort: Aim for maximum reward with minimal maintenance. | ||
|
||
For me, **$550 MRR** isn't just “enough”—it's amazing. It's proof that small, focused apps can succeed, and they're a great way to build confidence and skills as a maker. | ||
|
||
## Let's stay in touch! | ||
|
||
If you found this helpful, check me out on [Twitter](https://x.com/hot_town/status/1863553258586820976) where I like to build in public and share what I'm learning and building. | ||
|
||
--- | ||
|
||
<StarOpenSaaSCTA trailingText="and support tools that help you build fast!" /> |
9c9ec7e
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎉 Published on https://docs.opensaas.sh as production
🚀 Deployed on https://6761836e33b48a00b713b5a3--open-saas-docs.netlify.app