<?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: jy H uang</title>
    <description>The latest articles on DEV Community by jy H uang (@jy_huang).</description>
    <link>https://dev.to/jy_huang</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%2F4145426%2F78db515f-0aad-4607-967f-0fdfa670487e.png</url>
      <title>DEV Community: jy H uang</title>
      <link>https://dev.to/jy_huang</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jy_huang"/>
    <language>en</language>
    <item>
      <title>Building My First Global SaaS Tool from Scratch</title>
      <dc:creator>jy H uang</dc:creator>
      <pubDate>Sun, 27 Sep 2026 11:41:50 +0000</pubDate>
      <link>https://dev.to/jy_huang/building-my-first-global-saas-tool-from-scratch-2lef</link>
      <guid>https://dev.to/jy_huang/building-my-first-global-saas-tool-from-scratch-2lef</guid>
      <description>&lt;p&gt;After some encouragement from my colleagues, I finally decided to build my own SaaS tool for the global market.&lt;/p&gt;

&lt;p&gt;On September 8, I got a Mastercard that supports international payments. Right after that, I bought a domain, initialized the project, and started building.&lt;/p&gt;

&lt;p&gt;The first version went live on day one.&lt;/p&gt;

&lt;p&gt;As soon as it was deployed, I submitted the site to &lt;code&gt;Google Search Console (GSC)&lt;/code&gt; and &lt;code&gt;Bing Webmaster Tools&lt;/code&gt;, hoping to get it crawled and indexed as early as possible.&lt;/p&gt;

&lt;p&gt;This post is a record of that process: choosing a domain, setting up the stack, deploying the product, working with AI coding tools, and figuring out a development workflow that works for a solo developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing a Domain
&lt;/h2&gt;

&lt;p&gt;I wanted to build a music-related utility site, so the first step was finding a suitable domain.&lt;/p&gt;

&lt;p&gt;After comparing registrars, I found that the same domain was cheaper on Spaceship than on Namecheap, so I went with Spaceship.&lt;/p&gt;

&lt;p&gt;I had read quite a few discussions about domain selection before starting. My main takeaways were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If your budget allows, &lt;code&gt;.com&lt;/code&gt; is usually the safest choice. &lt;code&gt;.ai&lt;/code&gt; and &lt;code&gt;.app&lt;/code&gt; are also worth considering.&lt;/li&gt;
&lt;li&gt;Keep the domain short and easy to remember. Ideally, include a keyword related to the product.&lt;/li&gt;
&lt;li&gt;Avoid hyphens, obscure English words, and random letter combinations whenever possible.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One reason &lt;code&gt;.ai&lt;/code&gt; and &lt;code&gt;.app&lt;/code&gt; can work well is search behavior.&lt;/p&gt;

&lt;p&gt;People often search for phrases such as &lt;code&gt;xxx app&lt;/code&gt; or &lt;code&gt;xxx ai&lt;/code&gt;. If your domain naturally matches that intent, it can make the product easier to understand and remember.&lt;/p&gt;

&lt;p&gt;At this stage, though, I did not want to spend too much money on a domain.&lt;/p&gt;

&lt;p&gt;So I ended up buying:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;musictool.tools&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It costs roughly €6 per year.&lt;/p&gt;

&lt;p&gt;Good enough for an early-stage experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up the Project
&lt;/h2&gt;

&lt;p&gt;For an SEO-driven product targeting international users, I prefer a stack that supports &lt;code&gt;Server-Side Rendering (SSR)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The main reason is simple: search engines can receive relatively complete HTML directly, which reduces the amount of work required for crawling and indexing.&lt;/p&gt;

&lt;p&gt;Because of that, I did not want to build the site as a purely client-rendered SPA.&lt;/p&gt;

&lt;p&gt;This is also one of the reasons frameworks such as Next.js have become so popular among SEO-focused products.&lt;/p&gt;

&lt;p&gt;That said, I personally find the Next.js development experience a bit heavier than I would like, so I chose &lt;code&gt;TanStack Start (RC)&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;For project initialization, I used an open-source stack generator I had used before:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://better-t-stack.dev/" rel="noopener noreferrer"&gt;https://better-t-stack.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the initial scaffold was ready, I started adapting it to my own requirements with the help of AI.&lt;/p&gt;

&lt;p&gt;Here is the stack I ended up using.&lt;/p&gt;

&lt;h3&gt;
  
  
  Engineering and Tooling
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monorepo&lt;/td&gt;
&lt;td&gt;pnpm workspaces + Turborepo&lt;/td&gt;
&lt;td&gt;Multi-package management and parallel builds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;TypeScript&lt;/td&gt;
&lt;td&gt;End-to-end type safety&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code Quality&lt;/td&gt;
&lt;td&gt;Oxlint + Oxfmt&lt;/td&gt;
&lt;td&gt;Linting and formatting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Environment Variables&lt;/td&gt;
&lt;td&gt;@t3-oss/env-core + Zod&lt;/td&gt;
&lt;td&gt;Server and client env validation (&lt;code&gt;packages/env&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Frontend and Full-Stack Framework
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Full-Stack Framework&lt;/td&gt;
&lt;td&gt;TanStack Start&lt;/td&gt;
&lt;td&gt;SSR, file-based routing, Server Functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Routing&lt;/td&gt;
&lt;td&gt;TanStack Router&lt;/td&gt;
&lt;td&gt;Type-safe routing and SSR integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build Tool&lt;/td&gt;
&lt;td&gt;Vite 8&lt;/td&gt;
&lt;td&gt;Development and production builds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSR Runtime&lt;/td&gt;
&lt;td&gt;Nitro&lt;/td&gt;
&lt;td&gt;Server-side rendering and Vercel deployment support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI Library&lt;/td&gt;
&lt;td&gt;React&lt;/td&gt;
&lt;td&gt;Component-based UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS v4&lt;/td&gt;
&lt;td&gt;Utility-first CSS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Component Library&lt;/td&gt;
&lt;td&gt;shadcn/ui (&lt;code&gt;packages/ui&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Shared UI primitives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Icons&lt;/td&gt;
&lt;td&gt;lucide-react&lt;/td&gt;
&lt;td&gt;Consistent icon system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Theme&lt;/td&gt;
&lt;td&gt;next-themes&lt;/td&gt;
&lt;td&gt;Dark mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;td&gt;Page and component animations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notifications&lt;/td&gt;
&lt;td&gt;Sonner&lt;/td&gt;
&lt;td&gt;Toast notifications&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Data and State Management
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Server State&lt;/td&gt;
&lt;td&gt;TanStack Query&lt;/td&gt;
&lt;td&gt;Data fetching, caching, and SSR integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client State&lt;/td&gt;
&lt;td&gt;Jotai&lt;/td&gt;
&lt;td&gt;Shared UI and session state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Forms&lt;/td&gt;
&lt;td&gt;TanStack Form&lt;/td&gt;
&lt;td&gt;Form state and validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Layer&lt;/td&gt;
&lt;td&gt;oRPC&lt;/td&gt;
&lt;td&gt;End-to-end type-safe RPC with OpenAPI integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ORM&lt;/td&gt;
&lt;td&gt;Drizzle&lt;/td&gt;
&lt;td&gt;TypeScript-first database access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;td&gt;Primary data storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local Database&lt;/td&gt;
&lt;td&gt;Docker Compose&lt;/td&gt;
&lt;td&gt;Local PostgreSQL development environment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Authentication and Internationalization
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;Better Auth&lt;/td&gt;
&lt;td&gt;Sessions, social login, and TanStack Start integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Login&lt;/td&gt;
&lt;td&gt;Google OAuth&lt;/td&gt;
&lt;td&gt;Third-party authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internationalization&lt;/td&gt;
&lt;td&gt;Paraglide JS + inlang&lt;/td&gt;
&lt;td&gt;Compile-time i18n and locale-based URLs for SEO&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  AI
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI SDK&lt;/td&gt;
&lt;td&gt;Vercel AI SDK&lt;/td&gt;
&lt;td&gt;Streaming responses and Server Actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model Provider&lt;/td&gt;
&lt;td&gt;@ai-sdk/google&lt;/td&gt;
&lt;td&gt;Google model integration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Infrastructure and Third-Party Services
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vercel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hosting, CI/CD, and Serverless Functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Domain DNS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google OAuth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Waffo Pancake&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Subscription payments and Webhooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Resend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Transactional email and user feedback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare R2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;S3-compatible object storage with presigned uploads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Analytics 4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Production traffic analytics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Microsoft Clarity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User behavior analytics and session recordings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sentry&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frontend and backend error monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most of these services provide free tiers, which is more than enough for an early-stage solo project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Payments
&lt;/h3&gt;

&lt;p&gt;For payments, I chose &lt;code&gt;Waffo&lt;/code&gt;, mainly because it is relatively friendly to independent developers.&lt;/p&gt;

&lt;p&gt;I discovered it somewhat randomly while browsing online.&lt;/p&gt;

&lt;p&gt;Stripe usually requires more preparation depending on where you are based, including considerations around business entities and banking.&lt;/p&gt;

&lt;p&gt;I have not opened a Hong Kong bank account yet, so Waffo was the more convenient option for me at this stage.&lt;/p&gt;

&lt;p&gt;The integration itself was straightforward.&lt;/p&gt;

&lt;p&gt;I followed the official documentation, gave the relevant docs, prompts, and Skills to the AI coding agent, and let it handle most of the implementation.&lt;/p&gt;

&lt;p&gt;If your setup allows it, Stripe is still worth evaluating based on your own business requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying the Product
&lt;/h2&gt;

&lt;p&gt;Launching a small SaaS product today is much easier than it used to be.&lt;/p&gt;

&lt;p&gt;Modern Serverless infrastructure is mature enough that lightweight SaaS tools often do not need a manually maintained server running 24/7.&lt;/p&gt;

&lt;p&gt;Platforms such as &lt;code&gt;Vercel&lt;/code&gt; and &lt;code&gt;Cloudflare&lt;/code&gt; can handle most of the infrastructure for you while scaling automatically when necessary.&lt;/p&gt;

&lt;p&gt;For this project, I connected the Git repository directly to Vercel.&lt;/p&gt;

&lt;p&gt;Every push automatically triggers a new build and deployment.&lt;/p&gt;

&lt;p&gt;There is almost nothing to manage manually.&lt;/p&gt;

&lt;p&gt;At the current stage, deployment costs are also close to zero.&lt;/p&gt;

&lt;p&gt;For object storage, I use &lt;code&gt;Cloudflare R2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Its free tier is generous enough for the early stage of the project, so storage has not added any meaningful cost yet.&lt;/p&gt;

&lt;p&gt;The main expenses currently come from third-party APIs used by some features. Those require a small amount of prepaid credit, but the overall cost is still manageable.&lt;/p&gt;

&lt;p&gt;For solo developers, the infrastructure barrier to launching a project has become extremely low.&lt;/p&gt;

&lt;p&gt;You can build the first version almost entirely on free tiers.&lt;/p&gt;

&lt;p&gt;Once the product has real users and revenue, you can upgrade infrastructure based on actual usage instead of guessing in advance.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Development Process
&lt;/h2&gt;

&lt;p&gt;The initial infrastructure setup took roughly one day.&lt;/p&gt;

&lt;p&gt;After that, I moved on to actual feature development.&lt;/p&gt;

&lt;p&gt;If you are unfamiliar with the target market, I think it makes sense to start with an AI-assisted research phase.&lt;/p&gt;

&lt;p&gt;You can use AI Research tools to study competitors, identify common features, understand user expectations, and map out the basic product landscape.&lt;/p&gt;

&lt;p&gt;In my case, I already knew this domain fairly well and had a clear idea of what I wanted to build.&lt;/p&gt;

&lt;p&gt;So I went straight into &lt;code&gt;AI Coding&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;My development process has two main stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Design the feature.&lt;/li&gt;
&lt;li&gt;Break down the requirements and implement them.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Designing with AI
&lt;/h3&gt;

&lt;p&gt;For design work, I mainly use &lt;code&gt;Pen&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After connecting it to DeepSeek and enabling x6, the overall design workflow became quite efficient.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6jc6eqk37zyywm4fl2s.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6jc6eqk37zyywm4fl2s.png" alt="pen design" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My AI Coding Workflow
&lt;/h3&gt;

&lt;p&gt;For implementation, I mainly use Matt's workflow.&lt;/p&gt;

&lt;p&gt;The process looks roughly like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/grill me&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Discuss the requirements with AI in detail and clarify the implementation approach.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/to-spec&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Convert the discussion into a complete specification and high-level implementation plan.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/to-tickets&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Break the plan into smaller tasks that can be implemented independently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/implement-spec&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Implement the feature step by step based on those tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/code-review&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Ask AI to review the implementation, then do a final manual review myself.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I have found this workflow surprisingly comfortable.&lt;/p&gt;

&lt;p&gt;It reduces the amount of improvisation during implementation and gives the coding agent much clearer boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Letting &lt;code&gt;AGENTS.md&lt;/code&gt; Accumulate Project Knowledge
&lt;/h2&gt;

&lt;p&gt;One practice that has worked particularly well for me is asking AI to record mistakes, corrections, and project-specific rules in &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Whenever something goes wrong, I try to convert that mistake into a reusable rule.&lt;/p&gt;

&lt;p&gt;That gives future coding sessions access to the context accumulated from previous work.&lt;/p&gt;

&lt;p&gt;Over time, the project starts developing its own operating manual.&lt;/p&gt;

&lt;p&gt;This helps reduce repeated mistakes and makes future implementation more consistent.&lt;/p&gt;

&lt;p&gt;The process becomes a kind of feedback loop:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Build → Find problems → Update rules → Build again&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As the project's &lt;code&gt;Harness&lt;/code&gt; becomes more complete, AI-assisted development also becomes much smoother.&lt;/p&gt;

&lt;p&gt;For features that resemble something already implemented, a clear requirement and good task decomposition are often enough for the AI agent to handle most of the work.&lt;/p&gt;

&lt;p&gt;I still review the result at the end.&lt;/p&gt;

&lt;p&gt;Fully autonomous coding without verification is not something I am comfortable with yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Token Problem
&lt;/h2&gt;

&lt;p&gt;The biggest frustration during development has actually been Token limits.&lt;/p&gt;

&lt;p&gt;I started with Cursor's $20 monthly plan.&lt;/p&gt;

&lt;p&gt;I burned through the quota in roughly four days, mostly while using Grok.&lt;/p&gt;

&lt;p&gt;After that, I switched to the $20 Codex plan.&lt;/p&gt;

&lt;p&gt;The overall experience was decent, but I frequently had to wait around five hours for the usage quota to reset.&lt;/p&gt;

&lt;p&gt;That interrupted the development flow more often than I expected.&lt;/p&gt;

&lt;p&gt;I also used Tibo after its quota reset, but that still was not enough.&lt;/p&gt;

&lt;p&gt;Later, Z Code gave users a huge Token allowance, on the order of hundreds of millions of Tokens.&lt;/p&gt;

&lt;p&gt;There has been some controversy around it recently, but by then I had already used it extensively.&lt;/p&gt;

&lt;p&gt;Eventually, I adjusted my workflow.&lt;/p&gt;

&lt;p&gt;The current version looks like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use GPT 5.6 or GPT 6 for requirement analysis, architecture, and task decomposition. Then hand clearly defined implementation tasks to lower-cost models such as GLM.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At first, I was skeptical about this setup.&lt;/p&gt;

&lt;p&gt;I assumed that anything even moderately complex should be implemented by the strongest available model.&lt;/p&gt;

&lt;p&gt;After trying it in practice, my view changed.&lt;/p&gt;

&lt;p&gt;If the architecture has already been thought through and the tasks are broken into sufficiently small units, models such as GLM can handle a surprisingly large amount of real implementation work.&lt;/p&gt;

&lt;p&gt;They perform especially well when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The task boundaries are clear.&lt;/li&gt;
&lt;li&gt;The expected behavior is explicit.&lt;/li&gt;
&lt;li&gt;The implementation path is already defined.&lt;/li&gt;
&lt;li&gt;The relevant project context is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this type of task, the output is often good enough for my needs.&lt;/p&gt;

&lt;p&gt;After eventually exhausting my Z Code quota as well, I subscribed to Command Code's $10 plan and started using &lt;code&gt;DeepSeek 4.1 Flash&lt;/code&gt; more often.&lt;/p&gt;

&lt;p&gt;Among Chinese models, the ones I currently find most practical for coding are GLM and DeepSeek.&lt;/p&gt;

&lt;p&gt;They occasionally enter what I jokingly call "thunderous deep-thinking mode" and spend far too long reasoning about a very simple problem.&lt;/p&gt;

&lt;p&gt;Still, their coding ability is already quite solid.&lt;/p&gt;

&lt;p&gt;One small lesson from my own usage:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with the reasoning level set to "High." Unless the task is genuinely difficult, there is usually little reason to leave it on "Extra High" all the time.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Expensive Models Do Not Need to Do Everything
&lt;/h2&gt;

&lt;p&gt;One of the biggest changes in my AI coding workflow has been realizing that the most expensive model does not need to handle every task.&lt;/p&gt;

&lt;p&gt;A stronger model can focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirement analysis&lt;/li&gt;
&lt;li&gt;Architecture&lt;/li&gt;
&lt;li&gt;Technical design&lt;/li&gt;
&lt;li&gt;Edge cases&lt;/li&gt;
&lt;li&gt;Task decomposition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then a lower-cost model can handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRUD implementation&lt;/li&gt;
&lt;li&gt;UI adjustments&lt;/li&gt;
&lt;li&gt;API wiring&lt;/li&gt;
&lt;li&gt;Repetitive refactoring&lt;/li&gt;
&lt;li&gt;Well-defined feature work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a fairly practical division of labor.&lt;/p&gt;

&lt;p&gt;You get the reasoning quality of stronger models where it matters most, while keeping Token costs under control during implementation.&lt;/p&gt;

&lt;p&gt;For a solo developer, that balance can make a significant difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning SEO Along the Way
&lt;/h2&gt;

&lt;p&gt;Recently, I have also been spending more time learning SEO.&lt;/p&gt;

&lt;p&gt;Before building this project, my understanding of SEO was fairly shallow.&lt;/p&gt;

&lt;p&gt;I assumed that semantic HTML, good page titles, and a clean page structure covered most of the important work.&lt;/p&gt;

&lt;p&gt;Once I actually started building a global tool site, I realized there is much more to it.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keyword research with tools such as &lt;code&gt;SEMrush&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Search volume analysis&lt;/li&gt;
&lt;li&gt;Keyword difficulty analysis&lt;/li&gt;
&lt;li&gt;Site architecture planning&lt;/li&gt;
&lt;li&gt;Core keyword optimization&lt;/li&gt;
&lt;li&gt;Long-tail keyword targeting&lt;/li&gt;
&lt;li&gt;Content planning&lt;/li&gt;
&lt;li&gt;Continuous page optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, all of this has the same goal:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Increase the site's visibility in search engines.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When someone searches for a problem related to your product, you want your site to appear as high as possible in the results.&lt;/p&gt;

&lt;p&gt;That gives you a chance to turn search traffic into:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Search → Click → Visit → Sign up → Use → Pay&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I am still very early in this process, so I am learning as I go.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;That is where the project stands for now.&lt;/p&gt;

&lt;p&gt;My main goal with this post was to document what it looks like to start building a global SaaS tool from scratch as a solo developer.&lt;/p&gt;

&lt;p&gt;The infrastructure is cheap.&lt;/p&gt;

&lt;p&gt;Deployment is easy.&lt;/p&gt;

&lt;p&gt;AI can already take over a meaningful amount of implementation work.&lt;/p&gt;

&lt;p&gt;The harder part is gradually building a workflow that makes all of those tools work together reliably.&lt;/p&gt;

&lt;p&gt;For me, that currently means:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Research → Design → Spec → Tickets → Implement → Review → Update AGENTS.md → Repeat&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I am still learning, especially when it comes to SEO, distribution, and turning the project into something that consistently attracts users.&lt;/p&gt;

&lt;p&gt;If I discover anything useful along the way, I will keep sharing what I learn.&lt;/p&gt;

&lt;p&gt;Try it&lt;br&gt;
Free account with starter credits, no card required: &lt;a href="https://musictool.tools" rel="noopener noreferrer"&gt;musictool.tools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Welcome to give me feedback on any suggestions for improving the website.👏&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>saas</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
