Skip to main content
FlowFn
IntegrationsTemplatesPricingDocsBlogSign inStart free
All posts
PlaygroundsNo-CodeTutorialHosting

Build and Host a Real Website — No Server, No Deploy — with FlowFn Playgrounds

Describe your app, watch AI write the HTML/CSS/JS, tweak it in a real code editor with a live preview, wire up a backend and a database, and hit publish. It's live on the internet — no hosting to set up, nothing to deploy.

FlowFn Team · Product

15 Jul 2026 · 7 min read

Most "app builders" hand you either a rigid drag-and-drop canvas or a blank repo and a deploy pipeline. A FlowFn Playground is neither. It's a full-screen editor where you write (or AI-generates) real HTML, CSS, and JavaScript; add server-side functions with ctx.* capabilities; attach a database; and publish to a public URL on your own domain — all without provisioning a single server.

To make it concrete, we'll build Bloom & Bean, a cozy neighborhood-café website: a landing page, a menu, an online-order backend, and a database — then ship it live. Here's the finished site, served at its public URL:

The live Bloom & Bean café website

A real, hosted website — nav, hero, highlight cards, footer, responsive. Let's build it from scratch.


Where playgrounds live

Playgrounds are an App-owned artifact (alongside Workflows, Forms, Agents, and Data Sheets). Open Playgrounds in the dashboard, hit New playground, and you drop into the editor — a full-canvas workspace with an AI chat rail on the left and, on the right, either the code editor or a live preview.

The playgrounds list

The top bar has the essentials: an editable name, a Draft / Published status, a view switcher (Code · Components · Preview · Assets · Data · Env), and a Save button.


Step 1 — Describe it, and AI builds it

The fastest way to start is to just say what you want. The chat rail — that's Fen, the in-editor assistant — takes a plain-English description and writes the HTML, CSS, and JS for you.

Fen builds the café from a prompt, next to the generated code

"Build a cozy café landing page — a hero with a tagline, three highlight cards, and a footer with our hours."

Fen scaffolds the whole page (an empty playground's first build applies automatically; every later edit is staged as an approve-before-persist card, so nothing changes your files until you say so). It can edit many surfaces in one turn — or, with Plan first, hand you an editable step list it builds one surface at a time. Two standing context surfaces keep it on-brand: an approved Project brief and an AI memory ("brand colour is #5a7d5a; keep copy warm and unfussy").

You're never locked out of the code, though.


Step 2 — It's real HTML/CSS/JS, in a real editor

Every surface has HTML | CSS | JS sub-tabs over a full Monaco editor — syntax highlighting, formatting, folding, and IntelliSense for the injected flowfn.* (client) and ctx.* (server) globals.

The tab strip across the top — Home · Server · Menu · Visit · + — is your whole site: Home is the index page, and each additional tab is a sub-page with its own body (sub-pages share the site's CSS/JS and server code). Add a page and it's live instantly; components let you author a snippet once and drop <component name="…" /> into any page.

Because it's real code, you can hand-tune anything Fen wrote, or paste in code you generated elsewhere with the AI prompt button (it copies a prompt that teaches ChatGPT/Claude FlowFn's exact runtime).


Step 3 — See it exactly as visitors will

Flip to the Preview view and your app runs live in a sandboxed iframe, inside a device frame you can switch between Desktop / Tablet / Mobile.

The editor's live preview in a device frame

That's the café rendering inside the editor, right next to the chat rail — edit, save, watch it update. Check the responsive layout without leaving the page:

The café in a mobile device frame

A "Test data" drawer lets you feed sample URL params, env values, and a JSON blob so you can exercise data-driven pages before wiring up anything real. (The preview iframe runs at an opaque origin with no same-origin access — a genuine sandbox — so what you see is what visitors get.)


Step 4 — Add a real backend

A café needs to take orders, and that means server-side logic — securely, without exposing keys to the browser. The plan-gated Server tab is where you write functions that run as your team with ctx.* capabilities.

The Server tab: a placeOrder function using ctx.sheets and ctx.tools

Here, a placeOrder function writes the order to a sheet and pings the team in Slack:

exports.placeOrder = async (args, ctx) => {
  const order = await ctx.sheets.insertRow('orders', {
    name: args.name, item: args.item, pickup_time: args.pickup_time, status: 'new',
  });
  await ctx.tools.invoke('@slack_post', { channel: '#orders', text: 'New order: ' + args.item });
  return { ok: true, order_id: order.id };
};

ctx gives server code the powerful stuff — ctx.sheets (the attached database), ctx.tools.invoke (integrations), ctx.fetch/ctx.http, ctx.env (secure env vars), even ctx.workflows.run and ctx.agents.run. Your page calls it with flowfn.server.call('placeOrder', {...}) (first-party only), and you can also expose it as an authenticated external REST endpoint. Secrets stay server-side; the browser never sees them.


Step 5 — Attach a database

Tabular data lives in FlowFn's Data Sheets feature; a playground attaches one Database and reads/writes it. The Data tab is where you link it.

The Data tab: an attached Café DB with a flowfn.data snippet

We attach Café DB — a Menu sheet and an Orders sheet. Now the whole app is data-driven: your page reads with flowfn.data.get('menu') (the copyable snippet is right there), visitors can submit orders (only for the specific write operations you opt into, per sheet), and server code reaches everything through ctx.sheets. The data is managed over in Data Sheets — the playground just points at it, so unlinking never deletes a row.

(The same feature powers the CRM/orders data from the workflow and agent posts — one database, many surfaces.)


Step 6 — Publish and embed

Going live is two switches: set the status to Published and flip Public. Your app is now at /<slug> on the App's host — a *.flowfn.com subdomain or your own custom domain (with automatic HTTPS), optionally as the domain's root so there's no /p/ in the URL. You can password-protect it, and you can embed it anywhere:

The Embed drawer: a token-protected iframe URL

Flip Allow embedding and you get a token-protected embed URL + a ready-to-paste <iframe> snippet, lockable to specific domains and rotatable if a link leaks — perfect for dropping an "order now" widget into an existing WordPress or Webflow site.

And that's the payoff from the top of this post — a real café website, live on the internet, that you built in an afternoon.


The whole toolbox

View / surface What it's for
Code Real HTML/CSS/JS per page, + a Server tab for ctx.* functions
Preview Live, sandboxed, device-framed render with test data
Components Reusable <component> snippets across pages
Data Attach a Data Sheets Database; read with flowfn.data.*
Assets S3-hosted images/video/audio in folders
Env Plain (flowfn.env) vs secure (ctx.env) variables
AI chat (Fen) Describe changes; approve-before-persist edits
Publish / Embed Status + Public, slug, password, embed, custom domain

Plus end-user auth (visitors sign up / log in, with per-page requires_auth and ctx.auth) and a 7-day version history with one-click revert and side-by-side diff — so an experiment is never a risk.


Wrap-up

A Playground collapses the whole stack — frontend, backend, database, hosting — into one editor. You describe what you want and refine real code; you write server functions without a server; you attach a database without wiring one up; and you publish to your own domain without a deploy. Start with a single page and the AI chat, flip to Preview to watch it come alive, then add a server function and a database when you're ready for it to do something.

Build one this weekend — a landing page, an internal tool, a little storefront — and share the link. It's already hosted.

Read next

Use-Case
SAAS
Auth

Build a Client Portal with FlowFn

Agencies, consultancies, and B2B teams all hit the same wall: clients want a single place to check their projects, invoices, and files — and emailing PDFs back and forth doesn't scale. A client portal fixes it, but building multi-tenant auth (each client sees only their own data) usually means real engineering. In FlowFn it doesn't: end-user sign-in, per-client data scoping, and a polished portal page are features you assemble, not code you write.

FlowFn Team · 16 Jul 2026 · 3 min read

Use-Case
Devops
Automation

Build an Incident Alerting & On-Call System with FlowFn

When something breaks at 3am, the difference between a blip and an outage is how fast the right person's phone buzzes. You don't need a pricey incident-management platform to get there. FlowFn can catch an alert from any monitor, log the incident, page whoever's on call, escalate if they don't answer, and show the whole team a live status board — built from a webhook, a workflow, a Data Sheet, and a dashboard.

FlowFn Team · 16 Jul 2026 · 3 min read

Use-Case
Internal-Tools
Automation

Build an Internal Ops Tool with FlowFn

Every company runs on a pile of small approvals — refunds, access requests, expenses, discounts — and most of them live in a shared spreadsheet plus a Slack thread nobody can audit. An internal ops tool fixes that: one private table your team works from, action buttons that approve or reject in a click, automatic notifications, and a queue board so nothing rots. FlowFn lets you build it in an afternoon — no internal-tools platform, no login wall to wire up.

FlowFn Team · 16 Jul 2026 · 3 min read

Build your first workflow today

Start free — connect your apps, add AI, and ship an automation you can actually maintain. No credit card required.

Get started free