<?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: Soren Albrecht</title>
    <description>The latest articles on DEV Community by Soren Albrecht (@soren_albrecht).</description>
    <link>https://dev.to/soren_albrecht</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%2F3968495%2F7db612dc-62b6-4d9e-b31b-40edc5855e13.png</url>
      <title>DEV Community: Soren Albrecht</title>
      <link>https://dev.to/soren_albrecht</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/soren_albrecht"/>
    <language>en</language>
    <item>
      <title>The Golden Path for Django + React: Launching a SaaS without wiring the infra yourself</title>
      <dc:creator>Soren Albrecht</dc:creator>
      <pubDate>Tue, 09 Jun 2026 15:35:07 +0000</pubDate>
      <link>https://dev.to/soren_albrecht/the-golden-path-for-django-react-launching-a-saas-without-wiring-the-infra-yourself-4464</link>
      <guid>https://dev.to/soren_albrecht/the-golden-path-for-django-react-launching-a-saas-without-wiring-the-infra-yourself-4464</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Disclosure: I have a business relationship with Otoshek. I'm a user of the platform and this walkthrough reflects my own experience using it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Starting a SaaS is both easier and harder than ever. The tools are better, the cloud is better, AI coding agents are better. But the list of things you have to assemble before building the actual product has exploded: GitHub repo, CI/CD, cloud infrastructure, environment variables, secrets, database, authentication, billing, email, deployment, monitoring, and the security patterns around all of it.&lt;/p&gt;

&lt;p&gt;What I want instead is a Golden Path: a recommended, automated, safe route from idea to production. One that ends in my own GitHub account and my own cloud, with the standard production layer already in place. The ideal start is opening Claude Code on a project that's already set up for me locally, ready to build.&lt;/p&gt;

&lt;p&gt;That is how I think about &lt;a href="http://otoshek.com/" rel="noopener noreferrer"&gt;Otoshek&lt;/a&gt;. It applies the platform-engineering idea behind tools like Backstage, Port, and Cortex, but instead of serving internal engineering teams inside a large company, it brings that same path to independent builders and small SaaS teams. In my case the stack is Django, React, PostgreSQL, Stripe, allauth with MFA, email, GitHub Actions, Azure or GCP, and local development ready to run in VS Code.&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.amazonaws.com%2Fuploads%2Farticles%2Ffkjwbh6wr00gjug1adxr.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Ffkjwbh6wr00gjug1adxr.jpg" alt="Diagram of the SaaS tech stack: React frontend, Django backend, PostgreSQL database, Stripe for billing, and GitHub Actions for CI/CD" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The video below is Otoshek's official platform walkthrough. It covers the full flow from stack selection all the way through to local setup. &lt;em&gt;(3:14)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/INzUXhn0d38"&gt;
  &lt;/iframe&gt;
&lt;br&gt;
&lt;em&gt;Walkthrough of deploying a SaaS with Otoshek. (3:14)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The process itself was simpler than I expected. You go through four phases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Phase 1&lt;/strong&gt; — pick your stack and build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 2&lt;/strong&gt; — provide credentials and connect GitHub&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 3&lt;/strong&gt; — deploy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 4&lt;/strong&gt; — run the local setup skill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three of those phases are almost entirely clicks. The only one that asks something of you is credentials, and that's just collecting API keys from five providers:&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.amazonaws.com%2Fuploads%2Farticles%2F4srf4c3ia892td9g9dd7.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2F4srf4c3ia892td9g9dd7.jpg" alt="Icons of the five required service providers: Cloud (Azure/GCP), Database (Supabase), Billing (Stripe), Auth (Google), and Email (Mailjet)" width="799" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the end I had a &lt;a href="https://otoshek-demo-prod.azurewebsites.net/" rel="noopener noreferrer"&gt;live URL&lt;/a&gt;, a GitHub repo with CI/CD wired in, and a local environment running the same app.&lt;/p&gt;
&lt;h2&gt;
  
  
  Phase 1 — Select your stack and build
&lt;/h2&gt;

&lt;p&gt;Start by &lt;a href="https://otoshek.com/account/signup" rel="noopener noreferrer"&gt;creating an account on Otoshek&lt;/a&gt;, then head to the &lt;a href="https://otoshek.com/deployment" rel="noopener noreferrer"&gt;deployment page&lt;/a&gt;. That's where you choose your stack, name your project, and build the app. For now, the real choices are where your app deploys (Azure or GCP) and which styling system your React frontend uses (Tailwind or Bootstrap). I recommend &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind&lt;/a&gt;. The backend is &lt;a href="https://www.djangoproject.com/" rel="noopener noreferrer"&gt;Django&lt;/a&gt;, a mature Python web framework with ORM, admin, auth, and migrations built in.&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.amazonaws.com%2Fuploads%2Farticles%2Fm5pk3caazchae1khan45.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.amazonaws.com%2Fuploads%2Farticles%2Fm5pk3caazchae1khan45.png" alt="Screenshot of the Otoshek deployment interface showing options for cloud provider and CSS framework selection" width="800" height="729"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both cloud options deploy on free tiers, so there's no cost at this stage regardless of which you pick.&lt;/p&gt;

&lt;p&gt;The project name becomes the root folder and the Python package name.&lt;/p&gt;

&lt;p&gt;Once you've made your selections, hit Build. The platform generates your app, and when the build finishes a &lt;strong&gt;Setup Infrastructure&lt;/strong&gt; button appears. Click it to move on to Phase 2.&lt;/p&gt;
&lt;h2&gt;
  
  
  Phase 2 — Credentials and GitHub
&lt;/h2&gt;

&lt;p&gt;Now we collect the credentials the platform needs to deploy the app into our cloud (Azure or GCP), connect the database the app needs (Supabase), set up the billing infrastructure (Stripe), wire up Google OAuth for social login, and the messaging system so the app can communicate (Mailjet).&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.amazonaws.com%2Fuploads%2Farticles%2Fa1iibuamxtraly4aogjy.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.amazonaws.com%2Fuploads%2Farticles%2Fa1iibuamxtraly4aogjy.png" alt="The credential collection dashboard showing status indicators for Cloud, Database, Stripe, Google Auth, and Mailjet integrations" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The platform really helps here with written tutorials and short videos. Rather than walking you through how to collect these credentials myself, I'll point you to the provider and the official short video for each one. There are six videos in total, but you'll only follow five. For the cloud provider, you follow the guide for whichever cloud you chose in Phase 1. I chose Azure.&lt;/p&gt;

&lt;p&gt;Before you start following a guide, make sure you're signed up with that provider.&lt;/p&gt;

&lt;p&gt;Start with the cloud. If you don't have an account with your chosen provider yet, create one first. Both are free to start and both require a payment method during signup, not because you'll be charged, but because the provider needs it on file in case you choose to upgrade later. Deployments through Otoshek stay within the free tier, so your card won't be touched.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://azure.microsoft.com/free/" rel="noopener noreferrer"&gt;Create a free Azure account&lt;/a&gt; — Microsoft includes $200 in credits for the first 30 days&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com" rel="noopener noreferrer"&gt;Create a free Google Cloud account&lt;/a&gt; — Google includes $300 in credits for new accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once your account is active, follow the guide that matches the cloud you chose in Phase 1.&lt;/p&gt;

&lt;p&gt;One handy detail: the platform gives you a downloadable template for all the credentials you'll collect, so you can fill it in as you go. Later, when you submit your credentials in this phase, you can paste the whole filled template into the platform in one shot. It parses, validates, and saves everything at once. It saves time. There are two versions of the template (Azure and GCP). You'll see the download link on every official guide page, but grab it once for the cloud you chose in Phase 1 and reuse it as you go.&lt;/p&gt;

&lt;p&gt;Here are the six videos. Total length is under 11 minutes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Azure
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://otoshek.com/docs/azure-service-principal-tutorial" rel="noopener noreferrer"&gt;Full guide on otoshek.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are three ways to get your Azure credentials: the Portal, Cloud Shell, or the CLI. Cloud Shell is the recommended path: four commands to copy and paste, and the last one prints your credentials directly to the screen. The video below shows you this method in under four minutes. &lt;em&gt;(3:15)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/hF91c1lhECc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  Supabase — database
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://otoshek.com/docs/supabase-postgres-tutorial" rel="noopener noreferrer"&gt;Full guide on otoshek.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll create a free Supabase project, set a database password, and collect the connection credentials. The video below walks you through the whole process. &lt;em&gt;(1:44)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/aZo80Jy1HFw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  Stripe — billing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://otoshek.com/docs/stripe-tutorial" rel="noopener noreferrer"&gt;Full guide on otoshek.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll collect your Stripe API keys from the dashboard, the credentials that wire up subscription billing and the customer portal to your app. The video below walks you through it in under a minute. &lt;em&gt;(0:43)&lt;/em&gt; &lt;em&gt;(Note: the credentials collected here are test mode keys. Switching to live mode when you're ready to take real payments is straightforward from the Stripe dashboard.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/aRRiR6oMmNY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  Google OAuth — social login
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://otoshek.com/docs/google-auth-tutorial" rel="noopener noreferrer"&gt;Full guide on otoshek.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll set up Google OAuth in the Google Cloud Console: creating a consent screen, generating a client ID and secret, and configuring the redirect URIs that allow your users to sign in with their Google account. The video below walks you through it. &lt;em&gt;(2:54)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/dCvCO87_iM0"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  Mailjet — transactional email
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://otoshek.com/docs/mailjet-tutorial" rel="noopener noreferrer"&gt;Full guide on otoshek.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll create a Mailjet account, generate your API keys, and choose your sender address, the email your app uses to send password resets, confirmations, and notifications. The video below walks you through it. &lt;em&gt;(1:26)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/P6bX69TJYdU"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Once all five sets of credentials are filled into the template, the next step is connecting our GitHub account.&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.amazonaws.com%2Fuploads%2Farticles%2F4fh75zul6sqbsvyv8u93.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.amazonaws.com%2Fuploads%2Farticles%2F4fh75zul6sqbsvyv8u93.png" alt="The GitHub integration screen showing the OAuth connection status and a field to name the new repository" width="748" height="850"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We connect via OAuth and name the repository where our app will be pushed. The platform validates the name before letting us move on.&lt;/p&gt;

&lt;p&gt;From there, we submit our credentials. Copy the completed template, drop it into the credentials textarea, and the platform parses, validates, and saves everything in one shot.&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.amazonaws.com%2Fuploads%2Farticles%2Fxamtp7ngdmk1gxqob5q0.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.amazonaws.com%2Fuploads%2Farticles%2Fxamtp7ngdmk1gxqob5q0.png" alt="A text area in the Otoshek platform where the completed credentials template is pasted for bulk validation and saving" width="799" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On security, the platform claims our credentials never touch its database; they go directly into &lt;a href="https://azure.microsoft.com/en-us/products/key-vault" rel="noopener noreferrer"&gt;Azure Key Vault&lt;/a&gt;, and we can rotate them at any time after setup. That matters because it means the platform never has standing access to the keys that run our cloud, our billing, and our email; if anything on their side were ever compromised, there's nothing there to steal.&lt;/p&gt;

&lt;p&gt;Once validation passes, there's a paywall. The part worth noting is that it only charges after it's confirmed it can deliver: no valid credentials, no charge. There's a launch promo running: code LAUNCH65 brings it to $69.65 instead of $199.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3 — Deploy
&lt;/h2&gt;

&lt;p&gt;Once the paywall clears, one button starts the deployment.&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.amazonaws.com%2Fuploads%2Farticles%2Ff9r2ibmegywd1ve5leaw.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.amazonaws.com%2Fuploads%2Farticles%2Ff9r2ibmegywd1ve5leaw.png" alt="The final deployment confirmation screen featuring a large button to start the infrastructure provisioning process" width="742" height="758"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The platform takes over from here. It provisions the cloud infrastructure, creates the GitHub repository, injects the CI/CD pipeline, pushes the app, and verifies that everything came up correctly. We watch it happen in real time.&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.amazonaws.com%2Fuploads%2Farticles%2F7bznrxil8sxvt20q71ow.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.amazonaws.com%2Fuploads%2Farticles%2F7bznrxil8sxvt20q71ow.png" alt="A real-time progress tracker showing the successful completion of infrastructure, repository creation, and CI/CD injection" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the last stage passes, the app is live. The deployed URL shows up on screen — that's our SaaS foundation running in the cloud. &lt;a href="https://otoshek-demo-prod.azurewebsites.net/" rel="noopener noreferrer"&gt;See it live&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 4 — Local setup
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://otoshek.com/docs/automated-local-setup" rel="noopener noreferrer"&gt;Full guide on otoshek.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've been using Claude Code to build, this phase will feel familiar. It's a skill. We install it once, run it in the folder where we want the project to live, and it handles the rest.&lt;/p&gt;

&lt;p&gt;The skill is built for Claude Code, but if you work with Codex, Gemini CLI, or another AI coding agent, point it at the &lt;a href="https://github.com/otoshek/otoshek-local-setup" rel="noopener noreferrer"&gt;skill repository&lt;/a&gt;. It reads the instructions and does the same work.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/otoshek" rel="noopener noreferrer"&gt;
        otoshek
      &lt;/a&gt; / &lt;a href="https://github.com/otoshek/otoshek-local-setup" rel="noopener noreferrer"&gt;
        otoshek-local-setup
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Claude Code skill to set up a local development environment for Otoshek-deployed SaaS projects
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;otoshek-local-setup&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A Claude Code skill that sets up a complete local development environment for your Otoshek-deployed SaaS project.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Assumes Homebrew, mkcert, and Claude Code are already installed. If not, see &lt;a href="https://github.com/otoshek/otoshek-local-setup#prerequisites" rel="noopener noreferrer"&gt;Prerequisites&lt;/a&gt; below.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Open Claude Code in the folder where you want your project cloned&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; &lt;span class="pl-k"&gt;~&lt;/span&gt;/Projects
claude&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;2. Add the Otoshek plugin marketplace&lt;/strong&gt;&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;/plugin marketplace add otoshek/otoshek-local-setup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;3. Install the skill&lt;/strong&gt;&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;/plugin install otoshek-local-setup@otoshek-otoshek-local-setup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;4. Relaunch Claude Code&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;claude&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;5. Run the setup&lt;/strong&gt;&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;/otoshek-local-setup git@github.com:YOUR_USERNAME/YOUR_REPO.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Claude will guide you through the rest.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;After Otoshek deploys your SaaS app, you'll receive a GitHub repository. This skill automates cloning and configuring everything you need to start building locally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifies system prerequisites are installed (see below) and stops with install commands if any are missing&lt;/li&gt;
&lt;li&gt;Installs and configures PostgreSQL and VS Code (if not already installed)&lt;/li&gt;
&lt;li&gt;Configures HTTPS SSL certificates for local development (if not already…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/otoshek/otoshek-local-setup" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Two prerequisites before we start: &lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt; and &lt;a href="https://mkcert.org/" rel="noopener noreferrer"&gt;mkcert&lt;/a&gt; need to be installed on our machine. &lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt; is the package manager the skill uses to install everything else. &lt;a href="https://mkcert.org/" rel="noopener noreferrer"&gt;mkcert&lt;/a&gt; registers a local certificate authority so our browser trusts the development HTTPS certificates. Both require a password to set up — that's why the skill can't do them for us.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  macOS / Linux Setup
  &lt;p&gt;&lt;strong&gt;1. Check if Homebrew is already installed&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; brew &amp;amp;&amp;gt;/dev/null &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Homebrew already installed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Install Homebrew&lt;/strong&gt; &lt;em&gt;(skip if already installed)&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Install mkcert&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;mkcert &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; mkcert &lt;span class="nt"&gt;-install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;br&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Windows Setup
  &lt;p&gt;Install the following tools manually (no Homebrew on Windows):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;Git&lt;/a&gt; — accept default settings&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; — LTS version&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.python.org/downloads/windows/" rel="noopener noreferrer"&gt;Python 3.13&lt;/a&gt; — enable "Add Python to PATH"&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/FiloSottile/mkcert/releases" rel="noopener noreferrer"&gt;mkcert&lt;/a&gt; — download &lt;code&gt;mkcert-*.exe&lt;/code&gt;, rename to &lt;code&gt;mkcert.exe&lt;/code&gt;, add to PATH, then run:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   mkcert &lt;span class="nt"&gt;-install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Or install via &lt;a href="https://chocolatey.org/" rel="noopener noreferrer"&gt;Chocolatey&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;choco&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;git&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;nodejs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;python&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;mkcert&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;mkcert&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-install&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;br&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Once those are in place, open Claude Code in the folder where you want your project cloned. First add the Otoshek marketplace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add otoshek/otoshek-local-setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then install the skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin install otoshek-local-setup@otoshek-otoshek-local-setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Relaunch Claude Code, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/otoshek-local-setup git@github.com:YOUR_USERNAME/YOUR_REPO.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also provide the HTTPS URL, which the skill will convert automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/otoshek-local-setup https://github.com/YOUR_USERNAME/YOUR_REPO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The skill takes over from there. It checks what's already installed and skips it, and installs whatever's missing — PostgreSQL, certificates, Python environment, migrations, Stripe sync, VS Code launch config. It pauses once to ask for our local credentials: Google OAuth, Mailjet, and the Stripe test key.&lt;/p&gt;

&lt;p&gt;When it's done, open the Run and Debug pane in VS Code and select &lt;strong&gt;Backend + Frontend&lt;/strong&gt; from the dropdown. Hit the play button or press F5, and both the backend and frontend start simultaneously. Open &lt;code&gt;https://localhost:5173&lt;/code&gt; and the app is running locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;The stack is mature: Django on the backend and React on the frontend. What mattered to me is that I can keep building on it normally. Adding features feels like working on a regular Django + React project, not fighting around the edges of a generated one. That's the thing I was most worried about going in, and it held up.&lt;br&gt;
The codebase is well-structured and documented, so Claude Code picks up the architecture and logic quickly.&lt;/p&gt;

&lt;p&gt;On cost, the free tier covers development, and once launched it scales with your traffic. The one thing to watch: on the free tier the app sleeps after a period of no traffic, and waking it can take close to 2 minutes, so it's not something you'd put in front of real users. On Azure, always-on starts with the Basic B1 plan at $13.14 a month, which handles low traffic and is often where a new app sits for a while. For detailed plans, see Azure App Service pricing or GCP Cloud Run pricing.&lt;/p&gt;

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