<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael Brooks</title>
    <description>The latest articles on DEV Community by Michael Brooks (@michaelbrooks).</description>
    <link>https://dev.to/michaelbrooks</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F66019%2Ffae5520c-f1ae-4866-aade-acf94929b23e.jpeg</url>
      <title>DEV Community: Michael Brooks</title>
      <link>https://dev.to/michaelbrooks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/michaelbrooks"/>
    <language>en</language>
    <item>
      <title>Publishing Chattr to Three App Stores: What They Don't Tell You</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Mon, 22 Jun 2026 19:15:52 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/publishing-chattr-to-three-app-stores-what-they-dont-tell-you-49e8</link>
      <guid>https://dev.to/michaelbrooks/publishing-chattr-to-three-app-stores-what-they-dont-tell-you-49e8</guid>
      <description>&lt;p&gt;Chattr is a social platform built for the Twitch community. It's a React Native app with a Laravel backend, and over the past few months, I've published it to Google Play, the Apple App Store, and the Microsoft Store.&lt;/p&gt;

&lt;p&gt;Each store had its own set of challenges. Here's what I ran into and how I worked through it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Play Store: The 14-Day Testing Requirement
&lt;/h2&gt;

&lt;p&gt;Google requires new developer accounts to run a closed testing program with at least 12 testers for 14 consecutive days before you can apply for production access. That sounds straightforward until you realise you actually need to find 12 people willing to install your app and keep it on their devices for two weeks.&lt;/p&gt;

&lt;p&gt;I ended up using &lt;a href="https://testerscommunity.com/?ref=7G4BRDWD" rel="noopener noreferrer"&gt;Testers Community&lt;/a&gt; to fill the testing group. They provide real testers who will install your app and use it throughout the testing period. On the tenth day, they sent back detailed reports covering their findings, which was genuinely useful for catching edge cases I'd missed.&lt;/p&gt;

&lt;p&gt;More importantly, the reports included the information I needed to complete the questionnaire that Google presents at the end of the testing period before you can move to production. If you've never done this before, Google asks specific questions about your testing results, and having structured feedback from real testers made that process significantly easier.&lt;/p&gt;

&lt;p&gt;The closed testing track itself was straightforward to set up with Fastlane and GitHub Actions — push a tag, build the AAB, upload to the alpha track. The hard part was purely the human side: getting enough testers opted in and keeping them engaged for the full 14 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apple App Store: The Twitch Login Problem
&lt;/h2&gt;

&lt;p&gt;The Apple review process was the painful part, and the issue wasn't technical — it was authentication.&lt;/p&gt;

&lt;p&gt;Chattr uses Twitch as its sole authentication provider. There's no email/password login. When the Apple review team tried to test the app, they needed to log in with a Twitch account, and Twitch sends a verification code to the email address associated with that account.&lt;/p&gt;

&lt;p&gt;The first submission was rejected because the reviewers couldn't get past the login screen. We provided demo account credentials, but Twitch's verification flow required access to the email inbox to retrieve the code.&lt;/p&gt;

&lt;p&gt;The solution was to create a throwaway email address specifically for the review team and attach it to a dedicated Twitch account. We included the email credentials alongside the Twitch credentials in the review notes so they could retrieve the verification code themselves.&lt;/p&gt;

&lt;p&gt;Even then, it wasn't smooth. Not every reviewer read the instructions carefully, and we had to respond to rejection notices explaining the login flow step by step. It took a few rounds of back-and-forth before the review finally went through.&lt;/p&gt;

&lt;p&gt;If your app uses a third-party OAuth provider that requires multi-step verification, plan for it. Write the review notes as if the person reading them has never heard of your auth provider, because they probably haven't. Include every single step, every URL, and every credential they'll need. Don't assume anything is obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microsoft Store: Easy Approval, Broken Tooling
&lt;/h2&gt;

&lt;p&gt;The Microsoft Store was by far the easiest from an approval standpoint. The review was fast, the requirements were reasonable, and the listing went live without drama.&lt;/p&gt;

&lt;p&gt;The problem was getting the build packaged in the first place.&lt;/p&gt;

&lt;p&gt;Chattr has a web version, so the plan was to wrap it as a PWA for the Microsoft Store using PWABuilder. Except PWABuilder's conversion service was down when we needed it. We tried the VS Code extension as a fallback, but ran into issues there too.&lt;/p&gt;

&lt;p&gt;With the official tooling unavailable, we ended up building our own GitHub Actions workflow to replicate what PWABuilder does: take the PWA manifest, generate the MSIX package, and sign it. It took some trial and error to get the packaging and signing right, but once the workflow was in place, it was actually more reliable than depending on an external service.&lt;/p&gt;

&lt;p&gt;In hindsight, having the conversion as a CI step rather than a manual tool turned out to be the better approach anyway. Now every release is automated and reproducible.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Start the Google Play testing period immediately.&lt;/strong&gt; Don't wait until your app is "ready." The 14 days are a hard gate, and every day you delay is a day your launch slips. Get the closed testing track set up early, even if the app still has rough edges — that's what testing is for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prepare Apple review credentials from day one.&lt;/strong&gt; If your app uses any kind of third-party auth, set up the demo account and throwaway email before you even submit. Write the review notes like a tutorial. The less friction the reviewer has, the faster you'll get approved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't depend on external packaging tools for your build pipeline.&lt;/strong&gt; If a third-party service is a single point of failure in your release process, build a fallback. CI/CD workflows that you control will always be more reliable than someone else's web tool.&lt;/p&gt;




&lt;p&gt;Chattr is live on all three stores now. You can find it here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.chattr.online" rel="noopener noreferrer"&gt;Google Play Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/us/app/chattr-online/id6779924659" rel="noopener noreferrer"&gt;Apple App Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.microsoft.com/detail/9p88jvlbrqdp?hl=en-GB&amp;amp;gl=GB" rel="noopener noreferrer"&gt;Microsoft Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app itself was the easy part — navigating each store's requirements and review processes was where the real work happened. Hopefully this saves someone else a few rejection cycles.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>mobile</category>
      <category>appstore</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Your Creator Monetisation Platform Guide for 2026</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Wed, 10 Jun 2026 07:59:26 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/your-creator-monetisation-platform-guide-for-2026-1jln</link>
      <guid>https://dev.to/michaelbrooks/your-creator-monetisation-platform-guide-for-2026-1jln</guid>
      <description>&lt;p&gt;Your stream ends. Chat drops a few last emotes, the raid goes out, and within ten minutes your community is split across Twitch, Discord, X, Instagram, and a pile of missed DMs. The people who were most engaged an hour ago are still interested, but there is no shared place to carry that momentum into the next day.&lt;/p&gt;

&lt;p&gt;That is where streamer revenue usually starts to flatten.&lt;/p&gt;

&lt;p&gt;A creator monetization platform gives your community a place to keep moving between broadcasts. It handles the work Twitch is not built to do well on its own: updates, supporter access, clips, ongoing conversation, and paid offers that do not disappear when the stream ends. For Twitch streamers trying to build something more stable than subs, bits, and occasional sponsor wins, a tool like &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr's Twitch community platform&lt;/a&gt; is less about adding another app and more about keeping your audience warm when you are offline.&lt;/p&gt;

&lt;p&gt;The decision is not whether to monetize. It is where your community habits live when you are not live, and whether that setup supports retention instead of scattering attention. Streamers who get this right usually do two things well. They give viewers a clear reason to stay involved between streams, and they make paid support feel connected to the community experience instead of bolted on after the fact.&lt;/p&gt;

&lt;p&gt;&lt;a id="introduction-beyond-the-live-button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Introduction Beyond the Live Button&lt;/li&gt;
&lt;li&gt;
What Is a Creator Monetization Platform

&lt;ul&gt;
&lt;li&gt;A platform should reduce fragmentation&lt;/li&gt;
&lt;li&gt;The four parts that matter&lt;/li&gt;
&lt;li&gt;Twitch streamers should use a narrower definition&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
The Core Monetization Models You Should Know

&lt;ul&gt;
&lt;li&gt;Memberships and paid tiers&lt;/li&gt;
&lt;li&gt;Tips and one-time support&lt;/li&gt;
&lt;li&gt;Paywalled content and one-off purchases&lt;/li&gt;
&lt;li&gt;Merch and fan goods&lt;/li&gt;
&lt;li&gt;A stacked model is usually stronger&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Essential Features Beyond Just Collecting Payments

&lt;ul&gt;
&lt;li&gt;Friction decides whether fans participate&lt;/li&gt;
&lt;li&gt;Features that matter more than they look&lt;/li&gt;
&lt;li&gt;The stickiest platforms don't over-monetize&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
A Twitch Streamers Checklist for Choosing a Platform

&lt;ul&gt;
&lt;li&gt;Check whether it fits Twitch habits&lt;/li&gt;
&lt;li&gt;Look at your actual off-stream posting behavior&lt;/li&gt;
&lt;li&gt;Judge the revenue mix by community health&lt;/li&gt;
&lt;li&gt;Check control before you commit&lt;/li&gt;
&lt;li&gt;Ask the operator question&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Example How Chattr Addresses Twitch Creator Needs&lt;/li&gt;
&lt;li&gt;Conclusion Building Your Off-Platform Future&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Introduction Beyond the Live Button
&lt;/h2&gt;

&lt;p&gt;The familiar pattern looks like this. You go live, momentum builds, inside jokes form, mods keep chat moving, and supporters feel like they're part of something. Then the stream ends, and all that attention gets scattered across apps that weren't designed to hold a live community together.&lt;/p&gt;

&lt;p&gt;For Twitch streamers, that's not a small inconvenience. It's a business problem. If your audience only has one clear way to engage with you, and that way only works when you're live, then revenue becomes fragile and community loyalty becomes harder to maintain.&lt;/p&gt;

&lt;p&gt;A dedicated creator monetization platform gives your audience a place to keep participating when the stream is offline. That can mean clips, quick text updates, voice posts, polls, subscriber-only content, or a community feed that feels active even on non-stream days. For live creators, that continuity matters more than another generic storefront page.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When a streamer says they want “more monetization,” what they usually need is better continuity between live moments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The hardest part is that many streamers still evaluate tools like they're buying a payment feature. That's too narrow. You're really choosing how your community behaves between streams, who keeps showing up, and whether your top supporters have a reason to stay close when the channel is offline.&lt;/p&gt;

&lt;p&gt;&lt;a id="what-is-a-creator-monetization-platform"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Creator Monetization Platform
&lt;/h2&gt;

&lt;p&gt;A creator monetization platform is the system you use to keep community activity and revenue working when Twitch is offline. For streamers, that usually matters more than adding one more payment option. Its core function is giving viewers a clear place to return, participate, and support you between broadcasts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhv18l6kh0px7ge2ghq0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhv18l6kh0px7ge2ghq0.jpg" alt="An infographic showing the core components of a digital creator monetization platform and its ecosystem." width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="a-platform-should-reduce-fragmentation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A platform should reduce fragmentation
&lt;/h3&gt;

&lt;p&gt;A lot of streamers piece this together with separate tools. One app for paid memberships, one for chat, one for updates, one for selling downloads, one for clips. You can make that stack work, but the trade-off is predictable. Fans hit more friction, mods answer the same questions in multiple places, and you spend more time maintaining the setup than using it.&lt;/p&gt;

&lt;p&gt;A stronger platform pulls those jobs into one operating system for your community. That does not mean every feature has to live under one roof. It means your audience should understand where to go, what they get, and how to support you without confusion.&lt;/p&gt;

&lt;p&gt;&lt;a id="the-four-parts-that-matter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The four parts that matter
&lt;/h3&gt;

&lt;p&gt;Most creator monetization platforms are solving the same four business problems for streamers.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;What it does for a streamer&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audience connection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Keeps fans active through posts, comments, clips, messages, or a community feed&lt;/td&gt;
&lt;td&gt;Live momentum fades fast if people have nowhere to gather afterward&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monetization tools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supports memberships, tips, gated content, one-time purchases, or paid access&lt;/td&gt;
&lt;td&gt;Different supporters prefer different ways to spend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Creator control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lets you set pricing, access rules, visibility, and community boundaries&lt;/td&gt;
&lt;td&gt;You need direct control over how supporters move through your funnel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Platform support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Handles payments, hosting, analytics, and account management&lt;/td&gt;
&lt;td&gt;Running billing, access, and moderation manually does not scale&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Analysts at ShortsIntel describe this as a fast-growing category inside the broader creator economy, with market growth projected through 2030 (&lt;a href="https://www.shortsintel.com/statistics/creator-economy" rel="noopener noreferrer"&gt;ShortsIntel creator economy statistics&lt;/a&gt;). That tracks with what streamers are dealing with in practice. More creators want revenue that is not tied to one algorithm, one sponsor cycle, or the hours they can stay live each week.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Practical rule:&lt;/strong&gt; If a platform collects money but does not give your community a reason to come back tomorrow, it is only doing half the job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a id="twitch-streamers-should-use-a-narrower-definition"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Twitch streamers should use a narrower definition
&lt;/h3&gt;

&lt;p&gt;A newsletter writer can monetize with a paywall and a mailing list. A course creator can monetize with a landing page and checkout flow. Twitch streamers usually need something different because the product is not just content. It is recurring interaction, shared context, and a community that expects to participate, not just consume.&lt;/p&gt;

&lt;p&gt;That changes how you evaluate the category. A good creator monetization platform for Twitch should support ongoing conversation, low-friction posting, supporter identity, and paid access that feels connected to stream culture. If it looks good as a storefront but feels dead between broadcasts, it will not help much with retention.&lt;/p&gt;

&lt;p&gt;&lt;a id="the-core-monetization-models-you-should-know"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Monetization Models You Should Know
&lt;/h2&gt;

&lt;p&gt;A Twitch viewer finishes your stream, still wants to be part of the community, and has three different levels of intent. One person wants to back you every month. One wants to drop a tip after a great stream. One wants to buy something specific and be done for now. Off-platform monetization works when you match those behaviors instead of forcing everyone into one offer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqb1po9oe4744hn2c4fao.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqb1po9oe4744hn2c4fao.jpg" alt="A hand-drawn illustration of a content creator considering various digital monetization strategies and revenue streams." width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The mistake I see streamers make is copying a model from YouTube, newsletters, or online courses without asking a simpler question first. What does my community already come back for between lives? If the answer is conversation, insider access, and recognition, memberships usually carry the business. If the answer is occasional hype around events or milestones, tips and one-off offers may matter more.&lt;/p&gt;

&lt;p&gt;&lt;a id="memberships-and-paid-tiers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Memberships and paid tiers
&lt;/h3&gt;

&lt;p&gt;For Twitch streamers, memberships are usually the core model because they fit repeat behavior. Supporters are not only paying for content. They are paying to stay close to the community, the jokes, the updates, and your decision-making process when you are offline.&lt;/p&gt;

&lt;p&gt;That changes what a good membership looks like. It should be light enough to maintain every week and specific enough that people understand why it exists.&lt;/p&gt;

&lt;p&gt;What tends to work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Predictable perks&lt;/strong&gt; tied to your actual stream rhythm&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Member posts, polls, clips, or private chat spaces&lt;/strong&gt; that keep people involved between broadcasts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visible supporter identity&lt;/strong&gt; so paying members feel recognized, not hidden in a checkout system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What usually fails:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Overbuilding the offer&lt;/strong&gt; with promises you cannot keep&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locking too much behind the paywall&lt;/strong&gt; and draining energy from the public community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Using memberships as pure patronage&lt;/strong&gt; with no clear recurring value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need examples of the kind of lightweight features that support this model, browse a few &lt;a href="https://chattr.online/stream-tools" rel="noopener noreferrer"&gt;community monetization tools for streamers&lt;/a&gt; and notice how much of the value comes from interaction, not just billing.&lt;/p&gt;

&lt;p&gt;&lt;a id="tips-and-one-time-support"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips and one-time support
&lt;/h3&gt;

&lt;p&gt;Tips serve a different job. They capture momentum.&lt;/p&gt;

&lt;p&gt;A viewer may not want another subscription, but they will support a subathon, tournament run, charity incentive, or clutch stream they loved. That makes tips useful for high-energy moments and casual supporters who show up in bursts.&lt;/p&gt;

&lt;p&gt;They become unreliable when they are the whole plan. Revenue rises and falls with mood, timing, and how often you ask. For streamers trying to build something stable off-platform, tips work better as a pressure release valve than as the foundation.&lt;/p&gt;

&lt;p&gt;&lt;a id="paywalled-content-and-one-off-purchases"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Paywalled content and one-off purchases
&lt;/h3&gt;

&lt;p&gt;One-time purchases make sense when the offer has clear boundaries. A downloadable guide, coaching session, event pass, replay pack, challenge archive, or curated resource bundle can work because the buyer knows what they are getting.&lt;/p&gt;

&lt;p&gt;This model gets weaker when streamers try to package normal community activity as a product. Daily thoughts, casual updates, and supporter discussion usually fit a membership better than a standalone sale. The test is simple. If the value expires quickly without the surrounding community, it probably should not be a one-off product.&lt;/p&gt;

&lt;p&gt;A practical way to split the models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memberships&lt;/strong&gt; support ongoing belonging&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-time purchases&lt;/strong&gt; sell contained value&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tips&lt;/strong&gt; capture low-commitment support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A walkthrough on platform structure can help visualize how these models get combined in practice:&lt;/p&gt;

&lt;p&gt;&lt;a id="merch-and-fan-goods"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Merch and fan goods
&lt;/h3&gt;

&lt;p&gt;Merch matters less often than streamers hope.&lt;/p&gt;

&lt;p&gt;It can strengthen identity if your community already repeats your emotes, catchphrases, or visual style. It usually does not solve the harder problem, which is keeping people engaged and spending between streams. For many creators, merch is better treated as a periodic loyalty product than a core monthly revenue stream.&lt;/p&gt;

&lt;p&gt;&lt;a id="a-stacked-model-is-usually-stronger"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A stacked model is usually stronger
&lt;/h3&gt;

&lt;p&gt;The strongest setup usually combines recurring support with flexible spending paths. That could mean a paid membership for your regulars, tips during high-intent moments, and occasional one-off offers when you have something specific worth buying.&lt;/p&gt;

&lt;p&gt;This is not about adding every monetization feature you can find. Too many options create confusion, especially for live communities that make quick decisions. Supporters should be able to answer three questions fast. What am I paying for? Why does it matter? How is this different from the other option?&lt;/p&gt;

&lt;p&gt;For Twitch streamers, a practical stack usually looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Recurring core&lt;/strong&gt; through memberships or paid community access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible support&lt;/strong&gt; through tips or one-time fan payments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Selective premium offers&lt;/strong&gt; through event access, guides, coaching, or special drops&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That mix gives you revenue between broadcasts without turning your community into a storefront.&lt;/p&gt;

&lt;p&gt;&lt;a id="essential-features-beyond-just-collecting-payments"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Essential Features Beyond Just Collecting Payments
&lt;/h2&gt;

&lt;p&gt;A payment button doesn't build a community. It only captures value that already exists. For Twitch streamers, the harder job is keeping interaction alive when you're offline.&lt;/p&gt;

&lt;p&gt;That's why feature evaluation has to start with behavior, not billing. If your audience likes reacting quickly, sharing clips, posting short thoughts, recognizing badges, and jumping into live moments together, your off-platform setup should support those habits instead of replacing them with a sterile storefront.&lt;/p&gt;

&lt;p&gt;&lt;a id="friction-decides-whether-fans-participate"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Friction decides whether fans participate
&lt;/h3&gt;

&lt;p&gt;Academic work on creator ecosystems frames these platforms as &lt;strong&gt;two-sided marketplaces&lt;/strong&gt;, where creator supply and audience demand have to work together. In practical terms, that means the platform has to make life easier for both you and your fans. Systems that preserve creator control and reduce audience friction are more likely to sustain quality over time (&lt;a href="https://dl.acm.org/doi/10.1145/3544548.3581106" rel="noopener noreferrer"&gt;ACM research on creator ecosystems and platform design&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;For streamers, friction shows up in obvious places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Login pain&lt;/strong&gt; if viewers need to create new identities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context switching&lt;/strong&gt; if clips, updates, and comments live in separate tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weak status signaling&lt;/strong&gt; if supporters don't carry their loyalty markers with them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Posting friction&lt;/strong&gt; if it takes too much effort to share a quick update between streams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If people need too many steps to stay involved, they won't stay involved.&lt;/p&gt;

&lt;p&gt;&lt;a id="features-that-matter-more-than-they-look"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Features that matter more than they look
&lt;/h3&gt;

&lt;p&gt;The most useful off-platform features for streamers usually feel small until you run a real community.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time feeds:&lt;/strong&gt; These recreate some of the pacing that makes live culture compelling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscriber-only post controls:&lt;/strong&gt; These let you add paid access without walling off your whole presence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clip sharing and discussion:&lt;/strong&gt; Clips are one of the easiest bridges between live and offline engagement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity carryover:&lt;/strong&gt; Badges, tenure, emotes, and familiar account links reduce the feeling that fans are starting over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight posting formats:&lt;/strong&gt; Short text, voice updates, polls, and embedded media work better than demanding long-form production every day.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;A live community stays healthy when the off-platform experience feels like continuation, not relocation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A streamer who wants practical utility here should also look at tools designed around stream workflows, not just generic creator commerce. For example, &lt;a href="https://chattr.online/stream-tools" rel="noopener noreferrer"&gt;stream community tools built for Twitch-style engagement&lt;/a&gt; are more relevant than a platform that only handles payments and download delivery.&lt;/p&gt;

&lt;p&gt;&lt;a id="the-stickiest-platforms-dont-over-monetize"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The stickiest platforms don't over-monetize
&lt;/h3&gt;

&lt;p&gt;There's a temptation to think that more monetization controls automatically mean more revenue. In live communities, that often backfires. If every interaction feels gated, viewers pull back. If every post is a pitch, your public layer stops feeling alive.&lt;/p&gt;

&lt;p&gt;The stronger pattern is simpler. Keep broad participation easy. Add premium layers where they make sense. Protect the social energy first, then monetize the loyalty that naturally forms around it.&lt;/p&gt;

&lt;p&gt;&lt;a id="a-twitch-streamers-checklist-for-choosing-a-platform"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Twitch Streamers Checklist for Choosing a Platform
&lt;/h2&gt;

&lt;p&gt;You end stream with strong chat energy, a few clipped moments, and people saying they will be back tomorrow. Then the stream ends, everyone scatters across Discord, Twitch notifications, and social feeds, and the momentum you built starts to bleed off. That is the real platform decision for a Twitch streamer. The question is not which tool has the longest feature list. The question is which one keeps your community warm between broadcasts while still giving you room to earn.&lt;/p&gt;

&lt;p&gt;That is also why generic creator platform roundups miss the point. Twitch creators are not just selling access or downloads. You are managing a live audience with habits, inside jokes, recurring rituals, and very different support levels. Your platform has to fit that behavior over time, not just process payments. For streamers comparing options, &lt;a href="https://chattr.online/streamers" rel="noopener noreferrer"&gt;platforms built around Twitch streamer community workflows&lt;/a&gt; are more useful than broad creator software that treats every audience the same.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcgdc0ts68avd4aog4qgz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcgdc0ts68avd4aog4qgz.jpg" alt="A checklist for Twitch streamers to evaluate potential platforms for creator monetization and community engagement tools." width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="check-whether-it-fits-twitch-habits"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Check whether it fits Twitch habits
&lt;/h3&gt;

&lt;p&gt;A platform can look polished and still fail with stream viewers.&lt;/p&gt;

&lt;p&gt;Test the basics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Can viewers sign up and understand it fast?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Does it feel social enough for people who are used to live chat speed?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can people react, reply, and share without extra friction?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Does it respect Twitch identity instead of forcing your audience to rebuild from zero?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If those answers are weak, adoption will be weak too. Stream viewers rarely migrate because a dashboard looks nice. They stay where participation feels natural.&lt;/p&gt;

&lt;p&gt;&lt;a id="look-at-your-actual-off-stream-posting-behavior"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Look at your actual off-stream posting behavior
&lt;/h3&gt;

&lt;p&gt;Pick a platform based on the content you will post after a long stream, not the content you wish you had time to make.&lt;/p&gt;

&lt;p&gt;For most Twitch creators, useful off-stream content looks like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Between-stream format&lt;/th&gt;
&lt;th&gt;Why it works for streamers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Clips&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;They carry stream moments into the next conversation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quick updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;They keep schedule changes, jokes, and commentary visible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Polls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;They give chat regular chances to shape what happens next&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Voice posts&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;They keep personality and tone intact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Subscriber-only notes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;They add paid value without turning every post into a product&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A platform that makes these formats awkward usually creates a consistency problem. You do not need more content pressure. You need a posting rhythm you can keep up during a normal week.&lt;/p&gt;

&lt;p&gt;&lt;a id="judge-the-revenue-mix-by-community-health"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Judge the revenue mix by community health
&lt;/h3&gt;

&lt;p&gt;The highest advertised payout split is rarely the deciding factor for a live creator. What matters is whether the revenue model matches how viewers support streamers.&lt;/p&gt;

&lt;p&gt;Use this checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memberships:&lt;/strong&gt; Can regulars support monthly without a confusing setup?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-time support:&lt;/strong&gt; Can newer or casual viewers chip in without making a long commitment?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paid extras:&lt;/strong&gt; Can you gate specific posts, perks, or access points instead of gating everything?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free participation:&lt;/strong&gt; Does the public layer still feel active for people who never pay?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point protects the whole system. Free participation keeps conversation visible. Visible conversation gives supporters a reason to stick around. Paid layers work better when they sit on top of a healthy public community.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; Keep the front door open. Make the premium layer feel earned.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a id="check-control-before-you-commit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Check control before you commit
&lt;/h3&gt;

&lt;p&gt;Bad platform choices get expensive.&lt;/p&gt;

&lt;p&gt;Read the permissions. Check what gets auto-posted, what audience data you can export, how access is handled when someone cancels, and what happens if you change tools later. If your community relationship only exists inside one platform's walls, you are renting more than you think.&lt;/p&gt;

&lt;p&gt;&lt;a id="ask-the-operator-question"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask the operator question
&lt;/h3&gt;

&lt;p&gt;A dedicated platform starts to matter when streaming income depends on repeat relationships, not just live discoverability. That usually happens before creators expect it. You run into it when Twitch subs, ad revenue, and occasional sponsorships are no longer enough on their own, but your audience is clearly willing to stay engaged between streams if you give them a good place to do it.&lt;/p&gt;

&lt;p&gt;At that stage, choose for continuity, control, and fit. A Twitch streamer does not need the broadest creator product. You need a platform that supports live-community behavior after the live button turns off.&lt;/p&gt;

&lt;p&gt;&lt;a id="example-how-chattr-addresses-twitch-creator-needs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example How Chattr Addresses Twitch Creator Needs
&lt;/h2&gt;

&lt;p&gt;A common Twitch problem shows up right after a good stream ends. Chat was active, inside jokes were flying, a few people gifted subs, and then the community drops back into disconnected Discord replies, missed social posts, and no clear place to keep the momentum going.&lt;/p&gt;

&lt;p&gt;That gap is where off-platform revenue usually stalls. Supporters might want more ways to stay involved, but if the between-stream experience feels scattered, paid offers feel bolted on instead of useful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uemcddnh35wzfaewytz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uemcddnh35wzfaewytz.jpg" alt="A hand-drawn illustration showing the transformation of a chaotic streamer experience into an organized, productive workflow using Chattr." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chattr is interesting in that context because it starts from streamer behavior, not generic creator tooling. With &lt;a href="https://chattr.online/streamers" rel="noopener noreferrer"&gt;Chattr for Twitch streamers&lt;/a&gt;, people sign in through Twitch, so the community does not have to rebuild identity from scratch on a separate platform. That lowers friction in a place where every extra step costs participation.&lt;/p&gt;

&lt;p&gt;The practical benefit is continuity. Existing follows, mutuals, and live context carry into the feed, which gives the creator something closer to an active community layer instead of an empty members area waiting to be filled.&lt;/p&gt;

&lt;p&gt;That changes the day-to-day workflow in a few useful ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live sessions surface in the feed&lt;/strong&gt; so off-platform activity still connects back to the stream&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clips stay in circulation for discussion&lt;/strong&gt; instead of disappearing after a social post loses reach&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice notes and short updates&lt;/strong&gt; let the streamer stay present without planning a full content drop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscriber-only posts and polls&lt;/strong&gt; add paid value while keeping a visible public layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Badge sync&lt;/strong&gt; carries over status markers that already mean something to the audience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Twitch streamers, that structure matters more than a long feature list. Communities built around live interaction respond to rhythm, familiarity, and recognition. If supporters can see the streamer between broadcasts, react to clips, notice who is active, and get a few member perks without the whole space turning private, monetization has a stronger foundation.&lt;/p&gt;

&lt;p&gt;There is a trade-off. A setup like this works best for creators who want ongoing community participation, not just a checkout page for one-off sales. If your main goal is selling a course or digital product catalog, you may want different tooling. If your business depends on keeping chat energy alive after the stream ends, a community-first platform fits the job better.&lt;/p&gt;

&lt;p&gt;That is the true test. The platform should help your viewers keep acting like viewers who know each other, not customers passing through a payment flow.&lt;/p&gt;

&lt;p&gt;&lt;a id="conclusion-building-your-off-platform-future"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion Building Your Off-Platform Future
&lt;/h2&gt;

&lt;p&gt;A Twitch streamer usually feels the gap right after a strong broadcast ends. Chat was flying, clips were landing, a few people gifted subs, and then the audience scatters across Discord, X, TikTok, and DMs until the next stream. That gap is where a lot of community energy and revenue disappear.&lt;/p&gt;

&lt;p&gt;A creator monetization platform is worth it when it closes that gap without giving your viewers another dead account to ignore.&lt;/p&gt;

&lt;p&gt;The decision is less about adding one more tool and more about choosing where your community habit lives between broadcasts. Good platforms make it easy for viewers to keep up, respond, and support in ways that feel connected to the stream they already care about. Bad ones add friction, split attention, or push every interaction toward a sale.&lt;/p&gt;

&lt;p&gt;That trade-off matters. Some Twitch streamers need a storefront, a course hub, or a sponsorship stack. Others need a place where clips, reactions, updates, and paid perks can keep the room warm when they are not live. Those are different jobs, and picking the wrong platform usually shows up first in falling participation, not payments.&lt;/p&gt;

&lt;p&gt;The strongest off-platform setup does three things well. It keeps the community recognizable, gives supporters clear reasons to stay involved, and creates revenue paths that do not weaken the social layer that made the stream work in the first place.&lt;/p&gt;

&lt;p&gt;That is the real build.&lt;/p&gt;

&lt;p&gt;If you want a Twitch-native option for keeping people active between streams, &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt; includes a real-time social feed, Twitch sign-in, clip sharing, voice posts, subscriber-only content, and badge-aware community features built for ongoing interaction outside the live window.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Published via &lt;a href="https://outrank.so" rel="noopener noreferrer"&gt;the Outrank tool&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>socialmedia</category>
      <category>twitter</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>We Applied for AWS Activate and Got $1,000 in Cloud Credits: Here's How</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Wed, 03 Jun 2026 07:16:34 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/we-applied-for-aws-activate-and-got-1000-in-cloud-credits-heres-how-3gma</link>
      <guid>https://dev.to/michaelbrooks/we-applied-for-aws-activate-and-got-1000-in-cloud-credits-heres-how-3gma</guid>
      <description>&lt;p&gt;We applied to &lt;a href="https://aws.amazon.com/startups/" rel="noopener noreferrer"&gt;AWS Startups&lt;/a&gt; for &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt;, a Twitch-focused social network. Approval was quick; we received $1,000 in AWS credits, and Chattr is now on the &lt;a href="https://aws.amazon.com/startups/showcase/startup-details/1670c5de-fbb8-4066-a2ee-66323916fdd3" rel="noopener noreferrer"&gt;AWS Startups Showcase&lt;/a&gt;. Here's how simple the process was, which could help other solo devs or small teams on AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before diving in, let me explain what Chattr is
&lt;/h2&gt;

&lt;p&gt;Chattr is a social network designed specifically for the Twitch community. Unlike general social platforms, it lets you sign in directly with your Twitch account-no extra registration. You get a feed to post updates, share Twitch clips, use Twitch emotes for reactions, and receive immediate live stream alerts when someone you follow goes live. This uniquely connects streamers and their audiences outside of live streams, all in one place built for Twitch culture.&lt;/p&gt;

&lt;p&gt;The stack is Laravel 13 + React (via Inertia.js v3), deployed on AWS using ECS Fargate, RDS PostgreSQL, CloudFront, S3, and Reverb for WebSockets. So AWS wasn't an afterthought - it's the entire infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before sharing more, it's helpful to clarify what AWS Activate is
&lt;/h2&gt;

&lt;p&gt;AWS Activate is Amazon's programme for startups. Depending on the tier you qualify for, you can receive free AWS credits, technical support credits, and access to AWS business and training resources.&lt;/p&gt;

&lt;p&gt;There are two main tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Activate Founders&lt;/strong&gt; - the self-service tier, open to any early-stage startup. Gives you up to &lt;strong&gt;$1,000 in credits&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Activate Portfolio&lt;/strong&gt; - requires a referral from a recognised VC, accelerator, or incubator. Can give up to &lt;strong&gt;$100,000 in credits&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We applied through the Founders tier since Chattr is currently bootstrapped.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Application Process
&lt;/h2&gt;

&lt;p&gt;It's genuinely straightforward. Here's what's involved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create an AWS account&lt;/strong&gt; if you don't already have one (you almost certainly do if you're building on AWS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Head to&lt;/strong&gt; &lt;a href="https://aws.amazon.com/activate" rel="noopener noreferrer"&gt;&lt;strong&gt;aws.amazon.com/activate&lt;/strong&gt;&lt;/a&gt; and click "Apply Now"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fill in your startup details&lt;/strong&gt; - company name, website, what you're building, stage, and how you're using AWS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provide an AWS Account ID&lt;/strong&gt; where the credits should be applied.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submit&lt;/strong&gt; - that's it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The form takes about 10-15 minutes. You don't need a pitch deck, investor backing, or a revenue figure. You need a product (or at least a convincing description of one), a website, and a real AWS account.&lt;/p&gt;

&lt;p&gt;We received approval and the credits within a couple of business days. The $1,000 appears directly in your AWS billing as a credit - no voucher codes or hoops to jump through.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Credits Cover
&lt;/h2&gt;

&lt;p&gt;AWS credits apply to almost all services. For us, they offset:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ECS Fargate&lt;/strong&gt; - running the app container and the worker container&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RDS PostgreSQL&lt;/strong&gt; - the main database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElastiCache Redis&lt;/strong&gt; - queue, cache, and session storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudFront&lt;/strong&gt; - CDN for static assets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;S3&lt;/strong&gt; - media uploads (post images, voice recordings, videos)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudWatch Logs&lt;/strong&gt; - observability via Laravel Nightwatch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At our current scale, $1,000 covers several months of infrastructure. For a solo developer or small team in early traction, that's genuinely meaningful runway.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Startup Showcase
&lt;/h2&gt;

&lt;p&gt;Something I didn't expect was being listed on the &lt;a href="https://aws.amazon.com/startups/showcase/startup-details/1670c5de-fbb8-4066-a2ee-66323916fdd3" rel="noopener noreferrer"&gt;AWS Startups Showcase&lt;/a&gt;. It's a public directory of startups in the Activate programme. You get a profile page with your company name, description, industry, stage, and a link to your product.&lt;/p&gt;

&lt;p&gt;It's not going to drive thousands of users on its own, but it's a legitimate third-party listing that adds a small amount of credibility, and it costs nothing extra.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips If You're Applying
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Be specific about how you use AWS.&lt;/strong&gt; The application asks how you're using their services. Don't write "we use the cloud." List the actual services - ECS, RDS, S3, CloudFront, whatever you're using - and briefly explain why. It shows you're a real AWS customer and not just applying to collect free money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apply early.&lt;/strong&gt; The credits expire, and the sooner you apply, the longer you have to use them. The Founders tier credits are currently valid for two years from activation, but check the current terms when you apply.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your startup doesn't need to be incorporated.&lt;/strong&gt; You can apply as an individual building a product. You'll need to represent that you're an early-stage startup, but there's no requirement for a legal entity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Founders tier is worth doing even if you don't think you'll qualify for Portfolio.&lt;/strong&gt; Many developers skip AWS Activate because they assume it's for VC-backed companies. The Founders tier is explicitly for self-funded and early-stage builders.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, is AWS Activate worth it for solo founders?
&lt;/h2&gt;

&lt;p&gt;Yes, without hesitation. The application took less time than it took to write this post. If you're already running workloads on AWS and haven't applied, you're leaving money on the table.&lt;/p&gt;

&lt;p&gt;If you want to see what Chattr looks like in production, &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;give it a try&lt;/a&gt; - sign in with your Twitch account and you'll be up and running in about ten seconds.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have questions about the AWS Activate application or building on AWS as a solo founder? Drop them in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>startup</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Building Chattr for Android: A Social Platform for the Twitch Community</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 29 May 2026 08:19:41 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/building-chattr-for-android-a-social-platform-for-the-twitch-community-4mgg</link>
      <guid>https://dev.to/michaelbrooks/building-chattr-for-android-a-social-platform-for-the-twitch-community-4mgg</guid>
      <description>&lt;p&gt;I have been building Chattr, a social platform designed specifically for Twitch streamers and their communities. Think of it as a Twitter-like feed built on top of the Twitch identity layer -- where posts can include clips, polls, stream announcements, and custom reactions using Twitch emotes. After months of development, the Android version is now in &lt;strong&gt;closed beta&lt;/strong&gt;, and I am looking for testers to help put it through its paces.&lt;/p&gt;

&lt;p&gt;This post covers the stack I chose, some of the interesting problems I ran into along the way, and lessons learned shipping a cross-platform native app with real money moving through it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;Chattr is built with &lt;strong&gt;React Native 0.85 + React 19&lt;/strong&gt; and written entirely in TypeScript. The main libraries driving the experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NativeWind v4&lt;/strong&gt; for Tailwind-style styling in React Native&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Navigation&lt;/strong&gt; (native-stack + bottom-tabs) for navigation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe React Native&lt;/strong&gt; for tips and creator payouts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firebase Cloud Messaging&lt;/strong&gt; for push notifications&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;react-native-app-auth&lt;/strong&gt; with PKCE for Twitch OAuth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;react-native-keychain&lt;/strong&gt; for secure token storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend is a Laravel API at &lt;code&gt;chattr.online/api/v1&lt;/code&gt; that uses Sanctum for token-based authentication, with Twitch's API and Stripe Connect layered on top.&lt;/p&gt;




&lt;h2&gt;
  
  
  Connecting to Twitch Identity
&lt;/h2&gt;

&lt;p&gt;The first real challenge was Twitch OAuth. The flow itself is standard OAuth 2.0 with PKCE, but Twitch returns scopes as a JSON array rather than a space-separated string. &lt;code&gt;react-native-app-auth&lt;/code&gt; expects the latter, so deserialising the token response would blow up.&lt;/p&gt;

&lt;p&gt;The fix was to normalise the response on the server before it ever reached the client. The app exchanges the code server-side, receives the corrected token shape, and stores credentials in the device keychain. Credentials never touch &lt;code&gt;AsyncStorage&lt;/code&gt; -- they are encrypted at the OS level via keychain, which matters when you are handling payment-related sessions.&lt;/p&gt;

&lt;p&gt;From there, the app pulls the user's Twitch broadcaster type, follower counts, subscriber status, and stream metadata to populate their Chattr profile. This lets the social graph feel native to Twitch -- you already know who is an Affiliate, who is a Partner, and who is live right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Post Types and the Feed
&lt;/h2&gt;

&lt;p&gt;The feed supports several post types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text posts&lt;/strong&gt; (up to 2000 characters)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twitch clips&lt;/strong&gt; (embedded via WebView)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polls&lt;/strong&gt; (2 to 5 options)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduled stream announcements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live notifications&lt;/strong&gt; (when a streamer goes live)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quote reposts&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reactions use three Twitch emotes: KreyGasm, BleedPurple, and BigSad. It keeps the social layer feeling native to the platform rather than grafting on a generic like/heart system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Controlling Video in the Feed
&lt;/h3&gt;

&lt;p&gt;Embedded clips in a scrolling feed are a battery and CPU trap if you are not careful. Every WebView kept playing even when scrolled off screen.&lt;/p&gt;

&lt;p&gt;The fix was using &lt;code&gt;viewAreaCoveragePercentThreshold&lt;/code&gt; on the &lt;code&gt;FlatList&lt;/code&gt; to track viewport visibility. When a clip drops below 50% visible, its WebView pauses. When the user pulls to refresh, a &lt;code&gt;refreshKey&lt;/code&gt; state integer is incremented, which remounts the affected WebViews and stops any mid-playback clips from continuing in the background. It is a small thing but it makes a real difference in perceived battery usage.&lt;/p&gt;




&lt;h2&gt;
  
  
  Push Notifications: Three States, One Flow
&lt;/h2&gt;

&lt;p&gt;Push notifications in React Native have a well-known gotcha: you need to handle three distinct app states -- foreground, background, and quit (cold launch) -- and they all behave differently.&lt;/p&gt;

&lt;p&gt;For Chattr, there are over ten notification types to route: reactions, mentions, reposts, comments, live alerts, scheduled stream reminders, tips received, tip refunds, and collaborator tags.&lt;/p&gt;

&lt;p&gt;The solution was:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Foreground&lt;/strong&gt;: update the badge count in the notification bell without navigating&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background (&lt;code&gt;onNotificationOpenedApp&lt;/code&gt;)&lt;/strong&gt;: navigate to the relevant post or screen when the user taps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cold launch (&lt;code&gt;getInitialNotification&lt;/code&gt;)&lt;/strong&gt;: check on app mount and perform the same deep-link navigation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Firebase token rotation also needs careful handling. The app subscribes to &lt;code&gt;onTokenRefresh&lt;/code&gt; and also refreshes tokens on &lt;code&gt;AppState&lt;/code&gt; restore after a device factory reset clears the keychain. Missing either case means silent notification failures that are hard to debug in production.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tipping with Stripe
&lt;/h2&gt;

&lt;p&gt;Chattr lets viewers tip creators between $1 and $500 per post. The flow uses Stripe Payment Intents created server-side. The client gets back a client secret, presents the Stripe sheet, and on confirmation the tip is recorded.&lt;/p&gt;

&lt;p&gt;Creators who want payouts go through Stripe Connect onboarding. This is a WebView-based flow that hands off to Stripe's hosted onboarding and then redirects back to the app. The settings screen monitors &lt;code&gt;AppState&lt;/code&gt; changes so that when the user returns from the background after completing onboarding, the payout status updates immediately without needing a manual refresh.&lt;/p&gt;

&lt;p&gt;Email verification is gated before a user can enable tips -- partly a Stripe compliance requirement, partly a way to reduce throwaway accounts.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Few Other Notes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Comments are flat, intentionally.&lt;/strong&gt; Replies go one level deep. Supporting arbitrary nesting in a mobile feed creates layout and performance complexity that is not worth it for the use case. One level of replies handles 95% of real conversations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cancellation tokens everywhere.&lt;/strong&gt; Any async fetch in a component returns a cleanup function. When React unmounts the component mid-fetch (navigation, etc.), the update is cancelled. This avoids the classic "can't perform a state update on unmounted component" warning and the subtle bugs that come from stale state being applied after navigation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AppState for payout sync.&lt;/strong&gt; It took a few iterations to get right, but monitoring &lt;code&gt;AppState&lt;/code&gt; changes in the settings screen is the cleanest way to reflect external state changes (like completing Stripe onboarding) without polling an endpoint on a timer.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The app is currently in &lt;strong&gt;closed beta on Android&lt;/strong&gt;. If you are a developer, streamer, or Twitch community member who wants to kick the tyres, I would love to have you test it.&lt;/p&gt;

&lt;p&gt;You can reach me at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt;: &lt;a href="mailto:me@michaelbrooks.co.uk"&gt;me@michaelbrooks.co.uk&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;iOS is also in development. The codebase is already cross-platform, so most of the feature work carries over -- it is mostly the platform-specific signing, entitlements, and App Store review pipeline that remains.&lt;/p&gt;

&lt;p&gt;If you are building anything in the React Native + Twitch space, or have thoughts on the architecture decisions above, I would genuinely like to hear from you. Drop a comment below or reach out directly.&lt;/p&gt;




&lt;p&gt;View the website at &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;https://chattr.online&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Chattr is built by a solo developer. Feedback from the community makes a real difference.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>typescript</category>
      <category>android</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Built Chattr — A Twitch Social Network</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Thu, 14 May 2026 07:02:13 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/how-i-built-chattr-a-twitch-social-network-2kdg</link>
      <guid>https://dev.to/michaelbrooks/how-i-built-chattr-a-twitch-social-network-2kdg</guid>
      <description>&lt;p&gt;I'm a big Twitch viewer and part-time streamer, and I've always felt like something was missing. Twitch is amazing for live streams, but once the stream ends, the community disperses across Discord, Reddit, BlueSky, Threads and Twitter. There is no single platform where Twitch streamers and their communities can stay engaged between streams.&lt;/p&gt;

&lt;p&gt;So I built Chattr, a social network for Twitch users to share posts, react with Twitch emotes, get live alerts, and stay connected with streamers and viewers.&lt;/p&gt;

&lt;p&gt;Here's how I built it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Backend: Laravel 13 + PHP 8.5
&lt;/h3&gt;

&lt;p&gt;Laravel is fast, flexible, and supplies a robust ecosystem. PHP 8.5 with Laravel 13 introduces constructor property promotion, typed properties, and attribute-based features such as #[Fillable].&lt;/p&gt;

&lt;p&gt;A few Laravel packages doing heavy lifting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Socialite&lt;/strong&gt; enables Twitch OAuth in just 20 lines of code. Users will sign in with their Twitch account; no new password or username is required. On sign-in, Twitch automatically syncs followers, so your community is ready. Also, if you are a partner with a Twitch-verified badge, your badge will carry over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Reverb&lt;/strong&gt; provides real-time features. Twitch fires a webhook when a streamer goes live, which then broadcasts an event, instantly updating every follower's feed. The same applies to posts, reactions, and comments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Scout&lt;/strong&gt; - full-text search for users and posts, backed by a database driver for simplicity at this stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Sanctum&lt;/strong&gt; - API token authentication for the mobile apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Nightwatch&lt;/strong&gt; - production monitoring and error tracking without the third-party overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Wayfinder&lt;/strong&gt; - auto-generates TypeScript functions for every Laravel route and controller action. The frontend avoids hardcoded URLs; each route call becomes a typed function import. Major win for refactoring safety.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend: React 19, Inertia.js v3 and Tailwind CSS v4
&lt;/h3&gt;

&lt;p&gt;Inertia bridges Laravel and React, allowing me to build a client-side React single-page application without separate APIs. I return typed page components from controller actions, share global state, and navigate entirely with Laravel routes. No API versioning or serialisation layer was required.&lt;/p&gt;

&lt;p&gt;React 19 and its compiler, via babel-plugin-react-compiler, automate memoisation and reduce useMemo and useCallback boilerplate.&lt;/p&gt;

&lt;p&gt;Tailwind CSS v4 eliminates the config file in favour of a CSS-native approach. I define design tokens in a single CSS file, and Tailwind automatically recognises them. Greatly reducing config effort for a project I'm building solo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-time with WebSockets
&lt;/h3&gt;

&lt;p&gt;Live stream detection is the feature I'm most proud of. Here's the flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When a user connects their Twitch account, they subscribe to Twitch EventSub webhooks for their channel.&lt;/li&gt;
&lt;li&gt;When a Twitch stream goes live, the website creates a live post, broadcasts the event via &lt;strong&gt;Reverb&lt;/strong&gt;, and sends push notifications to followers.&lt;/li&gt;
&lt;li&gt;On the frontend, &lt;strong&gt;Laravel Echo&lt;/strong&gt; updates the feed in real time: the live post appears, the avatar gets a red ring, and a notification is sent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All live updates are delivered via a single WebSocket connection managed by Reverb. No third-party services or extra messaging costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video: Mux
&lt;/h3&gt;

&lt;p&gt;Mux handles user-uploaded videos. Files are uploaded directly from the browser, processed asynchronously, and a webhook is fired when processing is complete. The website stores the playback ID, streams directly from Mux's CDN, and gets transcoding, dynamic bitrate, and signed URLs without managing codecs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Payments: Stripe Connect
&lt;/h3&gt;

&lt;p&gt;Streamers can get tips through &lt;strong&gt;Stripe Connect&lt;/strong&gt; Express in the app. Stripe handles onboarding, KYC (Know Your Customer), payouts, and compliance. Tips: Use the Payment Intent flow, and platform fees are handled at the charge level. The app doesn't store any bank/credit card information, as all payments are handled via Stripe. For now, those tipped get 70%, while I get the remaining 30% plus any fees Stripe charges.&lt;/p&gt;

&lt;p&gt;I've done this because the hosting needs to earn money, and I felt this was the least intrusive way to potentially make money back. In the future, I would like to offer special sponsorships that cover hosting costs, and then I will change the split so creators can earn 100% of their tips.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure: AWS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hosting with Amazon ECS
&lt;/h3&gt;

&lt;p&gt;The app runs in &lt;strong&gt;Amazon ECS with Fargate.&lt;/strong&gt; Serverless containers, no EC2 to manage. I use Docker to containerise Laravel, deploying separate ECS services for the web server (FrankenPHP/Caddy), the queue worker, and Reverb WebSocket.&lt;/p&gt;

&lt;p&gt;FrankenPHP is a modern PHP server built on Caddy. It offers faster cold starts, supports HTTP/2, HTTP/3, Early Hints, and natively handles WebSocket upgrades.&lt;/p&gt;

&lt;p&gt;ECS Fargate lets me scale the web tier independently from the queue workers, which is important for a social platform where queue throughput surges when many users go live simultaneously (weekend evenings are intense).&lt;/p&gt;

&lt;h3&gt;
  
  
  File Storage: Amazon S3
&lt;/h3&gt;

&lt;p&gt;All user media-images, audio, alert sounds-are stored in &lt;strong&gt;S3&lt;/strong&gt;. Uploads go directly from browser to S3 with pre-signed URLs, so Laravel never handles the raw bytes. This keeps requests fast and offloads file processing.&lt;/p&gt;

&lt;p&gt;The S3 bucket is private. All media is served through pre-signed URLs with short expiry, so subscriber-only content stays locked even if someone tries to share the URL directly. This is something I'm particularly proud of, because it's hard to keep videos private a lot of the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  CDN: Amazon CloudFront
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CloudFront&lt;/strong&gt; caches all app and S3 static assets globally. Users worldwide experience fast loading, regardless of their region.&lt;/p&gt;

&lt;p&gt;CloudFront terminates SSL and routes traffic to ECS. Dynamic HTML uses conservative cache policies; hashed static assets are cached for a year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features Worth Highlighting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Twitch Emote Reactions
&lt;/h3&gt;

&lt;p&gt;Rather than thumbs-up and hearts, users react to posts with actual Twitch emotes. I fetch the global Twitch emote set on first load and store it in memory. Each reaction records the emote slug and displays as an image from Twitch's CDN. This feature deeply cultivates community - it's the language Twitch communities already use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscriber-Only Posts
&lt;/h3&gt;

&lt;p&gt;Streamers can lock any post for Twitch subscribers. Subscriber status is verified live on every load; if it lapses, access is revoked automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Public Streamer Directory
&lt;/h3&gt;

&lt;p&gt;I added a public streamer directory at &lt;a href="https://chattr.online/streamers" rel="noopener noreferrer"&gt;chattr.online/streamers&lt;/a&gt;. Users can opt in to have their profiles and posts indexed by Google. This helps SEO-"{game} streamers" searches surface Chattr profiles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice Posts with AI Transcription
&lt;/h3&gt;

&lt;p&gt;Users can record audio posts. AWS will then transcribe it automatically with OpenAI Whisper and attach a searchable transcript to the post. Users can either read or listen to the post. This was inspired by Threads, which used to have Voice Notes but later removed them. Threads users have been calling for the return of Voice Notes, so I thought it would be a good addition.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would Do Differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I wish I had started public-facing pages earlier.&lt;/strong&gt; Building the social feed first put everything behind a login wall. Search engines couldn't crawl the content. Adding the streamer directory and public profiles boosted discovery immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Chattr is live at &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;chattr.online&lt;/a&gt;. Sign in with Twitch for instant access to the community. No setup, manual follows, or empty feed. People you already follow on Twitch appear in your feed if they're on Chattr.&lt;/p&gt;

&lt;p&gt;If you're a streamer, it takes about 30 seconds to opt in to the public directory and start getting indexed. Game communities are automatically created the first time someone joins - so if you play a game and your fans do too, there's already a community page for it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built with Laravel, React, Inertia.js, Tailwind, AWS ECS, CloudFront, S3, Mux, Stripe, and a lot of Twitch streams in the background.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questions or feedback? Find me on Chattr at&lt;/em&gt; &lt;a href="https://chattr.online/streamers/MichaelBrooksUK" rel="noopener noreferrer"&gt;&lt;em&gt;chattr.online/streamers/MichaelBrooksUK&lt;/em&gt;&lt;/a&gt; or on &lt;a href="https://threads.com/MichaelBrooksUK" rel="noopener noreferrer"&gt;&lt;em&gt;Threads&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>react</category>
      <category>webdev</category>
      <category>aws</category>
    </item>
    <item>
      <title>I built a Twitch social network called Chattr</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 17 Apr 2026 10:08:53 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/i-built-a-twitch-social-network-called-chattr-5hfo</link>
      <guid>https://dev.to/michaelbrooks/i-built-a-twitch-social-network-called-chattr-5hfo</guid>
      <description>&lt;p&gt;I've had this idea for a while. People have wanted a place to be social with their Twitch community, and since Elon purchased Twitter, the community has split. A lot of people left Twitter and moved to Threads or Bluesky. Many streamers have stayed on Twitter because companies are still posting potential opportunities.&lt;/p&gt;

&lt;p&gt;I left Twitter, but I see opportunities show up that I wish I could apply to. I created a new account, just for those moments, but it's not my original account and is probably looked over a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is where my social network comes in
&lt;/h2&gt;

&lt;p&gt;If my social network site can become the social hub for Twitch, then fewer people would miss out on these opportunities. Also, most social networks will hide external links to Twitch. &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt; doesn't do that; in fact, we encourage it.&lt;/p&gt;

&lt;p&gt;When you go live, a post instantly goes up to let your &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt; community know you're live. You can send clips, and people can comment on and react to them. There is rich media available on YouTube, TikTok, and Twitch, so people can watch directly from the &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt; website.&lt;/p&gt;

&lt;p&gt;Take a look at the above website, which shows that I'm live! There is a link to view the stream, and it goes straight to the streamer's livestream.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0tirof69s21t99xlk7e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0tirof69s21t99xlk7e.png" alt=" " width="800" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above is a screenshot of me posting a Twitch clip, and you can see the embedded media.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Twitch followers automatically follow you on the website
&lt;/h2&gt;

&lt;p&gt;Say you sign up to &lt;a href="https://chattr.online" rel="noopener noreferrer"&gt;Chattr&lt;/a&gt;, and a follower or two also sign up. They will automatically follow you on the website and instantly see any updates you post. If a follower joins after you sign up, again, they will also follow you on the website.&lt;/p&gt;

&lt;p&gt;Personally, I think this is one of the best features, as it's much easier for everyone to bring their existing communities into the website. Once more people sign up, they should feel instantly at home.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Discover algorithm
&lt;/h2&gt;

&lt;p&gt;There is also a discover page that uses an algorithm to discover new Twitch users. This page is very early in it's development, and I will be looking more into it in the future for things to improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  There is more to come!
&lt;/h2&gt;

&lt;p&gt;I have many more features and improvements noodling around my head, which I'm excited to develop. Things like being able to block or report users, and hide and report posts are something high on the list. I'd also like to get sponsorships from websites linked to Twitch, to help people improve and grow their streams.&lt;/p&gt;

&lt;p&gt;Replying to comments would also be a very nice feature that I haven't added yet.&lt;/p&gt;

&lt;p&gt;I'd like to have a more real-time and hustle-and-bustle feel. If you do happen to sign up, please test everything you can and also give me feedback on what works, what doesn't and what can be improved.&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>webdev</category>
      <category>twitch</category>
    </item>
    <item>
      <title>Creator Interview with Ravi Kikan</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Thu, 23 Jul 2020 09:44:04 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/creator-interview-with-ravi-kikan-266k</link>
      <guid>https://dev.to/michaelbrooks/creator-interview-with-ravi-kikan-266k</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G9Qc7LhX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f6as9bpq102abizexxjc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G9Qc7LhX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f6as9bpq102abizexxjc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been following Ravi on Twitter for a while, he's a great supportive person, and constantly helps those around him. He has created groups to help support entrepreneurs and start-ups and is a constant conversation-started. Please enjoy this interview.&lt;/p&gt;

&lt;h1&gt;
  
  
  Hi Ravi, thank you so much for answering some questions. How are you?
&lt;/h1&gt;

&lt;p&gt;Fantastic and thanks for asking. I am doing as good as New Zealand as we talk :)&lt;/p&gt;

&lt;h1&gt;
  
  
  You have quite a big following on Twitter. For those that aren't aware of what you do, could you please tell them a little bit of your background?
&lt;/h1&gt;

&lt;p&gt;I ❤️ startups and work with awesome startups &amp;amp; entrepreneurs in setting up their businesses, scaling up and building growth. I am currently leading the marketing and growth for ZingHR which is an HR Tech venture with over a million users globally.&lt;/p&gt;

&lt;p&gt;My experience in Startups and Enterprise sectors like Media &amp;amp; PR, Fintech, Education, Digital, Retail, Mobile, Healthcare, AI, IoT, Tech, e-Commerce, Real Estate has helped me to launch &amp;amp; grow ventures. I love working with entrepreneurs, enterprises, community builders and investors who are focussed at growth.&lt;/p&gt;

&lt;p&gt;I am the author of one of the best-loved books for startups and entrepreneurs. How To Validate Your Startup Business Idea. Anyone planning or thinking about starting up a new venture or business should ideally read this book:&lt;/p&gt;

&lt;p&gt;Amazon India: &lt;a href="https://amzn.to/2A7KwDn"&gt;https://amzn.to/2A7KwDn&lt;/a&gt;&lt;br&gt;
Amazon Global: &lt;a href="https://amzn.to/2q629O3"&gt;https://amzn.to/2q629O3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have published my second book Bounce Back Now (which was trending as the number 1 new release on Amazon) for all the aspiring entrepreneurs, startups, students, professionals, small business owners, who are thinking about launching their business or have already launched their business despite tough times. It is also my endeavour to support individuals who might be in a closed state of mind, pessimistic, depressed or might have failed in their previous efforts&lt;/p&gt;

&lt;p&gt;Amazon India &lt;a href="https://www.amazon.in/dp/B08C5ML12G"&gt;https://www.amazon.in/dp/B08C5ML12G&lt;/a&gt;&lt;br&gt;
Amazon Global &lt;a href="https://www.amazon.com/dp/B08C5ML12G"&gt;https://www.amazon.com/dp/B08C5ML12G&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am also the group owner &amp;amp; moderator for many large global online communities on LinkedIn &amp;amp; Facebook. One of them is &amp;gt; Startup Specialists &lt;a href="https://www.linkedin.com/groups/56766"&gt;https://www.linkedin.com/groups/56766&lt;/a&gt; is one of the largest groups for startups amid the 2 mill+ groups on LinkedIn which has around 380,000+ global members.&lt;/p&gt;

&lt;h1&gt;
  
  
  I see you're always trying to inspire and encourage lateral thinking. What made you decide to go down this route?
&lt;/h1&gt;

&lt;p&gt;My own failures and failures that I see around me.&lt;/p&gt;

&lt;p&gt;Now imagine a group of great tech guys with a great product which has a market fit and paying customers but bomb down their venture because they can't market the product. They just go unnoticed.&lt;/p&gt;

&lt;p&gt;There has to be a bunch of people who have to speak their heart out, no matter what. They also need to handhold or advise people in the right direction. You might not always have a recipe for success but you can always save people from not sinking in failure.&lt;/p&gt;

&lt;h1&gt;
  
  
  You've released two books on Amazon and they've gained a lot of support. What made you start writing?
&lt;/h1&gt;

&lt;p&gt;I think the willingness to learn and relearn and help people especially aspiring entrepreneurs and growth bound startups to scale up around the world. This is also a step towards looking and learning from the real ground level where people operate &amp;amp; work and build their products or businesses.&lt;/p&gt;

&lt;p&gt;I think my own failures have also taught me to see failures as a matter of just falling down. They are not permanent roadblocks, they need to be just tossed away.&lt;/p&gt;

&lt;h1&gt;
  
  
  How do you gain and organise your thoughts to create them?
&lt;/h1&gt;

&lt;p&gt;I think I write wherever I can, whenever I can….&lt;/p&gt;

&lt;p&gt;The best way is to share and collaborate on experiences. People generally have a fear of being judged and do not share what they will be judged on.&lt;/p&gt;

&lt;h1&gt;
  
  
  If you could give some words of advice, what would that be?
&lt;/h1&gt;

&lt;p&gt;Keep in mind that your learning and unlearning should never stop and always remember and never forget that “Falling down is NOT Failure, Failure is Never Final”&lt;/p&gt;

&lt;h1&gt;
  
  
  Finally, where can my audience find you?
&lt;/h1&gt;

&lt;p&gt;They can find me on social media and connect with me. I would love to hear stories of how people have bounced back now and grown in life beyond their challenges.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ravikikan"&gt;https://twitter.com/ravikikan&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/ravikikan/"&gt;https://www.linkedin.com/in/ravikikan/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>creator</category>
      <category>interview</category>
      <category>spotlight</category>
    </item>
    <item>
      <title>Creator Interview With David Thorpe - Creator of The Average Dev</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 10 Jul 2020 14:09:37 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/creator-interview-with-david-thorpe-d8l</link>
      <guid>https://dev.to/michaelbrooks/creator-interview-with-david-thorpe-d8l</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MSS36e80--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a82bup6l7n2wlzuqo0jg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MSS36e80--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a82bup6l7n2wlzuqo0jg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;David has been a good friend and I've always enjoyed the content he's published. He's a man of many talents and now has a focus on taking control over digital anxiety. He has also started a podcast called "The Average Dev" with very insightful information, I recommend you give it a listen to after reading this great interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello Dave, for those that don't know, please introduce yourself. Who are you, and what do you do?
&lt;/h2&gt;

&lt;p&gt;Hey Michael,&lt;/p&gt;

&lt;p&gt;I’m a software engineer, and I’ve been in the game for over 10 years now. I primarily work with startups and other companies wanting to build internal products. Recently I’ve moved to more leadership roles, and I want to communicate great career advice and confidence in other developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  You recently decided to teach others digital wellness. What made you decide this change in direction?
&lt;/h2&gt;

&lt;p&gt;I used to find myself overusing my iPhone. I’d browse and browse, refresh all the feeds and it was horrible. It made my head feel spaced out all the time. I had to make a change and get away from screens when I wasn’t working since I was also spending 8+ hours a day on them coding. I’m militant about how I use technology now. It’s the most important thing to me with regards to tech that I control how I use it and not the other way around.&lt;/p&gt;

&lt;p&gt;This has allowed me the focus to work on the things that matter to me, and that is communicating my story and learnt lessons from 8 years of self-employment to other people who are looking to start out. This has been hugely rewarding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yq0I3d5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ylw62jh2mdfe4rfchuxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yq0I3d5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ylw62jh2mdfe4rfchuxc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  You also have a podcast called "The Average Dev". What are your thoughts behind the name, and what made you decide to create it?
&lt;/h2&gt;

&lt;p&gt;The name clicked for me because we, as developers, are always exposed to people in our industry doing incredible things. Releasing the next CSS framework, launching a video course, making millions from it etc. It’s the Instagram of the dev world. It’s really easy to believe that this is what we’re all expected to do, but I fundamentally reject that idea since it is unhealthy and isn’t actually a realistic goal for everyone.&lt;/p&gt;

&lt;p&gt;The Average Dev name just communicates that. I am just an average dev, but I’m one who wants to talk about my experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where can my audience find you?
&lt;/h2&gt;

&lt;p&gt;I tweet about tips I’ve found and updates to my content output at &lt;a href="https://twitter.com/davzie"&gt;@davzie&lt;/a&gt;, and you can sign up for email alerts or view my content at &lt;a href="https://davidthorpe.dev/"&gt;davidthorpe.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for having me, Michael!!&lt;/p&gt;

</description>
      <category>creator</category>
      <category>interview</category>
      <category>spotlight</category>
    </item>
    <item>
      <title>My initial thoughts on Apple's IOS14</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Wed, 01 Jul 2020 14:01:52 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/my-initial-thoughts-on-apple-s-ios14-1jki</link>
      <guid>https://dev.to/michaelbrooks/my-initial-thoughts-on-apple-s-ios14-1jki</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AgpkWmaN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vc3waa09ayu2aiftpb02.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AgpkWmaN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vc3waa09ayu2aiftpb02.jpg" alt="Holding out the iPhone"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial Thoughts
&lt;/h2&gt;

&lt;p&gt;Last week I installed the IOS14 beta, and overall, I'm impressed with the experience. Android fans will scoff at the idea that Apple has implemented widgets, screaming, "WE'VE HAD THIS SINCE THE BEGINNING OF ANDROID PHONES!". Or they'll laugh at the idea that iPhones finally have an app draw (called App Library) and has picture in picture mode (PiP).&lt;/p&gt;

&lt;p&gt;The thing is, we all know that Apple takes their time, and when they deliver these improvements, they usually offer it better than most Android implementations.&lt;/p&gt;

&lt;h2&gt;
  
  
  App Library
&lt;/h2&gt;

&lt;p&gt;The App Library is a smart AI-driven app drawer that cleverly bundles apps together and will bring the apps you use most near the top. You don't have to think about customising it yourself, and I've found myself removing most apps from the main screen in favour of the App library. Also, if you can't find the app you're looking for, then the search at the top of the screen is super helpful and lightning-fast. Overall, my impressions of the App library has been very positive. Once in a while, I stare at my screen and wonder where the app I'm looking for is. However, this happens a lot less than when I used Android.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ch6DszF7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_095155000_ios.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ch6DszF7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_095155000_ios.png" alt="./images/20200623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Picture in Picture
&lt;/h2&gt;

&lt;p&gt;It's nice being able to watch videos while using other apps. I also like the fact you can swipe the video to the side, and the video will still play while showing an arrow to bring the video back.&lt;/p&gt;

&lt;p&gt;To be honest, they're the only two apps I've tested for PiP. I'm pretty sure the experience will be very similar to Apple video and other video apps. It's a fantastic feature which they have implemented well, and I don't think much can be improved. The only negative is more towards Google and forcing us to subscribe to premium for silly basic features.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v95Lp0Dg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_152937000_ios.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v95Lp0Dg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://app.forestry.io/sites/8ph-bduga2rdlw/body-media/./images/20200623_152937000_ios.png" alt="./images/20200623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Widgets
&lt;/h2&gt;

&lt;p&gt;Widgets have always been great on Android phones and I used to love having a weather and search widget. When moving over to the iPhone, I was a little sad that it wasn't a feature. Now the feature is here, and I'm happy with their implementation. Especially with the Stack widget that allows you to group widgets together and scroll between them. Apple will also intelligently move across the widgets during your day depending on what it thinks you need at that moment.&lt;/p&gt;

&lt;p&gt;The stack widget is so clever that I think it's the only widget you or I will ever need. It's currently the only one I have on my screen and I love flicking through my stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Siri
&lt;/h2&gt;

&lt;p&gt;Siri no longer takes up your whole screen, and instead, it's a little icon near the bottom of your screen. Results also appear at the time in a little card that looks a lot cleaner than previous versions. I haven't used Siri enough to gather whether it's more or less clever, but the way it works is definitely cleaner and more simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  Receiving Phone Calls
&lt;/h2&gt;

&lt;p&gt;Receiving phone calls has also had an upgrade. Rather than taking up the screen, it will come in from the top when you're using your phone, and you can swipe up to dismiss. It's clean and simple to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Accessibility
&lt;/h2&gt;

&lt;p&gt;Accessibility may not seem interesting, but there's one feature that I love. If you go to "Settings &amp;gt; Accessibility &amp;gt; Touch", you can turn on "Back Tap" which allows you to open apps by tapping the back of your phone. There are two options, one for "Double Tap" and another for "Triple Tap". Currently, I have my double tap set to open Siri and nothing on my triple tap. However, I would like to be able to open my camera with the triple tap which isn't currently possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features I'm excited for
&lt;/h2&gt;

&lt;p&gt;There are many features that I haven't yet tried but really excited for. These include, but are not limited to; CarPlay unlock, App Clips, and IOS Smart Home controls. CarPlay unlock could be very handy and would mean I don't have to carry my car keys with me any more. App clips is also another one I'm excited to try out since I can use club cards and not have to install standalone apps in order to do so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should you install IOS14 beta?
&lt;/h2&gt;

&lt;p&gt;The OS itself is very stable. So far, I've had very little issues with the OS itself. However, if you rely on your banking apps, then I would stay away. Currently, all banking apps will either crash and exit or notify you that you're using a jailbroken device.&lt;/p&gt;

&lt;p&gt;If you have another phone where you can use your banking apps, then go ahead, otherwise, I would just wait for the official release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;IOS14 has some very welcomed features which I hope they can continue to innovate on. Android users may laugh at the fact they've had these features since the dawn of time, but Apple manages to go a step further each time.&lt;/p&gt;

&lt;p&gt;Have you got the IOS14 beta? If so, what are your thoughts?&lt;/p&gt;

&lt;p&gt;If not, what are you looking forward to the most?&lt;/p&gt;

&lt;p&gt;If you're an Android user, what do you think about these features?&lt;/p&gt;

</description>
      <category>iphone</category>
      <category>ios14</category>
      <category>apple</category>
    </item>
    <item>
      <title>Docker: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 05 Jul 2019 07:49:54 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/docker-request-canceled-while-waiting-for-connection-client-timeout-exceeded-while-awaiting-headers-b1i</link>
      <guid>https://dev.to/michaelbrooks/docker-request-canceled-while-waiting-for-connection-client-timeout-exceeded-while-awaiting-headers-b1i</guid>
      <description>&lt;p&gt;This error has had a lot of people stumped by the looks of their &lt;a href="https://github.com/docker/kitematic/issues"&gt;issues on GitHub&lt;/a&gt;. I think the error stems from downloading Docker through their main landing page, I tried a lot to fix the issue and with no luck. This included switching the DNS over to 8.8.8.8 which has been suggested in the past and worked.&lt;/p&gt;

&lt;p&gt;My answer to the issue is don’t use the main landing page to install Docker, instead, you want to &lt;a href="https://docs.docker.com/install/#supported-platforms"&gt;download it from here&lt;/a&gt; and then everything should work as normal.&lt;/p&gt;

&lt;p&gt;If you have any questions or feel it hasn’t worked for you, then please let me know.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Laravel enforcing strict passwords with Regex</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Wed, 03 Jul 2019 09:41:28 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/laravel-enforcing-strict-passwords-with-regex-18h3</link>
      <guid>https://dev.to/michaelbrooks/laravel-enforcing-strict-passwords-with-regex-18h3</guid>
      <description>&lt;p&gt;Recently I had someone comment on one of my gists which I created a few years ago. It was a gist to help create strict password validation with Regex. I honestly completely forgot about it until that email.&lt;/p&gt;

&lt;p&gt;When taking a look, I thought to myself "Oh wow! Did I make this?". I then looked down at the comments which I never saw before and noticed it's helped out quite a lot of people.&lt;/p&gt;

&lt;p&gt;I thought it was only fair I should share it to others in case they need it to. So without further ado, here's the link for your viewing pleasure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/Michael-Brooks/fbbba105cd816ef5c016"&gt;https://gist.github.com/Michael-Brooks/fbbba105cd816ef5c016&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are some very helpful comments, so please feel free to read them and I hope it helps you out for your Laravel projects. And if you create something useful in your own code, don't forget to share it in a gist as it could help others.&lt;/p&gt;

&lt;p&gt;If you have your very own useful gists, please feel free to share too.&lt;/p&gt;

&lt;p&gt;UPDATE: It's been noted that this could be seen as a recommendation or "this is how I think passwords should be done". It isn't and these were requirements from a former client which had been formally agreed upon. I would recommend better password validation rules and using a password strength indicator. This can be seen on my &lt;a href="https://www.reddit.com/r/laravel/comments/c8m9f0/laravel_enforcing_strict_passwords_with_regex/"&gt;Reddit post here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>github</category>
      <category>gist</category>
      <category>regex</category>
    </item>
    <item>
      <title>IGTV Web Dev Coffee Talk with me</title>
      <dc:creator>Michael Brooks</dc:creator>
      <pubDate>Fri, 07 Jun 2019 12:44:51 +0000</pubDate>
      <link>https://dev.to/michaelbrooks/igtv-web-dev-coffee-talk-with-me-4gc9</link>
      <guid>https://dev.to/michaelbrooks/igtv-web-dev-coffee-talk-with-me-4gc9</guid>
      <description>&lt;p&gt;I've started an IGTV channel where every Friday I talk about web development. Currently, I'm talking about contracting, but in the future, I might expand to other topics such as different technologies, new projects and more.&lt;/p&gt;

&lt;p&gt;My main profile has a bunch of Crossfit and motivational stuff, but this might change as I figure out what I actually want out of my IG channel. Any suggestions would be appreciated, and if you have any questions or ways to improve, I'm all ears.&lt;/p&gt;

&lt;p&gt;If you want to skip over the Crossfit stuff and you only want to see tech stuff from my IGTV channel then follow me on here and I'll keep you posted. Otherwise, you can follow my IG profile and find out more about my life in general.&lt;/p&gt;

&lt;p&gt;Here's a link straight to my IGTV content &lt;a href="https://www.instagram.com/mike_d_brooks/channel/"&gt;https://www.instagram.com/mike_d_brooks/channel/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>verticalvideo</category>
      <category>contracting</category>
      <category>webdev</category>
      <category>coffee</category>
    </item>
  </channel>
</rss>
