<?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: kenghow</title>
    <description>The latest articles on DEV Community by kenghow (@kenghow777).</description>
    <link>https://dev.to/kenghow777</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1090066%2F49648804-238a-444b-bf25-c7a74a58b9fe.jpeg</url>
      <title>DEV Community: kenghow</title>
      <link>https://dev.to/kenghow777</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kenghow777"/>
    <language>en</language>
    <item>
      <title>I shipped a $49 React Native template with the backend included — here's the architecture</title>
      <dc:creator>kenghow</dc:creator>
      <pubDate>Thu, 07 May 2026 17:31:12 +0000</pubDate>
      <link>https://dev.to/kenghow777/i-shipped-a-49-react-native-template-with-the-backend-included-heres-the-architecture-589l</link>
      <guid>https://dev.to/kenghow777/i-shipped-a-49-react-native-template-with-the-backend-included-heres-the-architecture-589l</guid>
      <description>&lt;p&gt;After building a fitness tracker as a side project, I realized the &lt;strong&gt;backend plumbing&lt;/strong&gt; (auth, cloud sync, AI proxy with quota, RLS) was ~4 weeks of work that most React Native templates skip entirely.&lt;/p&gt;

&lt;p&gt;So I rebranded mine as &lt;strong&gt;Reptron&lt;/strong&gt; and shipped it as a template.&lt;/p&gt;

&lt;p&gt;Live: &lt;a href="https://8628671192007.gumroad.com/l/mbmmh" rel="noopener noreferrer"&gt;https://8628671192007.gumroad.com/l/mbmmh&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
mermaid
flowchart LR
    App[📱 React Native App] --&amp;gt;|JWT| Worker[⚡ Cloudflare Worker&amp;lt;br/&amp;gt;auth + quota]
    App --&amp;gt;|JWT| Supabase[☁️ Supabase&amp;lt;br/&amp;gt;Postgres + RLS]
    Worker --&amp;gt;|server secret| Groq[🤖 Groq Llama 3.1]
\`\`\`

(The Groq API key never ships in the app bundle — it lives as a Cloudflare secret on the Worker.)

## What's actually in it

### Production backend (the actual value)

- **Cloudflare Worker proxy** that hides the Groq API key — verifies Supabase JWT via cached JWKS (1h TTL), enforces 50 req/user/day quota in KV (26h TTL covers the UTC day boundary)
- **Supabase Postgres with RLS** — users only see their own data, verified at the database level
- **Idempotent cloud sync** — workouts push to Supabase on Finish, pull on sign-in, last-write-wins per `client_id`

### App layer

- **Auth + sync** wired through Zustand + MMKV with persisted session
- **AI Coach** with Groq Llama 3.1 8B streaming SSE, system prompt seeded with last 5 workouts + PRs
- **EN + TH i18n** out of the box
- **88 passing Vitest tests**, strict TypeScript, `tsc --noEmit` clean

## Why I'm positioning as a "backend stack" not a UI kit

There's a Flutter UI kit on Gumroad with 35+ polished screens for $99. That's a different product for a different buyer. Reptron has minimal UI you customize anyway — the value is the working backend you'd otherwise spend weeks building.

The README explicitly redirects UI shoppers elsewhere. Self-selecting buyers = lower refund rate.

## Stack

Expo SDK 54 · TypeScript strict · Zustand 5 · MMKV · NativeWind v4 · Supabase · Cloudflare Workers · `jose` JWT · Groq · Vitest

## What's deferred (transparently, in the listing)

- iOS (code is iOS-compatible but only Android is tested)
- Google/Apple OAuth (email/password only — OAuth is a 1-day add-on)
- RevenueCat / paywall (`tier` column exists, wiring is the buyer's call)
- Offline queue (workouts log to MMKV; failed cloud pushes are dropped silently)

## Numbers

- Build time: ~5 days solo
- Bundle: 303 KB zip
- Price: $49 (Gumroad), planning $39 on CodeCanyon
- Free updates: 6 months
- Setup support: 30 days

## Looking for honest feedback

1. The "backend stack" positioning — does it land, or sound vague?
2. Price — $49 too low for the value, or too high without proven sales?
3. Anything missing from the listing you'd want before buying a dev template?

If you build something with this, I'd love to hear about it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>reactnative</category>
      <category>expo</category>
      <category>supabase</category>
      <category>cloudflare</category>
    </item>
  </channel>
</rss>
