<?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: Jonas</title>
    <description>The latest articles on DEV Community by Jonas (@jofflin).</description>
    <link>https://dev.to/jofflin</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%2F4007371%2Fc9c86b18-c55a-4191-b02d-5036cff53395.png</url>
      <title>DEV Community: Jonas</title>
      <link>https://dev.to/jofflin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jofflin"/>
    <language>en</language>
    <item>
      <title>Hi, I'm Jonas — building a sports SaaS solo, in the open</title>
      <dc:creator>Jonas</dc:creator>
      <pubDate>Mon, 29 Jun 2026 06:25:52 +0000</pubDate>
      <link>https://dev.to/jofflin/hi-im-jonas-building-a-sports-saas-solo-in-the-open-odd</link>
      <guid>https://dev.to/jofflin/hi-im-jonas-building-a-sports-saas-solo-in-the-open-odd</guid>
      <description>&lt;p&gt;Hi 👋 I'm Jonas.&lt;/p&gt;

&lt;p&gt;CS bachelor, Entrepreneurship master. By day I'm at &lt;strong&gt;nono&lt;/strong&gt;. On the side I'm building &lt;strong&gt;SportsFlow&lt;/strong&gt; solo — and I'm going to write about every hard part of it out in the open. This is the intro.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm building
&lt;/h2&gt;

&lt;p&gt;SportsFlow replaces the thing every amateur handball coach still uses: a clipboard and a pen.&lt;/p&gt;

&lt;p&gt;The idea is simple. Live-track every shot, assist and save during the game on a phone or tablet, and get real season analytics out the other end — shooting percentages, heatmaps, goalkeeper saves, momentum, lineup impact. Handball first, then volleyball, basketball, ice hockey.&lt;/p&gt;

&lt;p&gt;I sat on enough benches to know the problem is real: the data is right there &lt;em&gt;in the game&lt;/em&gt;, and it evaporates the second the whistle blows. Nobody should need a spreadsheet and a good memory to coach with numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I write about both code and product
&lt;/h2&gt;

&lt;p&gt;I build at the seam between engineering and product — that's the CS + Entrepreneurship combo. So I won't only post architecture. I'll also post the decisions about &lt;em&gt;what's worth building at all&lt;/em&gt;: where I drew scope lines, what I deliberately didn't build, how billing shapes the data model.&lt;/p&gt;

&lt;p&gt;The recurring theme in everything here is one idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Make the correct thing structural.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Idempotency in the schema, not the network. Tenancy in the procedure, not the query. Types from one zod definition, not two. Discipline the system enforces, not discipline you have to remember — because when you're solo, the stuff you have to remember eventually fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll get if you follow along
&lt;/h2&gt;

&lt;p&gt;Biweekly build-in-public deep-dives, including the honest costs and not just the wins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Offline-first capture&lt;/strong&gt; — sports halls have zero WiFi, so the whole tracking pipeline works offline and reconciles later without double-counting goals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One analytics codebase, three runtimes&lt;/strong&gt; — the same shooting-percentage code runs in the web app, the native app, and offline during live tracking, so the numbers can never disagree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shipping four apps solo from one monorepo&lt;/strong&gt; — web, native, marketing, and docs, and the conventions that make that sane for one person.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;p&gt;If that's your filter: TypeScript (zod-first), TanStack Start, tRPC, Drizzle, better-auth, Turborepo, Expo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come say hi
&lt;/h2&gt;

&lt;p&gt;If you're building in live sports, offline-first systems, or multi-tenant SaaS — or you're a solo dev shipping more than one person reasonably should — follow along, and please come argue with me in the comments. The build-in-public part only works if it's a conversation.&lt;/p&gt;

&lt;p&gt;First deep-dive drops soon.&lt;/p&gt;

</description>
      <category>introduction</category>
      <category>buildinpublic</category>
      <category>typescript</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
