Before you start
- Node.js 24 or later.
- Git, which
fluid deployuses to save the site’s source. - A Fluid login for a company that has sites turned on. If publishing answers
404, contact support to turn them on.
Steps
1
Create the project
@fluid-app/sites already imported. npx @fluid-app/create-fluid-site my-event does the same. For a single HTML page and no build step, use the html template:2
Log in
3
Deploy
fluid deploy finds the framework, runs its build, creates the site the first time (a company Site with an admin login, your own Site with a member login), publishes the build and prints the site’s address, such as https://yoli.com/sites/my-event.The first deploy asks whether to make the site public. Pass --public to skip the question. Without a terminal to ask on, the site stays private until you run fluid sites visibility public.Before it publishes, fluid deploy commits the folder and pushes it to the site’s source repository, so fluid sites pull can clone it later. Pass --no-source to publish without saving the source. See Source and branches.fluid deploy again after each change. Files Fluid already holds aren’t uploaded again.
Already have a project?
Skip the first step. Runfluid deploy in the folder of any Vite, Astro, plain HTML or Next.js static export project. It builds the project with the package manager its lockfile names. See the framework guides for what each one needs.
A Next.js app that needs a server isn’t deployed: fluid deploy explains why and creates nothing. See Site or App?.
Deploy without fluid login
Where you can’t runfluid login, such as in CI, set FLUID_TOKEN and FLUID_API_BASE. The CLI reads FLUID_TOKEN before any saved login, and a token from FLUID_TOKEN has no default API base, so set FLUID_API_BASE to https://api.fluid.app too.
The token must be a signed-in person’s:
- For a company Site, an admin’s login whose role may change themes (
application_themes.update). A company API token can list and read company Sites, but it can’t publish them. - For a member’s own Site, that member’s login.
--as admin or --as member to say which it is, so a mismatch stops before any request.
Next steps
- Develop locally with a private database.
- Add a table with the site database.
- Roll back to an earlier version.
- Set page titles and turn on indexing in SEO and indexing.
- Call the Member API as the signed-in visitor.