TL;DR: In the Mac IDE, click the Cloud button in the toolbar. Give the app a name, set a build command and output directory (or leave both blank for a plain static site), and hit Deploy. LingCode builds your project and auto-detects what it is: a static frontend ships to https://lingcode.dev/apps/<id>/, and a full-stack SSR app (Next.js, SvelteKit, Nuxt, Astro, Remix, TanStack Start) ships to a Cloudflare Worker at https://<id>.run.lingcode.dev/ — both with HTTPS, no host account, no deploy token, no DNS. Re-deploying updates the same URL; attach a custom domain when you're ready.
Most people who can build a website can't, off the top of their head, ship one — the gap isn't the code, it's the pile of host accounts, build settings, tokens, and DNS that sit between "it runs on my machine" and "my friends can open it." LingCode Cloud is the shortcut: one button in the IDE turns the project you're looking at into a public URL. This walks through what that button actually does, when to use it, and where its edges are.
It helps to be precise about what "LingCode Cloud" hosting is, because the name covers two independent things. This tutorial is about Cloud apps — hosting the app you build: either a static front end (built HTML/CSS/JS, served from LingCode's edge) or a full-stack SSR app that renders and routes on the server. The deploy auto-detects which one you have. That is separate from a managed backend (a per-project Postgres with auth, storage, and realtime), which is its own feature with its own tutorial. You can use either alone or both together. (Full hosting reference, including the Worker runtime, is in App hosting on LingCode Cloud.)
The reason it's one click is that the IDE already has everything it needs: it knows your project folder, it can run your build, and you're already signed into your LingCode account. So instead of asking you to create a Netlify/Vercel/AWS account and paste a token, it builds locally, packages the output, and uploads it straight to LingCode-operated hosting. No third-party credential ever enters the picture.
The deploy looks at your project and picks the right target automatically:
https://lingcode.dev/apps/<id>/ with a single-page-app fallback. Whatever your project compiles to — a single index.html, or a Vite/React/Svelte/Vue build — those files are what get hosted. The right model for landing pages, docs, dashboards, games, and SPAs.https://<id>.run.lingcode.dev/, so server-side rendering, API routes, and server actions all run. Next.js (via the OpenNext adapter), SvelteKit, Nuxt, Astro, Remix/React Router 7, and TanStack Start are auto-detected and built.The one constraint worth understanding: the Worker runtime is a Cloudflare V8 isolate, not Node.js. The supported frameworks are auto-adapted to it, but a hand-rolled plain Express/Node server (or a non-JS backend) won't run as-is — that, plus anything long-running or over ~30s per request, is what belongs on a server you run. See App hosting for the full runtime detail.
Cloud app = your front end or full-stack app, hosted at lingcode.dev/apps/<id>/ (static) or <id>.run.lingcode.dev (Worker/SSR). Managed backend = a private database + auth + storage your app talks to. Deploying an app does not create a backend, and connecting a backend does not deploy an app — they're separate jobs. Most apps want the app first; add a backend when you need to remember something.
npm install && npm run build. Leave it blank if the project is already plain static files (an index.html you can open directly).dist for Vite, build for Create React App, etc.). For a blank build command, this is just the folder that contains your index.html (often the project root)..xcodeproj) is flagged as incompatible, an SSR framework is detected and built for the Worker tier, and a missing build output is a blocking error. The Deploy button stays disabled until the name is filled and no blocking issue remains.https://lingcode.dev/apps/<id>/ for a static app, or https://<id>.run.lingcode.dev/ for a Worker/SSR app — with Copy and Open.Knowing the pipeline makes failures obvious instead of mysterious:
index.html and tars + gzips its contents; for an SSR app it packages the Worker build (the framework's Cloudflare/OpenNext output).<id>.run.lingcode.dev hostname attached, HTTPS automatic. The new version is swapped in atomically, so visitors never catch a half-deployed site.The result is a versioned, public app — what you build locally is what goes live.
Re-deploy by clicking Cloud again on the same project and hitting Deploy — it updates the same app (same id, same URL), bumps the version, and keeps any attached domains. There's nothing to "promote"; the live URL always reflects your latest deploy.
Custom domain: right in the deploy popover there's a Custom domain section. Attach app.yourdomain.com (and optionally its www counterpart), point one DNS record at LingCode, and HTTPS is issued automatically. The full walkthrough — apex vs www, the exact records, and the Cloudflare proxy gotcha — is in Connect a custom domain to your Cloud app.
Data: a hosted front end that needs accounts or storage can be wired to a managed backend — the two compose cleanly.
node_modules in the output dir.<id>.run.lingcode.dev. The only thing that won't run is a hand-rolled express/next start Node server or a non-JS backend; port it to a Worker-targeting framework (Hono, TanStack Start, or an OpenNext adapter) or run it elsewhere. See App hosting for the runtime details.