npx @xano/sdk init my-app writes one project with two halves: a Xano backend in xano/
and a Vite frontend in frontend/, under a single package.json. This page walks through the
React scaffold. The Svelte one has the same backend half.
The layout
xano/index.ts starts empty but already compiles and deploys. Everything you author is a
def object (a table(), a query(), an apiGroup()) registered on the
workspace("my-app") it default-exports. How it works explains the
model, and Your first change adds a table and an endpoint.
What to commit
Commit the whole project except what.gitignore already leaves out. Three files are easy to
get wrong:
The Engine pin looks like this:
npx xanosdk local update moves it on purpose. See
Xano Engine.
Two backend files are never committed: xano/.env holds the values of your backend’s
environment variables, and xano/.secrets.json holds documentation tokens. .env.local holds
the VITE_XANO_HOST the Engine deploy writes, and is per machine.
Which script deploys where
Your workspace is reached through a release, never through a script: deploy to an ephemeral
with tests, cut a release, then promote it. Deploy to Xano covers that path.
Next
- How it works: def objects, bundles, and where the SDK sits next to XanoScript and the Xano editor.
- Your first change: add a table and an endpoint.
- Where your code goes: every deploy command and what it writes.