Create your app
Scaffold a project#
bash
waid login --env localwaid new my-appcd my-appnpm installwaid new creates a standard Vite + React + Tailwind + shadcn app at the project
root, alongside waid.config.json. Optional flags set your app's identity up front so you
never hand-edit config later:
bash
waid new my-app \ --app-name "My App" \ --android-package com.acme.myapp \ --ios-bundle-id com.acme.myappProject layout#
text
my-app/├── waid.config.json # your app's config (name, icon, identity, capabilities)├── package.json├── vite.config.ts├── index.html├── components.json # shadcn config├── public/└── src/ ├── main.tsx ├── App.tsx ├── index.css ├── lib/utils.ts └── components/ui/ # button, card, badge, …Your React source lives in src/. waid.config.json at the root is where you
configure how it's packaged. See App configuration.
Author the app#
Write ordinary React + Tailwind. There are no WAID-specific imports or components;
shadcn/ui components are scaffolded in src/components/ui/.
tsx
import { Button } from "@/components/ui/button"import { useState } from "react" export default function App() { const [count, setCount] = useState(0) return <Button onClick={() => setCount((c) => c + 1)}>Count: {count}</Button>}What to commit#
Commit your source; never commit build output or secrets.
Commit: waid.config.json, .gitignore, and your frontend source (package.json,
package-lock.json, src/, index.html, config files).
Do not commit:
text
.waid/ # generated builds + artifactsdist/ node_modules/*.apk *.aab*.jks *.keystore waid.local.properties # signing keystores + local secretswaid new sets up .gitignore for you, including the signing-secret files.