Answers/How to build an app without a backend

How to build an app without a backend

Updated March 2026

You don't need Express, Django, or Rails. Modern API services handle the backend primitives -- auth, storage, form collection, payments -- so you can ship a working app with a static frontend and API keys.

The architecture: your frontend is static (React, Vue, Svelte, Astro, plain HTML) deployed on a free host (Cloudflare Pages, Vercel, Netlify). For each backend capability, you plug in a service. Sutrena handles the write layer: any time a user sends structured data -- contact forms, feedback, applications, votes -- you create a form and point your frontend at the submission endpoint. No server code.

For auth, Clerk or Auth0 gives you login components with OAuth and session management. For relational data that users read, Supabase or Neon gives you Postgres with REST APIs and row-level security.

The key insight: a form is just write, store, and read. Many apps are this pattern repeated. A voting board writes votes, stores them, reads them back via a dashboard. A quiz writes answers, scores them client-side. An RSVP page writes confirmations, displays them.

For payments, Stripe or Paddle provide checkout components. Payment link, done.

Deployment costs nothing. Cloudflare Pages: free unlimited bandwidth. Sutrena Free: $0 for 10 projects. Clerk free tier: 10,000 users. A production app for free with zero server maintenance. Need more projects? Builder is $9/month with 50 projects, Pro is $29/month with 200.

The tradeoff: you're limited to what your API services expose. Complex business logic -- PDF generation, background jobs, custom algorithms -- still needs a backend. But for data collection and simple CRUD, the backendless approach is faster to build and cheaper to run.

Serverless functions on Cloudflare Workers or Vercel Edge bridge the gap when you need small amounts of server-side logic.

<!-- Complete mini-app: collect data with Sutrena, display results -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Feature Requests</title>
  <script src="https://sutrena.com/embed.js" defer></script>
</head>
<body>
  <h1>Submit a Feature Request</h1>

  <!-- Sutrena form handles the write layer (no backend needed) -->
  <div data-sutrena-form="YOUR_FORM_ID"></div>

  <h2>Current Requests</h2>
  <div id="results"></div>

  <script>
    // Read layer: fetch submissions from the public dashboard API
    // Or use the submissions API with your key from a serverless function
    async function loadResults() {
      const res = await fetch("https://sutrena.com/api/forms/YOUR_FORM_ID/submissions", {
        headers: { "Authorization": "Bearer st_live_your_key" }
      });
      const data = await res.json();
      const list = data.submissions
        .map(s => `<div><strong>${s.data.title}</strong>: ${s.data.description}</div>`)
        .join("");
      document.getElementById("results").innerHTML = list;
    }
    loadResults();

    // Refresh results when a new submission comes in
    window.addEventListener("message", (e) => {
      if (e.data?.type === "sutrena:submitted") loadResults();
    });
  </script>
</body>
</html>

Ready to build?

Get a trial API key instantly — no signup required.

How to build an app without a backend — Sutrena | Sutrena