<?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>Forem: ZoyaLatif</title>
    <description>The latest articles on Forem by ZoyaLatif (@zoyalatif).</description>
    <link>https://forem.com/zoyalatif</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%2F3910244%2F6e78cfb3-e4f4-449b-a573-caf487449ed1.png</url>
      <title>Forem: ZoyaLatif</title>
      <link>https://forem.com/zoyalatif</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zoyalatif"/>
    <language>en</language>
    <item>
      <title>How I Launched a SaaS in Weeks Using Django and Railway</title>
      <dc:creator>ZoyaLatif</dc:creator>
      <pubDate>Tue, 05 May 2026 13:53:51 +0000</pubDate>
      <link>https://forem.com/zoyalatif/how-i-launched-a-saas-in-weeks-using-django-and-railway-21bf</link>
      <guid>https://forem.com/zoyalatif/how-i-launched-a-saas-in-weeks-using-django-and-railway-21bf</guid>
      <description>&lt;p&gt;I'm not a serial founder. I'm a developer who spotted a real problem and decided to build a solution. Here's exactly how I went from idea to live product using Django and Railway — and what I'd do differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Small businesses — personal trainers, accountants, freelancers, consultants — lose bookings every day because they're not available to respond instantly. I wanted to give them two things: a self-booking calendar and an AI assistant that answers customer questions 24/7.&lt;/p&gt;

&lt;p&gt;That became SmartDeskPro.&lt;/p&gt;

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

&lt;p&gt;I kept it boring on purpose. Boring technology ships faster.&lt;/p&gt;

&lt;p&gt;• Django — batteries included, rapid development, solid ORM&lt;br&gt;
• PostgreSQL — hosted on Railway, zero config&lt;br&gt;
• Tailwind CSS — utility-first, no custom CSS files&lt;br&gt;
• Vanilla JS — no framework overhead for a simple UI&lt;br&gt;
• Claude (Anthropic) — powers the AI chat assistant&lt;br&gt;
• Stripe — handles both SaaS subscriptions and one-time booking payments&lt;br&gt;
• Resend — transactional emails and PDF receipts&lt;br&gt;
• Railway — deployment, auto-deploys from GitHub on every push&lt;br&gt;
• WhiteNoise — static file serving without an S3 bucket&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built first
&lt;/h2&gt;

&lt;p&gt;The booking flow. Three steps: pick a date, pick a time, enter your details. Get a confirmation email with a PDF receipt and a .ics calendar file.&lt;/p&gt;

&lt;p&gt;I resisted the urge to build everything at once. No AI, no payments, no dashboard in v1. Just the core flow working end to end.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hardest technical parts
&lt;/h2&gt;

&lt;p&gt;Stripe webhooks. I have two payment types — monthly SaaS subscriptions and one-time booking fees. Both fire checkout.session.completed. The fix was checking session.get("mode") — "subscription" vs "payment" — to route to the right handler. Simple in hindsight, confusing in the moment.&lt;/p&gt;

&lt;p&gt;Multi-tenant architecture. Every business gets their own public booking page at /book/{slug}/. All bookings, conversations, and FAQ entries belong to a BusinessProfile. Getting the data isolation right from the start saved me a lot of pain later.&lt;/p&gt;

&lt;p&gt;The AI assistant. Making it feel relevant rather than generic required feeding it the business's own FAQ entries as context on every request. The system prompt includes the business name, working hours, and contact details. It's not magic — it's good context engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment
&lt;/h2&gt;

&lt;p&gt;Railway is genuinely excellent for solo founders. Connect your GitHub repo, add your environment variables, push. It deploys automatically. PostgreSQL is one click. The Procfile runs migrations and collects statics on every deploy.&lt;/p&gt;

&lt;p&gt;The only gotcha: WhiteNoise with CompressedManifestStaticFilesStorage hashes filenames on deploy. You must use Django's template tag — hardcoded paths break silently.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd do differently
&lt;/h2&gt;

&lt;p&gt;Start distribution earlier. I spent weeks polishing features before anyone had seen the product. The first version I showed people had bugs they never noticed because they were too busy telling me what features they actually wanted.&lt;/p&gt;

&lt;p&gt;Talk to users before you build, not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is now
&lt;/h2&gt;

&lt;p&gt;SmartDeskPro is live at &lt;a href="https://www.smartdeskpro.net/" rel="noopener noreferrer"&gt;smartdeskpro.net&lt;/a&gt;. 14-day free trial, no card required.&lt;/p&gt;

&lt;p&gt;If you're a Django developer thinking about building a SaaS, just start. The technical parts are the easy bits. Everything else is the work.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>saas</category>
    </item>
    <item>
      <title>How I Built an AI Booking Assistant for Small Businesses?</title>
      <dc:creator>ZoyaLatif</dc:creator>
      <pubDate>Sun, 03 May 2026 12:17:58 +0000</pubDate>
      <link>https://forem.com/zoyalatif/how-i-built-an-ai-booking-assistant-for-small-businesses-b67</link>
      <guid>https://forem.com/zoyalatif/how-i-built-an-ai-booking-assistant-for-small-businesses-b67</guid>
      <description>&lt;p&gt;A few months ago I was thinking about a problem that almost every freelancer and small business owner faces: customers message at midnight asking "are you free Thursday?" and by morning, they've already booked someone else.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://www.smartdeskpro.net" rel="noopener noreferrer"&gt;SmartDeskPro&lt;/a&gt; — a tool that gives small businesses a professional booking page and a 24/7 AI chat assistant. No staff required.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I was solving
&lt;/h2&gt;

&lt;p&gt;Small businesses lose bookings every day because they're not available to respond instantly. A personal trainer, an accountant, a consultant — they're busy working, not sitting by their inbox. Customers don't wait.&lt;/p&gt;

&lt;p&gt;The solution isn't hiring someone. It's automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;SmartDeskPro has two core features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Online booking calendar&lt;/strong&gt; — customers self-book in 3 steps, get an automatic email confirmation with a PDF receipt and a calendar invite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI chat assistant&lt;/strong&gt; — answers customer questions 24/7, trained on the business's own FAQ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built it with Django, PostgreSQL, and Tailwind CSS. The AI runs on OpenAI. Payments go through Stripe. The whole thing is hosted on Railway.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hardest parts
&lt;/h2&gt;

&lt;p&gt;The booking flow was straightforward. The tricky bit was making the AI feel relevant — not just a generic chatbot, but one that actually knows about the specific business it's embedded on.&lt;/p&gt;

&lt;p&gt;The other challenge was Stripe. Handling both one-time booking payments and monthly SaaS subscriptions in the same webhook required careful logic to avoid double-processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;Ship fast, get feedback. The first version had no payment feature, no PDF receipts, no calendar download. Users asked for all three. I added them one by one.&lt;/p&gt;

&lt;p&gt;The other lesson: distribution is harder than building. The product took weeks to build. Getting people to find it is an ongoing effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is now
&lt;/h2&gt;

&lt;p&gt;SmartDeskPro is live at &lt;a href="https://www.smartdeskpro.net" rel="noopener noreferrer"&gt;smartdeskpro.net&lt;/a&gt; with a 14-day free trial. It's built for freelancers, personal trainers, accountants, consultants — anyone who takes appointments and wants to stop losing customers to slow responses.&lt;/p&gt;

&lt;p&gt;If you're a small business owner tired of managing bookings manually, give it a try. No card required.&lt;/p&gt;

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