Back to Blog
team@tinypod.app

How TinyPod Works: Architecture Behind One-Click Deploys

Ever wonder what happens when you click 'Deploy' on TinyPod? Here's a behind-the-scenes look at our architecture.

tinypodarchitectureinfrastructure

What Happens When You Click Deploy


You select an app, click deploy, and 60 seconds later it's running with HTTPS. Here's what happens behind the scenes.


Step 1: Resource Check

We verify your subscription has enough CPU, RAM, and storage for the deployment. If not, we show you how much more you need.


Step 2: Server Selection

We select an available VPS with enough capacity. For platform servers, we pick the one with the most available resources.


Step 3: Container Creation

Via SSH, we pull the Docker image and create a Podman container with your specified resources:

  • CPU limit (--cpus flag)
  • Memory limit (--memory flag)
  • Network configuration
  • Volume mounts for persistent data
  • Environment variables

  • Step 4: Database Provisioning

    If the app needs a database, we create a dedicated database in the shared PostgreSQL, MySQL, or Redis instance. Credentials are generated and injected as environment variables.


    Step 5: Reverse Proxy Configuration

    Caddy is configured with a new route: your-subdomain.boilr.xyz → container-port. Caddy automatically provisions an SSL certificate from Let's Encrypt.


    Step 6: Health Check

    We poll the container until it responds to health checks. The status in your dashboard changes from 'creating' to 'running'.


    The Technology Stack


  • **Web App**: Next.js 15 with React Server Components
  • **Database**: Turso (libsql) for the platform database
  • **Auth**: Clerk for authentication
  • **Containers**: Podman (rootless)
  • **Reverse Proxy**: Caddy with automatic SSL
  • **Payments**: Polar for subscriptions
  • **VPS**: Managed Linux servers

  • Multi-Service Projects


    For templates and Docker Compose deployments, we create a Podman pod. Services within the pod share a network namespace and can communicate via localhost. Each public service gets its own subdomain.


    Scaling


    Each TinyPod server gives you 4 cores, 8 GB RAM, and 75 GB NVMe. Need more? Add another server — your resources multiply linearly. Resources are soft limits, not reservations, so you can over-provision without waste.