{
  "id": 8459830,
  "title": "Building FoxyInvoice — Chapter 0: We built an invoicing SaaS, and you can too",
  "url": "https://urgent.news/2026/09/19/building-foxyinvoice-chapter-0-we-built-an-invoicing-saas-and-you-can",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-19T12:21:33.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/seolith/building-foxyinvoice-chapter-0-we-built-an-invoicing-saas-and-you-can-too-4pd9"
  },
  "original_language": "en",
  "account": "This series documents the creation of FoxyInvoice, a real multi-tenant invoicing SaaS that operates live at foxyinvoice.com. The app sends real invoices, processes payments via Stripe, calculates US sales tax, and serves real users. Its enterprise counterpart, invoices.seolith.com, handles the financial books of an actual business.\n\nThe guide covers the end-to-end stack and reasoning behind each component. Angular powers the application, .NET handles the API, Postgres stores the data, a worker processes tasks asynchronously, and Docker ensures reproducibility. All of these pieces are chosen for their reliability in production environments.\n\nThe series emphasizes multi-tenant data security, ensuring that thousands of businesses can share a single database without any invoice data mixing, all while maintaining security through query layer restrictions and validated through testing. Deployment is automated, with a push to the main branch triggering a live deployment within eight minutes, complete with health checks, secret scanning, and automatic rollback mechanisms. There is no staging server or dedicated DevOps team; the entire process is managed by a single individual.\n\nThe economic model is transparent, detailing the monthly cost breakdown, Stripe fees, the low cost of a free-tier user, and the break-even point for the business. The operating rhythm is also outlined, highlighting a 20-minute daily routine that involves identifying user issues, gathering feedback, turning bug reports into fixes, deploying updates, and communicating with users.\n\nModern web reach strategies are explored, including how AI crawlers (such as GPTBot, ClaudeBot, and PerplexityBot) cannot see client-side rendered pages, yet the machine-friendly design of the app becomes a growth strategy rather than a hindrance.\n\nThe target audience includes anyone with basic coding skills who wants to ship a product. The series teaches all necessary terms as they appear, always linking them to specific incidents within the app. Prior knowledge is encouraged to be skipped; the underlying rationale behind each concept is usually still valuable due to real-world incident-driven insights.\n\nFoxyInvoice does not require a team, investors, a staging environment, or a budget beyond a minimal VPS and a domain. The series operates under three core principles: every claim should be verifiable, numbers and behaviors must come from the production system and its git history, and mistakes are included to provide realistic learning opportunities. The series avoids glorifying massive user growth and instead focuses on the technical workings and cost implications of building a functioning SaaS, a perspective often overlooked.",
  "summary": "This series is written in the open, from a real production system. Chapter 1 covers every prerequisite term — Git, UI/UX, databases, HTTP, Docker, DNS — each tied to a real incident. [All chapters and diagrams live in the public repo.] This is the story of FoxyInvoice — a real, live, multi-tenant invoicing SaaS — and a complete, step-by-step guide to building, hosting, securing, operating, and…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}