
    <rss 
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:atom="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:typefully="https://typefully.com/profile"
      version="2.0">
      <channel>
        <title>Drew Bredvick (@DBredvick)</title>
        <link>https://typefully.com/DBredvick</link>
        <description>Making the web faster ▲ @Vercel while bootstrapping SaaS on the side #bootstrap1000. 
Currently: @TrySlater ⏰</description>
        <pubDate>Fri, 02 Dec 2022 15:36:21 GMT</pubDate>
        <lastBuildDate>Fri, 02 Dec 2022 15:36:21 GMT</lastBuildDate>
        <generator>Typefully</generator>
        <image>https://screenshots.typefully.com/screenshot?size=1200x640&amp;url=https://typefully.com/DBredvick/card</image>
        <atom:link href="https://typefully.com/DBredvick" rel="self" type="application/rss+xml"/>
        
    <item>
      <guid>https://typefully.com/DBredvick/vu7UXqT</guid>
      <title>💰money tip💰</title>
      <description>💰money tip💰
Dual funnel SaaS: a product that has two different sales funnels, usually split in to low-touch &amp; high-touch.

The low-touch funnel will often help drive in customers to the high-touch plan.</description>
      <link>https://typefully.com/DBredvick/vu7UXqT</link>
      <pubDate>Fri, 02 Dec 2022 15:36:21 GMT</pubDate>
      <content:encoded><![CDATA[💰money tip💰<br>Dual funnel SaaS: a product that has two different sales funnels, usually split in to low-touch & high-touch.<br><br>The low-touch funnel will often help drive in customers to the high-touch plan.<br><br><img alt="Image" src="https://api.typefully.com/media-p/76834f57-142c-404f-bdbe-45e6fbc48e7d/">]]></content:encoded>
      <typefully:post_id>vu7UXqT</typefully:post_id>
      <typefully:post_type>tweet</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/yeqrkHF</guid>
      <title>💰money tip💰</title>
      <description>💰money tip💰
Consumer surplus: the difference in value the customer gets compared to your price.

If I build a SaaS that saves you 10 hours a week and your time is worth $100/hr, I created $1000 of value.

It would be reasonable for me to charge 400/mo for this (10%).</description>
      <link>https://typefully.com/DBredvick/yeqrkHF</link>
      <pubDate>Wed, 30 Nov 2022 13:53:00 GMT</pubDate>
      <content:encoded><![CDATA[💰money tip💰<br>Consumer surplus: the difference in value the customer gets compared to your price.<br><br>If I build a SaaS that saves you 10 hours a week and your time is worth $100/hr, I created $1000 of value.<br><br>It would be reasonable for me to charge 400/mo for this (10%).]]></content:encoded>
      <typefully:post_id>yeqrkHF</typefully:post_id>
      <typefully:post_type>tweet</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/gQzSVVr</guid>
      <title>A down market is a great opportunity to use your …</title>
      <description>A down market is a great opportunity to use your tech skills to help the biz more:

• get involved with sales cycles
• help marketing ship a landing page
• write a script that helps SDRs land more calls

Simple tasks can go a long way 💰</description>
      <link>https://typefully.com/DBredvick/gQzSVVr</link>
      <pubDate>Mon, 21 Nov 2022 14:01:24 GMT</pubDate>
      <content:encoded><![CDATA[A down market is a great opportunity to use your tech skills to help the biz more:<br><br>• get involved with sales cycles<br>• help marketing ship a landing page<br>• write a script that helps SDRs land more calls<br><br>Simple tasks can go a long way 💰]]></content:encoded>
      <typefully:post_id>gQzSVVr</typefully:post_id>
      <typefully:post_type>tweet</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/hBmWFlr</guid>
      <title>Q3 personal goal — avoid meta wor</title>
      <description>Q3 personal goal — avoid meta work. 

Examples of meta work:

• listening to podcasts about building a biz instead of building a biz
• creating your own SaaS starter instead of coding features
• reading books about customer interviews instead of talking to customers
 
Ship 🚢</description>
      <link>https://typefully.com/DBredvick/hBmWFlr</link>
      <pubDate>Tue, 05 Jul 2022 20:10:36 GMT</pubDate>
      <content:encoded><![CDATA[Q3 personal goal — avoid meta work. <br><br>Examples of meta work:<br><br>• listening to podcasts about building a biz instead of building a biz<br>• creating your own SaaS starter instead of coding features<br>• reading books about customer interviews instead of talking to customers<br> <br>Ship 🚢]]></content:encoded>
      <typefully:post_id>hBmWFlr</typefully:post_id>
      <typefully:post_type>tweet</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/learn-to-talk-to-customers-hGZjOOn</guid>
      <title>Learn to talk to customers</title>
      <description>How I learned to talk to customers:

Joined the GTM (go-to-market) team at Vercel.

More devs that want to start a company should join a GTM team. Why? You’ll need to lead sales as the founder at your company. Why not get some experience? There are plenty of technical roles in GTM teams where your …</description>
      <link>https://typefully.com/DBredvick/learn-to-talk-to-customers-hGZjOOn</link>
      <pubDate>Thu, 02 Jun 2022 13:45:57 GMT</pubDate>
      <content:encoded><![CDATA[How I learned to talk to customers:<br><br>Joined the GTM (go-to-market) team at Vercel.<br><br>More devs that want to start a company should join a GTM team. Why?<br><br>You’ll need to lead sales as the founder at your company. Why not get some experience?<br><br>There are plenty of technical roles in GTM teams where your skills are very useful:<br>• sales engineer <br>• solutions architect <br>• customer success engineer <br>• a bunch I’m missing <br><br>Do this at a startup, not a BigCo. <br><br>The sales playbook will be less defined, giving you room to iterate and learn sales, not just repeat a process. <br><br>Pick a company in a market where you love the customers — for me that was JS devs. <br><br>I spend all day trying to help devs enjoy work more & ship faster. <br><br>Bonus points if you later want to serve the same customer at your own company. <br><br>Do you NEED to do this? No. You could start your company and jump into the deep end. <br><br>Joining a GTM team will show you if you like the other parts of the biz before incorporating. ]]></content:encoded>
      <typefully:post_id>hGZjOOn</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/dvGp5Cz</guid>
      <title>The standard pace is for chump</title>
      <description>The standard pace is for chumps. If you’re more driven than most people, you can do way more than anyone expects.

https://sive.rs/kimo</description>
      <link>https://typefully.com/DBredvick/dvGp5Cz</link>
      <pubDate>Mon, 04 Apr 2022 13:39:57 GMT</pubDate>
      <content:encoded><![CDATA[The standard pace is for chumps. If you’re more driven than most people, you can do way more than anyone expects.<br><br><a href="https://sive.rs/kimo" target="_blank" rel="nofollow">https://sive.rs/kimo</a>]]></content:encoded>
      <typefully:post_id>dvGp5Cz</typefully:post_id>
      <typefully:post_type>tweet</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/6s2Tm9n</guid>
      <title>My browsing time on Twitter averages around 45 mi…</title>
      <description>My browsing time on Twitter averages around 45 mins a day. 

Trying an experiment for one month:

- deleting the Twitter app
- sending tweets via @typefullyapp 
- replying to DMs via @TextsHQ 

I’ll batch respond to tweets once a day on my desktop.</description>
      <link>https://typefully.com/DBredvick/6s2Tm9n</link>
      <pubDate>Fri, 11 Mar 2022 14:02:26 GMT</pubDate>
      <content:encoded><![CDATA[My browsing time on Twitter averages around 45 mins a day. <br><br>Trying an experiment for one month:<br><br>- deleting the Twitter app<br>- sending tweets via <a class="tweet-url username" href="https://twitter.com/typefullyapp" data-screen-name="typefullyapp" target="_blank" rel="nofollow">@typefullyapp</a> <br>- replying to DMs via <a class="tweet-url username" href="https://twitter.com/TextsHQ" data-screen-name="TextsHQ" target="_blank" rel="nofollow">@TextsHQ</a> <br><br>I’ll batch respond to tweets once a day on my desktop.]]></content:encoded>
      <typefully:post_id>6s2Tm9n</typefully:post_id>
      <typefully:post_type>tweet</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/why-marketplaces-m9ralEUIvJDu</guid>
      <title>Why marketplaces?</title>
      <description>It’s been great building a SaaS for the Zoom marketplace. 

There’s a lot built into the process. 

• a finish line
• third-party QA
• security audit
• documentation 
• marketing 

In a world with unlimited possibilities, constraints are freeing. Finally listening to @robwalling’s advice to stair s…</description>
      <link>https://typefully.com/DBredvick/why-marketplaces-m9ralEUIvJDu</link>
      <pubDate>Sat, 08 Jan 2022 18:35:11 GMT</pubDate>
      <content:encoded><![CDATA[It’s been great building a SaaS for the Zoom marketplace. <br><br>There’s a lot built into the process. <br><br>• a finish line<br>• third-party QA<br>• security audit<br>• documentation <br>• marketing <br><br>In a world with unlimited possibilities, constraints are freeing.<br><br>Finally listening to <a class="tweet-url username" href="https://twitter.com/robwalling" data-screen-name="robwalling" target="_blank" rel="nofollow">@robwalling</a>’s advice to stair step up in difficulty.<br><br><img alt="Image" src="https://api.typefully.com/media-p/aad2f3b4-9737-46b7-8a61-ad14cf980968/">]]></content:encoded>
      <typefully:post_id>m9ralEUIvJDu</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/the-mid-level-dip-rC90RUEUNvrR</guid>
      <title>The mid-level dip</title>
      <description>In 2022, expect more mid-to-senior dev content from me.

There are tons of courses, blog posts, and tweets with advice on building web apps. 

They mostly focus on beginners, which is great. The world needs more people who can code. But the gap between junior and senior is very large.

And there’s …</description>
      <link>https://typefully.com/DBredvick/the-mid-level-dip-rC90RUEUNvrR</link>
      <pubDate>Mon, 03 Jan 2022 15:24:33 GMT</pubDate>
      <content:encoded><![CDATA[In 2022, expect more mid-to-senior dev content from me.<br><br>There are tons of courses, blog posts, and tweets with advice on building web apps. <br><br>They mostly focus on beginners, which is great. The world needs more people who can code.<br><br>But the gap between junior and senior is very large.<br><br>And there’s not enough content focused on this gap.<br><br>We’ll call this “the mid-level dip”<br><br><img alt="Image" src="https://api.typefully.com/media-p/a236289d-fea7-49cd-b8c6-6afab7bdcfbd/"><br><br>Where are the 300 and 400 level classes?<br><br>People doing great work that inspires me:<br>• <a class="tweet-url username" href="https://twitter.com/mjwhansen" data-screen-name="mjwhansen" target="_blank" rel="nofollow">@mjwhansen</a> & <a class="tweet-url username" href="https://twitter.com/leenyburger" data-screen-name="leenyburger" target="_blank" rel="nofollow">@leenyburger</a> <br>• <a class="tweet-url username" href="https://twitter.com/swyx" data-screen-name="swyx" target="_blank" rel="nofollow">@swyx</a> <br>• Vercel DevRel team<br>• <a class="tweet-url username" href="https://twitter.com/JoshWComeau" data-screen-name="JoshWComeau" target="_blank" rel="nofollow">@JoshWComeau</a> <br>• entire <a class="tweet-url username" href="https://twitter.com/tailwindlabs" data-screen-name="tailwindlabs" target="_blank" rel="nofollow">@tailwindlabs</a> team<br><br>I hesitate to make 300+ level content because I have a hard time calling myself an “expert.”<br><br>But I’m encouraged by this tweet: <br><a href="https://twitter.com/jamesclear/status/1474049252800315396?s=21" target="_blank" rel="nofollow">https://twitter.com/jamesclear/status/1474049252800315396?s=21</a><br><br>There needs to be 10x more content like this. I’m going to help create it. <br><br>Follow along for deep dives on:<br>• Next.js<br>• Serverless SaaS<br>• Web perf & Core Web Vitals]]></content:encoded>
      <typefully:post_id>rC90RUEUNvrR</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/the-important-things-lPoVpSO</guid>
      <title>The important things</title>
      <description>𝚌𝚘𝚗𝚜𝚝 𝚊𝚗𝚗𝚒𝚟𝚎𝚛𝚜𝚊𝚛𝚢 = 𝚗𝚎𝚠 𝙳𝚊𝚝𝚎(𝟸𝟶𝟸𝟶, 𝟷𝟷, 𝟷𝟸);

One year married to my best friend ❤️  And yes, I had to read the docs to make sure I was getting monthIndex right.</description>
      <link>https://typefully.com/DBredvick/the-important-things-lPoVpSO</link>
      <pubDate>Tue, 14 Dec 2021 14:33:47 GMT</pubDate>
      <content:encoded><![CDATA[𝚌𝚘𝚗𝚜𝚝 𝚊𝚗𝚗𝚒𝚟𝚎𝚛𝚜𝚊𝚛𝚢 = 𝚗𝚎𝚠 𝙳𝚊𝚝𝚎(𝟸𝟶𝟸𝟶, 𝟷𝟷, 𝟷𝟸);<br><br>One year married to my best friend ❤️ <br><br><img alt="Image" src="https://pbs.twimg.com/media/FGk0AkEWYA0I91l.jpg"><br><br>And yes, I had to read the docs to make sure I was getting monthIndex right.]]></content:encoded>
      <typefully:post_id>lPoVpSO</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/build-in-public-jJralOQ</guid>
      <title>Build in public</title>
      <description>I&#39;m doing #buildinpublic, but differently:

› Proof of work each day
› Documenting my journey, no prescriptions
› Doing it for 1000 days

My key metric isn&#39;t Twitter followers, it&#39;s &quot;do I make progress for 1000 days&quot;. Follow along on my pinned tweet

https://twitter.com/DBredvick/status/14621187458…</description>
      <link>https://typefully.com/DBredvick/build-in-public-jJralOQ</link>
      <pubDate>Sat, 27 Nov 2021 19:10:03 GMT</pubDate>
      <content:encoded><![CDATA[I'm doing <a href="https://twitter.com/search?q=%23buildinpublic" title="#buildinpublic" class="tweet-url hashtag" target="_blank" rel="nofollow">#buildinpublic</a>, but differently:<br><br>› Proof of work each day<br>› Documenting my journey, no prescriptions<br>› Doing it for 1000 days<br><br>My key metric isn't Twitter followers, it's "do I make progress for 1000 days". Follow along on my pinned tweet<br><br><a href="https://twitter.com/DBredvick/status/1462118745896333312" target="_blank" rel="nofollow">https://twitter.com/DBredvick/status/1462118745896333312</a><br><br>Want to join? Check out this blog post: <a href="https://drew.tech/posts/bootstrap-1000" target="_blank" rel="nofollow">https://drew.tech/posts/bootstrap-1000</a>]]></content:encoded>
      <typefully:post_id>jJralOQ</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/bootstrap-1000-xgzERC7</guid>
      <title>Bootstrap 1000 🧵</title>
      <description>I created the #bootstrap1000 challenge to stair-step my way to a profitable business.

Check the thread for progress updates 🧵
https://drew.tech/posts/bootstrap-1000 #bootstrap1000 update: 

Today I stood up a new repo using this stack. Really enjoining @planetscaledata for local dev. Branches are …</description>
      <link>https://typefully.com/DBredvick/bootstrap-1000-xgzERC7</link>
      <pubDate>Sat, 20 Nov 2021 17:57:43 GMT</pubDate>
      <content:encoded><![CDATA[I created the <a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> challenge to stair-step my way to a profitable business.<br><br>Check the thread for progress updates 🧵<br><a href="https://drew.tech/posts/bootstrap-1000" target="_blank" rel="nofollow">https://drew.tech/posts/bootstrap-1000</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update: <br><br>Today I stood up a new repo using this stack. Really enjoining <a class="tweet-url username" href="https://twitter.com/planetscaledata" data-screen-name="planetscaledata" target="_blank" rel="nofollow">@planetscaledata</a> for local dev. Branches are a primitive that make a ton of sense in SQL-land. <br><br><a href="https://twitter.com/DBredvick/status/1454467153546055695" target="_blank" rel="nofollow">https://twitter.com/DBredvick/status/1454467153546055695</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 2/1000<br><br>✍️"Writing is thinking. To write well is to think clearly. That's why it's so hard." <br><br>I wrote the ideas I have for fixing common issues sales engineering teams face. Sharing entirely in public in true <a href="https://twitter.com/search?q=%23buildinpublic" title="#buildinpublic" class="tweet-url hashtag" target="_blank" rel="nofollow">#buildinpublic</a> fashion.<br><br><a href="https://drew.tech/posts/sales-engineering" target="_blank" rel="nofollow">https://drew.tech/posts/sales-engineering</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 3/1000<br><br>I got <a class="tweet-url username" href="https://twitter.com/nextauthjs" data-screen-name="nextauthjs" target="_blank" rel="nofollow">@nextauthjs</a> working with Zoom as an OAuth provider &amp; got a working API call to the Zoom API 🎉<br><br>Auth can be a huge pain. Next Auth fixes this 🤌 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FE2iBwJWYAIxQOx.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 4/1000<br><br>I got refresh tokens for Zoom API calls working. I'm covered on auth for the next 15 years I think?<br><br>Going to leave that edge case for Future Drew, he'll figure that out if it ends up mattering 😄 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FFJ3z_-XMAAnyCh.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 5/1000<br><br>To build this app, I had to subscribe to a paid Zoom plan at $15/mo due to paid-only API calls💸<br><br>After that, I got the "past meeting participants" call working.<br><br>Up next, adding the "CRM screen". Thankfully <a class="tweet-url username" href="https://twitter.com/tailwindui" data-screen-name="tailwindui" target="_blank" rel="nofollow">@tailwindui</a> has an amazing example. <br><br><img alt="Image" src="https://pbs.twimg.com/media/FFONFjqXMAUF7JN.jpg"><br><br><img alt="Image" src="https://pbs.twimg.com/media/FFONm0SX0AgCM_g.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 6/1000<br><br>I got the TailwindUI CRM-view working in a Next.js app. There were a few issues I ran into, but shout out to the <a class="tweet-url username" href="https://twitter.com/tailwindui" data-screen-name="tailwindui" target="_blank" rel="nofollow">@tailwindui</a> Discord &amp; search. Search is a superpower 🦸<br><br>Blog post inbound ✍️ <br><br><img alt="Image" src="https://pbs.twimg.com/media/FFTxFThWUAIgSv7.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 7/1000<br><br>I fought the Zoom API and won 💪<br><br>Fun fact: the Zoom API has different UUID values for meetings before they happen vs after they happen.<br><br>UUIDs are not one-to-one with meeting instances?<br><br>Either way, we're in business. Thank goodness for forums 🙏 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FFYvOzJWUAUjOC4.jpg"><br><br><img alt="Image" src="https://pbs.twimg.com/media/FFYvXsCXwAcBztH.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 8/1000<br><br>Pulled some of the relevant data out of the Zoom response API, bought a domain, and added the nice little favicon icons on the participant cards 💅<br><br>Tomorrow is going to be a cleanup day for the code, it's getting a little messy 😅 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FFfbhdZWUAIPewi.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 9/1000<br><br>I added a Twitter to the app in 15 minutes with <a class="tweet-url username" href="https://twitter.com/nextauthjs" data-screen-name="nextauthjs" target="_blank" rel="nofollow">@nextauthjs</a>. Next up: API calls to:<br>1) search for users<br>2) automatically follow them<br>3) add them to a list  <br><br>After this step, I'll be able to get tons of value out of this tool at my day job 🚀 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FFpt6B-WQAQbjNH.png"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 10/1000<br><br>1% of the way there 🎉<br><br>Today I automated the Twitter search process and started populating my Zoom participants with Twitter profile data automatically. It's really starting to come together. <a href="https://twitter.com/search?q=%23buildinginpublic" title="#buildinginpublic" class="tweet-url hashtag" target="_blank" rel="nofollow">#buildinginpublic</a> <br><br><video><source src="https://video.twimg.com/ext_tw_video/1466925879314034697/pu/vid/1366x720/9IZVO-F2tvFk8sdv.mp4?tag=12" type="video/mp4"></video><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 11/1000<br><br>Added a screenshot of the email domain from participants in the meeting. Also grabbed the "theme-color" meta property to customize the header 💅<br><br>I applied to let external users install the Zoom app so I can start beta testing 🚀 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FFyW3nSWYAccmm6.jpg"><br><br><img alt="Image" src="https://pbs.twimg.com/media/FFyWIWWXMAAcOcp.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 12/1000<br><br>I created a (temporary) logo for this project. Why? The Zoom Marketplace requires one to submit the app.<br><br>Seriously, Canva is great. Made this logo while getting a pedicure with my wife. Now I've got a logo and soft feet.<br><a href="https://beesocial.io" target="_blank" rel="nofollow">https://beesocial.io</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 13/1000<br><br>I got started with the security &amp; privacy audit for Zoom applications. <br><br>I need to:<br>- complete a technical design doc<br>- document my dev lifecycle<br>- add static &amp; dynamic security tests<br>- add e2e / unit tests<br>- pen test<br><br>Quite the list 😅 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FF9gOg0XwAM-rM5.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 14/1000<br><br>I did a lot of things:<br>✅ Added Cypress tests using Vercel preview deploys<br>✅ Added Jest test config<br>✅ Turned on Github static analysis features<br><br>Fun fact, running against Vercel preview deployments is almost twice as fast as against <a href="https://localhost" target="_blank" rel="noopener noreferrer">localhost</a> 🏎💨 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FGDOVVGWQAEKQtm.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 15/1000<br><br>Today I wrote a few Cypress tests, added a waiting list signup to the home page, and added E2E tests for the waitlist submission.<br><br>(btw, this is the first side project I've properly tested 😅)<br><br>Here's some video output from the Cypress tests: <br><br><video><source src="https://video.twimg.com/ext_tw_video/1469174163042623495/pu/vid/1280x720/WhsDlGYfeSl7oqVU.mp4?tag=12" type="video/mp4"></video><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 16/1000<br><br>This is the most effort I've invested in dx on a side project before:<br><br>› Created dev database branch on <a class="tweet-url username" href="https://twitter.com/planetscaledata" data-screen-name="planetscaledata" target="_blank" rel="nofollow">@planetscaledata</a> <br>› Configured proper dev/prod vars in Vercel<br>› E2E tests for authentication🔒<br>› eslint, prettier, and Next Conformance <br><br><img alt="Image" src="https://pbs.twimg.com/media/FGWbgspXwAEXd8g.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 17/1000<br><br>I automated weekly audits with <a href="http://hostedscan.com" target="_blank" rel="nofollow">http://hostedscan.com</a> and started fixing some of the issues.<br><br>Zoom requires OWASP Top 10 audits for apps in their app marketplace.<br><br>There are a lot of false positives, but it's better than nothing (3 found so far).<br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 18/1000<br><br>I had too much fun configuring Cypress w GitHub Actions and parallelizing them, cutting testing to 1/3rd.<br><br>I also fixed styling issues that were blocking iOS users from scrolling to the email input on the hp.<br><br>Up next: docs, docs, docs ✍️ <br><br><img alt="Image" src="https://pbs.twimg.com/media/FGnVl1xXEAQi3Bv.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 19/1000<br><br>Got a good start on docs while flying home for the holidays.<br><br><a class="tweet-url username" href="https://twitter.com/balsamiq" data-screen-name="balsamiq" target="_blank" rel="nofollow">@balsamiq</a> ftw with architecture diagrams <br><br><img alt="Image" src="https://pbs.twimg.com/media/FHAfZStXwAEXpFe.png"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> 20/1000<br><br>Added a proper local dev database and started to address the first round of Zoom revisions. <br><br>Refactored some code to make adding new pages easier. Settings page coming tomorrow.<br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 21/1000<br><br>Started the settings page, not quite finished. Thank goodness for <a class="tweet-url username" href="https://twitter.com/tailwindui" data-screen-name="tailwindui" target="_blank" rel="nofollow">@tailwindui</a> 🙏<br><br>Spent some time migrating from Revue to ConvertKit as well <a href="https://twitter.com/DBredvick/status/1475597442305474565" target="_blank" rel="nofollow">https://twitter.com/DBredvick/status/1475597442305474565</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 22/1000<br><br>Added a feature I hope is barely used <br><br><img alt="Image" src="https://pbs.twimg.com/media/FHuhxtnXwAYobcZ.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 23/1000<br><br>Adding a 14-day trial is somewhat more complicated than I anticipated. Very thankful for great docs from Stripe 🙏 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FH4dlAWXEAISV_n.png"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 24/1000<br><br>Made a ton of progress today. Finished <a class="tweet-url username" href="https://twitter.com/BeeSocial_io" data-screen-name="BeeSocial_io" target="_blank" rel="nofollow">@BeeSocial_io</a> MVP, just waiting on Zoom now. <br><br><img alt="Image" src="https://pbs.twimg.com/media/FH_i1bzWUAE5Nz1.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 25/1000<br><br>Finished <a class="tweet-url username" href="https://twitter.com/BeeSocial_io" data-screen-name="BeeSocial_io" target="_blank" rel="nofollow">@BeeSocial_io</a>'s home page v1 today 🚀 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FIHi0-8XEAQjRKD.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 26/1000<br><br>And let there be docs (<a href="http://docs.beesocial.io" target="_blank" rel="nofollow">http://docs.beesocial.io</a>)<br><br><a href="http://nextra.vercel.app" target="_blank" rel="nofollow">http://nextra.vercel.app</a> makes creating docs very simple. <br><br><img alt="Image" src="https://pbs.twimg.com/media/FINmoC8XsAEcHMz.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 27/1000<br><br>🤖 the future: low code + serverless<br><br>A working contact page glued together with:<br>• Zapier<br>• Google Sheets<br>• Next.js API route<br>• <a class="tweet-url username" href="https://twitter.com/tailwindui" data-screen-name="tailwindui" target="_blank" rel="nofollow">@tailwindui</a> <br><br><img alt="Image" src="https://pbs.twimg.com/media/FIOk0mMXEAYCyVy.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 28/1000<br><br>✅ Submitted<br><br>and now we wait 🙏 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FITiBRgXMAENzH1.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 29/1000<br><br>Finally added a pricing page <br><br>oh and my app is getting reviewed right now I think? <a href="https://twitter.com/DBredvick/status/1478868290218958858" target="_blank" rel="nofollow">https://twitter.com/DBredvick/status/1478868290218958858</a> <br><br><img alt="Image" src="https://pbs.twimg.com/media/FIY9WPbXIAA5q4s.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 30/1000<br><br>Got the feedback from Zoom, addressed the application changes. <br><br>They caught some pretty tricky bugs.<br><br>Need to update docs tomorrow and we should be good to go 🎉<br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 31/1000<br><br>Lots of updates for this one:<br>- plan selector<br>- shipped a pricing page<br>- addressed some Twitter-related bugs<br>- addressed feedback from the Zoom team<br>- mocked up more realistic screenshots<br><br>Resubmitted the app, fingers crossed 🙏 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FIoNEgJWQAEhVIM.jpg"><br><br><img alt="Image" src="https://pbs.twimg.com/media/FIoNHkAXsAAxiMI.jpg"><br><br><img alt="Image" src="https://pbs.twimg.com/media/FIoNaOpXoAU7SXL.jpg"><br><br><img alt="Image" src="https://pbs.twimg.com/media/FIoNhBDX0AUQGkE.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 32/1000<br><br>annndd I pushed a bug right before I submitted that last review 🤦‍♂️<br><br>Thankful for the Zoom reviewers for being thorough and bringing bad UX &amp; bugs to my attention.<br><br>Since the UI is solidifying, I need to spend some more time writing Cypress tests.<br><br><a href="https://twitter.com/search?q=%23bootstrap" title="#bootstrap" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap</a> update 33/1000<br><br>bad news: you have to call me to cancel a subscription to my SaaS...<br><br>Just kidding, got Stripe cancelation to automatically happen when a user deletes their account. <br><br><img alt="Image" src="https://pbs.twimg.com/media/FI10XjFX0AYqgVI.png"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 34/1000<br><br>Gave users the ability to delete their account even if they haven't completed onboarding.<br><br>It's been very clear through this app review process that the Zoom team cares about user privacy &amp; security. As a Zoom user, I'm quite relieved 😌 <br><br><img alt="Image" src="https://pbs.twimg.com/media/FI78sryXIAYn1Uk.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 35/1000<br><br>Addressed some more billing-related issues. Going to put some time into thinking about automated email flows later tonight.<br><br>I've got a solid core experience, now it's just about creating the marketing/sales funnel around the product.<br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 36/1000<br><br>I've addressed all Zoom feedback, just waiting on the security audit.<br><br>Going to get the <a class="tweet-url username" href="https://twitter.com/BeeSocial_io" data-screen-name="BeeSocial_io" target="_blank" rel="nofollow">@BeeSocial_io</a> blog started today: <a href="https://twitter.com/DBredvick/status/1482436600994873349" target="_blank" rel="nofollow">https://twitter.com/DBredvick/status/1482436600994873349</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 37/1000<br><br>Waiting on Zoom review, so gave myself permission to tinker. A question I've had forever:<br><br>How would I scale a cron job SaaS?<br><br>The answer:<br>- lambda rate(1 min) scheduler<br>- dynamo table<br>- SQS delay queues<br><br>Boom, somewhat infinite cron scheduler 🚀<br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 38/1000<br><br>Stress-tested a cron running every second for a while, I think we're in the clear.<br><br>I would love to provide a free tier cron service, margins are looking like it's possible. <br><br>Using the Platforms starter on this new project  <br><a href="https://twitter.com/vercel/status/1484237805941403655" target="_blank" rel="nofollow">https://twitter.com/vercel/status/1484237805941403655</a> <br><br><img alt="Image" src="https://pbs.twimg.com/media/FJmUC4xVkAMp7WD.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 39/1000 <br><br>There was quite a break in these posts. I'm still waiting for Zoom approval on <a class="tweet-url username" href="https://twitter.com/BeeSocial_io" data-screen-name="BeeSocial_io" target="_blank" rel="nofollow">@BeeSocial_io</a>, but I think we're getting close🤞<br><br>TailwindUI came out with a calendar component, a sign to continue down the cron path? 👀<a href="https://twitter.com/DBredvick/status/1489803216317464584" target="_blank" rel="nofollow">https://twitter.com/DBredvick/status/1489803216317464584</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 40/1000<br><br>Animated an SVG with some JS, messed around with absolute position CSS, and got v1 deployed. <br><br><video><source src="https://video.twimg.com/ext_tw_video/1490528922236329984/pu/vid/1280x720/gJYxncUoqbgQSmul.mp4?tag=12" type="video/mp4"></video><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 41/1000<br><br>Added the domain to my Vercel deployment and we’re good to go. <br><br>🔥 hot take: small Twitter OG images look better than the big ones <br><br><a href="https://scriptcron.com/" target="_blank" rel="nofollow">https://scriptcron.com/</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 42/1000<br><br>Added a work log, so I can expand last a single tweet of info: <br><br><a href="https://drew.tech/logs/2022-02-09-hello-world" target="_blank" rel="nofollow">https://drew.tech/logs/2022-02-09-hello-world</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 43/1000<br><br>Created a list of what's left to work on &amp; updated the in-app layout.<br><br><a href="https://drew.tech/logs/2022-02-10-more-ui-work" target="_blank" rel="nofollow">https://drew.tech/logs/2022-02-10-more-ui-work</a> <br><br><img alt="Image" src="https://pbs.twimg.com/media/FLRiMiFXEAMqMMw.jpg"><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 44/1000<br><br>Made the TailwindUI layout reusable, claimed <a class="tweet-url username" href="https://twitter.com/ScriptCron" data-screen-name="ScriptCron" target="_blank" rel="nofollow">@ScriptCron</a> Twitter handle, and started some API changes to expose CRUD task endpoints.<br><a href="https://drew.tech/logs/2022-02-21-components-and-tailwind" target="_blank" rel="nofollow">https://drew.tech/logs/2022-02-21-components-and-tailwind</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update 45,46,47,48/1000<br><br>While I haven't been tweeting as much, I've made a ton of progress. <br><br>- finished API for my serverless/dynamodb scheduler<br>- updated the brand<br>- configured Graphql endpoints<br>- all "read" sections of UI are done<br><br><a href="https://twitter.com/DBredvick/status/1505936382358966275" target="_blank" rel="nofollow">https://twitter.com/DBredvick/status/1505936382358966275</a><br><br><a href="https://twitter.com/search?q=%23bootstrap1000" title="#bootstrap1000" class="tweet-url hashtag" target="_blank" rel="nofollow">#bootstrap1000</a> update:<br><br>I've been rewriting <a class="tweet-url username" href="https://twitter.com/TrySlater" data-screen-name="TrySlater" target="_blank" rel="nofollow">@TrySlater</a>  prior to doing a big launch<br><br>The changes:<br>› fully TypeScript<br>› E2E tested<br>› NextAuth instead of Passport.js<br>› trpc instead of GraphQL<br>› One pscale db (was a mix of pscale &amp; Dynamo)<br>› Shared Prisma via Turborepo]]></content:encoded>
      <typefully:post_id>xgzERC7</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>true</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/start-a-saas-for-cheap-FWcZUhI</guid>
      <title>Start a SaaS for cheap</title>
      <description>Dev consumer surplus
Scale a DB to millions of MAUs w/ types, create an auth API, hire a design team, &amp;amp; build a framework + hosting infra

Instead:
- @prisma
- @planetscaledata $29/mo
- @tailwindui $279
- @nextauthjs
- @vercel + #Nextjs $20/mo

Startup cost: $328 + domain name This stack scales…</description>
      <link>https://typefully.com/DBredvick/start-a-saas-for-cheap-FWcZUhI</link>
      <pubDate>Sat, 30 Oct 2021 15:16:06 GMT</pubDate>
      <content:encoded><![CDATA[Dev consumer surplus<br>Scale a DB to millions of MAUs w/ types, create an auth API, hire a design team, &amp; build a framework + hosting infra<br><br>Instead:<br>- <a class="tweet-url username" href="https://twitter.com/prisma" data-screen-name="prisma" target="_blank" rel="nofollow">@prisma</a><br>- <a class="tweet-url username" href="https://twitter.com/planetscaledata" data-screen-name="planetscaledata" target="_blank" rel="nofollow">@planetscaledata</a> $29/mo<br>- <a class="tweet-url username" href="https://twitter.com/tailwindui" data-screen-name="tailwindui" target="_blank" rel="nofollow">@tailwindui</a> $279<br>- <a class="tweet-url username" href="https://twitter.com/nextauthjs" data-screen-name="nextauthjs" target="_blank" rel="nofollow">@nextauthjs</a><br>- <a class="tweet-url username" href="https://twitter.com/vercel" data-screen-name="vercel" target="_blank" rel="nofollow">@vercel</a> + <a href="https://twitter.com/search?q=%23Nextjs" title="#Nextjs" class="tweet-url hashtag" target="_blank" rel="nofollow">#Nextjs</a> $20/mo<br><br>Startup cost: $328 + domain name<br><br>This stack scales great, too.<br><br>Paid PlanetScale handles 10k concurrent, Next.js ISR keeps perf high and function usage low, Tailwind &amp; Prisma keep me sain.<br><br>Higher developer productivity, fewer headaches. It's a win, win.<br><br>If I was a VC, betting on companies that leverage layer2 of the cloud would be my investment thesis.]]></content:encoded>
      <typefully:post_id>FWcZUhI</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/my-startup-recipe-9Oo6xMn</guid>
      <title>My startup recipe </title>
      <description>Here&#39;s how I build real products 💰

(&quot;real&quot; means auth, database, payments are required)

It&#39;s getting easier and easier to ship a SaaS quickly 🚀 I fork a Next.js starter that has a ton of great included features:

• Stripe webhook product sync
• Auth and DB provided by Supabase
• Stripe Checkout a…</description>
      <link>https://typefully.com/DBredvick/my-startup-recipe-9Oo6xMn</link>
      <pubDate>Wed, 30 Jun 2021 15:00:06 GMT</pubDate>
      <content:encoded><![CDATA[Here's how I build real products 💰<br><br>("real" means auth, database, payments are required)<br><br>It's getting easier and easier to ship a SaaS quickly 🚀<br><br>I fork a Next.js starter that has a ton of great included features:<br><br>• Stripe webhook product sync<br>• Auth and DB provided by Supabase<br>• Stripe Checkout already configured<br><br>After forking it, deploy to Vercel. (Click button in README)<br><br><a href="https://github.com/vercel/nextjs-subscription-payments" target="_blank" rel="nofollow">https://github.com/vercel/nextjs-subscription-payments</a><br><br>The project already uses Tailwind, so I generally pull in additional TailwindUI components. <br><br>Since I use React, TailwindUI is perfect. There are pre-built components for both React &amp; Vue.<br><br>Stripe is the source of truth for our products and pricing. <br><br>The webhook in the starter automatically syncs product changes and pricing to our Supabase instance. <br><br>Once you create a product, the price will be reflected on the /pricing page <br><br><img alt="Image" src="https://pbs.twimg.com/media/E5I4jPlUcAkic_B.jpg"><br><br>So that we can send lifecycle emails to our users, we need to integrate with ConvertKit. <br><br>Create a form in ConvertKit and a Next.js function that calls the ConvertKit API when new users sign up. <br><br>We'll build out lifecycle emails later. <br><br><a href="https://developers.convertkit.com/#forms" target="_blank" rel="nofollow">https://developers.convertkit.com/#forms</a><br><br>Next, we need to add analytics so we know what's happening inside our app. <br><br>I'd opt for Google Analytics to start. It's free, powerful, and well tested. <br><br>Add this to your _app.js using Next 11's script tags.<br><br>Look into adding additional visibility into the app:<br><br>• Hotjar <br>• Sentry<br>• LogRocket<br><br>These tools can help you spot dev errors and bad user experiences. They all have generous free tiers for when you're starting out.<br><br>Next, add logging. Vercel doesn't automatically log all of your requests. Thankfully, they have several integrations with third parties that handle this. <br><br>Logflare is free &amp; great. I set up queries that alert me in Slack anytime there are 500 errors on my serverless functions.<br><br>Go live 🎉🔥🚀<br><br>The readme from the starter has instructions on how to go from Stripe's testing mode to production. <br><br>Install the Go Live Stripe integration to switch your environment variables. Then you'll need to redeploy to start using these new variables.<br><br>There's a lot of other work to do (finding customers, building business logic, etc), but starting a SaaS is becoming easier and easier. <br><br>Shout out to all the tools that make this possible: <a class="tweet-url username" href="https://twitter.com/vercel" data-screen-name="vercel" target="_blank" rel="nofollow">@vercel</a> <a class="tweet-url username" href="https://twitter.com/stripe" data-screen-name="stripe" target="_blank" rel="nofollow">@stripe</a> <a class="tweet-url username" href="https://twitter.com/supabase_io" data-screen-name="supabase_io" target="_blank" rel="nofollow">@supabase_io</a> <a class="tweet-url username" href="https://twitter.com/tailwindui" data-screen-name="tailwindui" target="_blank" rel="nofollow">@tailwindui</a> <a class="tweet-url username" href="https://twitter.com/logflare_logs" data-screen-name="logflare_logs" target="_blank" rel="nofollow">@logflare_logs</a> <a class="tweet-url username" href="https://twitter.com/ConvertKit" data-screen-name="ConvertKit" target="_blank" rel="nofollow">@ConvertKit</a><br><br>This official Vercel plugin helps make getting started super simple: <a href="https://twitter.com/supabase/status/1410912526099906562" target="_blank" rel="nofollow">https://twitter.com/supabase/status/1410912526099906562</a>]]></content:encoded>
      <typefully:post_id>9Oo6xMn</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/automation-margin-gYMzXHA</guid>
      <title>Automation === margin</title>
      <description>Everyone knows @levelsio for his &quot;single PHP file&quot; and &quot;just use whatever language you know&quot; tech opinions.

But the one that&#39;s helped him keep RemoteOK margins high (94%) and time investment lower (.88 FTE) is automating like crazy &amp;amp; running amazing E2E tests.  This pairs nicely with @jdnoc’s …</description>
      <link>https://typefully.com/DBredvick/automation-margin-gYMzXHA</link>
      <pubDate>Fri, 11 Jun 2021 16:19:20 GMT</pubDate>
      <content:encoded><![CDATA[Everyone knows <a class="tweet-url username" href="https://twitter.com/levelsio" data-screen-name="levelsio" target="_blank" rel="nofollow">@levelsio</a> for his "single PHP file" and "just use whatever language you know" tech opinions.<br><br>But the one that's helped him keep RemoteOK margins high (94%) and time investment lower (.88 FTE) is automating like crazy &amp; running amazing E2E tests. <br><br><img alt="Image" src="https://pbs.twimg.com/media/E3nTOoQXwAU4XQs.jpg"><br><br>This pairs nicely with <a class="tweet-url username" href="https://twitter.com/jdnoc" data-screen-name="jdnoc" target="_blank" rel="nofollow">@jdnoc</a>’s post about “The Factory is the Product”. <br><br>Makes me want to be a person who creates and automates businesses which is different than simply owning a profitable SaaS. <br><br><a href="https://jdnoc.com/factory/" target="_blank" rel="nofollow">https://jdnoc.com/factory/</a>]]></content:encoded>
      <typefully:post_id>gYMzXHA</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/struggles-of-habit-93W8YBF</guid>
      <title>Struggles of habit</title>
      <description>List of the hardest realizations for developers turning entrepreneurs (me):

• tech debt is good
• selling is not evil
• you != target customer
• new features != new sales 
• focusing on architecture too much is bad

This is the list I’ve struggled with the most. Wbu? Interested in hearing more abo…</description>
      <link>https://typefully.com/DBredvick/struggles-of-habit-93W8YBF</link>
      <pubDate>Sun, 18 Apr 2021 16:38:23 GMT</pubDate>
      <content:encoded><![CDATA[List of the hardest realizations for developers turning entrepreneurs (me):<br><br>• tech debt is good<br>• selling is not evil<br>• you != target customer<br>• new features != new sales <br>• focusing on architecture too much is bad<br><br>This is the list I’ve struggled with the most. Wbu?<br><br>Interested in hearing more about "good tech debt"? Sign up for my newsletter. I'm sending out an in-depth post with more thoughts tomorrow AM.<br><br><a href="https://drew.tech/newsletter" target="_blank" rel="nofollow">https://drew.tech/newsletter</a><br><br>And it's out!<br><a href="https://drew.tech/newsletter/is-there-good-tech-debt-issue-8-611258" target="_blank" rel="nofollow">https://drew.tech/newsletter/is-there-good-tech-debt-issue-8-611258</a>]]></content:encoded>
      <typefully:post_id>93W8YBF</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/my-first-saas-dollar-cIEcekP</guid>
      <title>My first SaaS dollar</title>
      <description>Made my first dollar on the internet when I was 13 hustling with affiliate marketing. 

Made my first SaaS dollar today 💰💰  Update: @stripe is the best  Shout out to @BorgeClooney for being my first customer 🎉

And thanks to @jones_spencera for recommending http://plzdm.me. 

What’s even crazier is…</description>
      <link>https://typefully.com/DBredvick/my-first-saas-dollar-cIEcekP</link>
      <pubDate>Thu, 08 Apr 2021 23:24:33 GMT</pubDate>
      <content:encoded><![CDATA[Made my first dollar on the internet when I was 13 hustling with affiliate marketing. <br><br>Made my first SaaS dollar today 💰💰 <br><br><img alt="Image" src="https://pbs.twimg.com/media/EyfQCh2WgAA4L1b.jpg"><br><br>Update: <a class="tweet-url username" href="https://twitter.com/stripe" data-screen-name="stripe" target="_blank" rel="nofollow">@stripe</a> is the best <br><br><img alt="Image" src="https://pbs.twimg.com/media/E0ltPcdX0AAe1bH.jpg"><br><br>Shout out to <a class="tweet-url username" href="https://twitter.com/BorgeClooney" data-screen-name="BorgeClooney" target="_blank" rel="nofollow">@BorgeClooney</a> for being my first customer 🎉<br><br>And thanks to <a class="tweet-url username" href="https://twitter.com/jones_spencera" data-screen-name="jones_spencera" target="_blank" rel="nofollow">@jones_spencera</a> for recommending <a href="http://plzdm.me" target="_blank" rel="nofollow">http://plzdm.me</a>. <br><br>What’s even crazier is I haven’t actually “launched” yet, that’s happening tomorrow.<br><br>Super happy to be a part of the “First Dollar Club” that <a class="tweet-url username" href="https://twitter.com/jones_spencera" data-screen-name="jones_spencera" target="_blank" rel="nofollow">@jones_spencera</a> put together. <br><br>It’s a solid group with tons of great feedback. <br><br>I guarantee they all blow up this year.<br><br>A lot of convo is happening in the <a href="https://twitter.com/search?q=%23buildinpublic" title="#buildinpublic" class="tweet-url hashtag" target="_blank" rel="nofollow">#buildinpublic</a> community about transparency &amp; sharing failure.<br><br>I’ll be posting an in depth newsletter post about pros, cons, how long this has taken me to build, etc. <br><br>I’ve already written a few issues: <br><a href="http://newsletter.drew.tech" target="_blank" rel="nofollow">http://newsletter.drew.tech</a>]]></content:encoded>
      <typefully:post_id>cIEcekP</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/saas-starters-jBKiAwXcV3ZS</guid>
      <title>SaaS starters</title>
      <description>Never been a better time to be a developer, regardless of the stack you pick. 

You can launch a SaaS app in one day and start billing. 

Here’s a list of starters, regardless of your stack preference (there&#39;s even a .NET option): Divjoy (Next.js + Firebase + Stripe)
- Has a graphical editor
- Gene…</description>
      <link>https://typefully.com/DBredvick/saas-starters-jBKiAwXcV3ZS</link>
      <pubDate>Sat, 23 Jan 2021 01:38:07 GMT</pubDate>
      <content:encoded><![CDATA[Never been a better time to be a developer, regardless of the stack you pick. <br><br>You can launch a SaaS app in one day and start billing. <br><br>Here’s a list of starters, regardless of your stack preference (there's even a .NET option):<br><br>Divjoy (Next.js + Firebase + Stripe)<br>- Has a graphical editor<br>- Generates high-quality React codebase<br>- Actively being developed<br><br>I've used this on a few projects & written about my experience on my blog.<br><br>Next.js Subscription Payments (Next.js + Supabase + Stripe)<br>- Integrates tightly with Stripe Checkout<br>- Supabase integration w/ Vercel<br>- Themed with TailwindCSS<br><br>I'm using this to build FitVitals right now and I'm really impressed.<br><br>SaaS Pegasus (Django + React/Vue + Stripe)<br>- Includes auth, teams, background tasks<br>- Has great examples and documentation<br>- Can easily pick between React or Vue<br><br>Just bought this. I'm learning Django & Vue and I'm a fan of learning via an existing well-architected codebase.<br><br>Laravel Jetstream + Spark (Laravel + Vue + Paddle)<br>- Per seat billing<br>- Auth, teams, billing, API, 2FA<br>- Includes Paddle (can simplify your finances A LOT depending on location)<br><br>I've been watching the Laravel space – insane amount of momentum in the community.<br><br>Gravity (React + Node + Stripe)<br>- Auth, teams, API<br>- Pre-built components<br>- Onboarding flow for first-time customers<br><br>If you refuse to learn Next.js (which I think is a bad take for React devs trying to build a SaaS), Gravity is a good alternative.<br><br>AspNetZero (.NET Core + Angular + Xamarin + Stripe)<br>- Supports web & native <br>- Auth, API, multi-tennant DB option<br>- Comes with some support hours<br><br>Yes .NET folks – there's even an option for you (I think .NET Core is awesome FWIW). This one is pricy though.<br><br>SaaS Startup Kit (Go + GoHTML)<br>- open source<br>- covers basic CRUD<br><br>I don't know enough about Go to say any more here. If you're a Go dev, is this project any good?<br><br>Sjabloon (Ruby on Rails + Stimulus + Stripe)<br>- Teams, API, Admin dashboard<br>- Styled with TailwindCSS<br>- Super affordable price point<br><br>All of these save you at least 40 hours of coding, even if you are a 10x engineer. <br><br>If your rate is at least $20/hr (and I'm betting it's higher than that), the ROI here is crazy. <br><br>Stop writing auth code and ship meaningful features instead.]]></content:encoded>
      <typefully:post_id>jBKiAwXcV3ZS</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
    <item>
      <guid>https://typefully.com/DBredvick/d7Nzp2i</guid>
      <title>You could bet your career on NextJS right now.</title>
      <description>You could bet your career on NextJS right now.

Job at tons of companies: Netflix, Auth0, Starbucks. 

Self-employed (consulting or SaaS): quicker to build with zero-config, serverless, SSR, &amp;amp; full stack out-of-the-box. 

I use it at work and on every side project. https://twitter.com/adamwatha…</description>
      <link>https://typefully.com/DBredvick/d7Nzp2i</link>
      <pubDate>Wed, 08 Apr 2020 20:00:10 GMT</pubDate>
      <content:encoded><![CDATA[You could bet your career on NextJS right now.<br><br>Job at tons of companies: Netflix, Auth0, Starbucks. <br><br>Self-employed (consulting or SaaS): quicker to build with zero-config, serverless, SSR, &amp; full stack out-of-the-box. <br><br>I use it at work and on every side project. <a href="https://twitter.com/adamwathan/status/1247916105756270593" target="_blank" rel="nofollow">https://twitter.com/adamwathan/status/1247916105756270593</a>]]></content:encoded>
      <typefully:post_id>d7Nzp2i</typefully:post_id>
      <typefully:post_type>tweet</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
      </channel>
    </rss>
  