<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hustlestats on Start AI Tools - Presented by Intent Solutions</title><link>https://startaitools.com/tags/hustlestats/</link><description>Recent content in Hustlestats on Start AI Tools - Presented by Intent Solutions</description><generator>Hugo</generator><language>en-US</language><copyright>Intent Solutions. All rights reserved.</copyright><lastBuildDate>Thu, 09 Apr 2026 22:22:51 -0500</lastBuildDate><atom:link href="https://startaitools.com/tags/hustlestats/index.xml" rel="self" type="application/rss+xml"/><item><title>New Year's Eve: A Go CLI From Scratch, a Security Fix, and Two Releases</title><link>https://startaitools.com/posts/new-years-eve-go-cli-security-fix-two-releases/</link><pubDate>Wed, 31 Dec 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/new-years-eve-go-cli-security-fix-two-releases/</guid><description>&lt;p&gt;Last day of 2025. Five projects touched. Twenty-five commits. One project built from nothing, one patched a security hole that should never have existed, and two shipped point releases to close out the year clean.&lt;/p&gt;
&lt;h2 id="create-agent-skill-new-go-cli"&gt;create-agent-skill: New Go CLI&lt;/h2&gt;
&lt;p&gt;Nine commits. Brand new project. A Go CLI tool for validating and scaffolding Claude Code agent skills. The problem it solves: skill definitions are YAML files with a specific schema, and getting the schema wrong means the skill silently fails to load or behaves unexpectedly at runtime.&lt;/p&gt;</description></item><item><title>Dream Gym Sprints, Email AI Stack, and 128 RSS Feeds</title><link>https://startaitools.com/posts/dream-gym-sprints-email-ai-stack-perception-feeds/</link><pubDate>Mon, 29 Dec 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/dream-gym-sprints-email-ai-stack-perception-feeds/</guid><description>&lt;p&gt;Four projects. Thirty-eight commits. Two of them are building real product features, one is growing into an intelligence platform, and one just needed a Dockerfile fix.&lt;/p&gt;
&lt;h2 id="dream-gym-sprints-1-through-3"&gt;Dream Gym: Sprints 1 Through 3&lt;/h2&gt;
&lt;p&gt;Hustle&amp;rsquo;s Dream Gym module went from concept to working product in three sprints and fourteen commits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sprint 1: Workout Logging.&lt;/strong&gt; The core data model is straightforward — exercises, sets, reps, weight, duration. But the UX question was whether to optimize for speed or detail. Speed won.&lt;/p&gt;</description></item><item><title>GWI v0.3.0, Hustle CI Goes Green, and Intent Mail Gets an AI Brain</title><link>https://startaitools.com/posts/gwi-v030-release-hustle-ci-green-intent-mail-ai/</link><pubDate>Sat, 27 Dec 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/gwi-v030-release-hustle-ci-green-intent-mail-ai/</guid><description>&lt;p&gt;December 27th was a convergence day. Three projects that had been grinding through separate backlogs all hit release-worthy milestones at the same time. Thirty-eight commits across git-with-intent, Hustle, and Intent Mail.&lt;/p&gt;
&lt;h2 id="git-with-intent-v030"&gt;git-with-intent v0.3.0&lt;/h2&gt;
&lt;p&gt;The v0.3.0 release closed four epics: F1 feature hardening, monitoring infrastructure, forecasting pipeline, and infra upgrades. Twenty-three commits landed across the board.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;F1 feature hardening&lt;/strong&gt; cleaned up rough edges that accumulated during the v0.2.x cycle. Approval gate edge cases — empty diff handling, multi-commit squash detection, and branch protection rule conflicts — all got explicit handling instead of falling through to a generic error path. The kind of polish that doesn&amp;rsquo;t show up in a changelog but prevents support tickets.&lt;/p&gt;</description></item><item><title>PostgreSQL Decommission, Monitoring Stack, and HustleStats v1.0.0</title><link>https://startaitools.com/posts/hustlestats-postgres-decommission-v1-release/</link><pubDate>Tue, 18 Nov 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/hustlestats-postgres-decommission-v1-release/</guid><description>&lt;p&gt;31 commits in a single day. Not 31 features &amp;ndash; 31 cleanup, hardening, and shipping tasks that turned a working prototype into a released product. The commit volume sounds dramatic. The reality is unglamorous. This was the grind that makes software real.&lt;/p&gt;
&lt;h2 id="postgresql-decommission"&gt;PostgreSQL Decommission&lt;/h2&gt;
&lt;p&gt;HustleStats started on PostgreSQL with Prisma as the ORM. The data layer migrated to Firestore months ago, but the Prisma dependency lingered &amp;ndash; unused schema files, legacy route handlers, and a healthcheck endpoint that still pinged a Postgres connection string that no longer existed.&lt;/p&gt;</description></item><item><title>HustleStats Launch Sprint: From Firebase Auth to Production SaaS with Stripe Billing in One Day</title><link>https://startaitools.com/posts/hustlestats-launch-sprint-stripe-billing-paywall/</link><pubDate>Sun, 16 Nov 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/hustlestats-launch-sprint-stripe-billing-paywall/</guid><description>&lt;h2 id="the-starting-point"&gt;The Starting Point&lt;/h2&gt;
&lt;p&gt;Yesterday ended with 7 dashboard pages running on Firebase Auth. The app could authenticate users and display their data. What it couldn&amp;rsquo;t do: charge money, enforce plan limits, or prevent free users from accessing paid features.&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s goal: ship a complete billing system. Not &amp;ldquo;billing someday&amp;rdquo; — billing today, with Stripe checkout, webhooks, plan enforcement, and a customer portal.&lt;/p&gt;
&lt;p&gt;33 commits. Four phases.&lt;/p&gt;
&lt;h2 id="phase-4-final-prisma-cleanup"&gt;Phase 4: Final Prisma Cleanup&lt;/h2&gt;
&lt;p&gt;Before adding anything new, the last traces of PostgreSQL needed to go.&lt;/p&gt;</description></item><item><title>HustleStats Firebase Auth Cutover: 7 Dashboard Pages, 3-Layer Defense, Zero Prisma</title><link>https://startaitools.com/posts/hustlestats-firebase-auth-cutover-seven-pages/</link><pubDate>Sat, 15 Nov 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/hustlestats-firebase-auth-cutover-seven-pages/</guid><description>&lt;p&gt;The Firebase migration (Days 2-7) gave HustleStats a new auth system and data layer. Today was the cutover — making every dashboard page actually use it.&lt;/p&gt;
&lt;h2 id="phase-1-planning-and-staging"&gt;Phase 1: Planning and Staging&lt;/h2&gt;
&lt;p&gt;Before touching code, I mapped every page that imported NextAuth or Prisma:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dashboard home&lt;/li&gt;
&lt;li&gt;Player list + detail&lt;/li&gt;
&lt;li&gt;Game entry + detail&lt;/li&gt;
&lt;li&gt;Stats overview&lt;/li&gt;
&lt;li&gt;Settings/profile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Seven pages total. Each one imported &lt;code&gt;getServerSession&lt;/code&gt; from NextAuth and made Prisma queries for data. Every page needed both the auth and data layer swapped.&lt;/p&gt;</description></item><item><title>HustleStats Firebase Migration Days 2-7: Schema, Auth Swap, Data Port, and the Cost Cliff</title><link>https://startaitools.com/posts/hustlestats-firebase-migration-days-two-through-seven/</link><pubDate>Tue, 11 Nov 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/hustlestats-firebase-migration-days-two-through-seven/</guid><description>&lt;p&gt;Six days. Four commits. The entire HustleStats backend moved from PostgreSQL + NextAuth to Firebase.&lt;/p&gt;
&lt;h2 id="day-2-firestore-schema"&gt;Day 2: Firestore Schema&lt;/h2&gt;
&lt;p&gt;The Firestore subcollection hierarchy follows the access pattern:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;users/{uid}
 └── players/{pid}
 └── games/{gid}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Every query starts with a user. Players belong to a user. Games belong to a player. The hierarchy means security rules can enforce ownership at every level without extra lookups. A read to &lt;code&gt;users/abc/players/xyz/games/123&lt;/code&gt; already proves the caller owns the path.&lt;/p&gt;</description></item><item><title>HustleStats Firebase Migration: 5-Agent A2A Architecture on Day One</title><link>https://startaitools.com/posts/hustlestats-firebase-migration-day-one-a2a-agents/</link><pubDate>Mon, 10 Nov 2025 10:00:00 -0600</pubDate><guid>https://startaitools.com/posts/hustlestats-firebase-migration-day-one-a2a-agents/</guid><description>&lt;p&gt;Four commits to kick off the HustleStats Firebase migration. The previous stack &amp;ndash; Next.js on Cloud Run with Prisma and PostgreSQL &amp;ndash; worked but cost $72/month for a youth sports app with minimal traffic. Firebase brings that down to an estimated $20/month. The tradeoff is a complete backend rewrite.&lt;/p&gt;
&lt;h2 id="the-5-agent-a2a-architecture"&gt;The 5-Agent A2A Architecture&lt;/h2&gt;
&lt;p&gt;HustleStats is a youth soccer statistics tracker. Parents log games, coaches review performance, kids see their highlights. The new backend uses Google&amp;rsquo;s Agent-to-Agent (A2A) protocol with five agents:&lt;/p&gt;</description></item><item><title>Deployment Secrets, Missing Columns, and Sitemap Hygiene</title><link>https://startaitools.com/posts/hustlestats-defensive-schema-email-config-sitemap-cleanup/</link><pubDate>Wed, 22 Oct 2025 10:00:00 -0500</pubDate><guid>https://startaitools.com/posts/hustlestats-defensive-schema-email-config-sitemap-cleanup/</guid><description>&lt;p&gt;Three commits across two repos today. No theme, no arc &amp;ndash; just the kind of maintenance work that keeps production systems from embarrassing you.&lt;/p&gt;
&lt;h2 id="hustlestats-email-configuration"&gt;HustleStats: Email Configuration&lt;/h2&gt;
&lt;p&gt;Password reset was broken in production. Users clicking &amp;ldquo;Forgot Password&amp;rdquo; got nothing &amp;ndash; no email, no error message on the frontend, just silence. The Resend API integration was wired up correctly in the application code, the email templates existed, and everything worked in local development. The problem was upstream in the deployment pipeline.&lt;/p&gt;</description></item></channel></rss>