This project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called vp. Vite+ is distinct from Vite, and it invokes Vite through vp dev and vp build. Run vp help to print a list of commands and vp <command> --help for information about a specific command.
Docs are local at node_modules/vite-plus/docs or online at https://viteplus.dev/guide/.
vp <name> runs a built-in command. vp run <name> runs a package.json script or a vite.config.ts task. Scripts cannot overwrite built-ins, so vp dev and vp run dev may do different things. Check package.json and vite.config.ts first, and run vp run <name> when the project defines a script or task with that name.
- Run
vp installafter pulling remote changes and before getting started. - Run
vp checkandvp testto format, lint, type check and test changes. - Check if there are
vite.config.tstasks orpackage.jsonscripts necessary for validation, run viavp run <script>. - If setup, runtime, or package-manager behavior looks wrong, run
vp env doctorand include its output when asking for help.
- Install Vite+ once to supply Node.js, then run
corepack enableto make pnpm available. - Use
pnpm run devfor normal development. It selects the primary or linked-worktree flow. - Vite+ stays in
package.jsonand supplies the dev, format, lint, test, and build tools behind the package scripts.
A Samebase source build: v<N> line records the Samebase starter build used for that file. Do not
remove the line when you edit the file.
- The core workflow must run natively on macOS, Linux, and Windows.
- Put non-trivial repository automation in erasable TypeScript under
scripts/and run it with the Node 24 runtime pinned by.node-version. - Do not add Bash scripts, POSIX-only inline environment assignment, shell parameter expansion, or
required Unix-only utilities. Set
envandcwdthrough Node process APIs, pass arguments as arrays, and handle Windows.cmdentry points explicitly when needed. - Documentation must use platform-neutral commands or show both POSIX and PowerShell forms when their syntax differs.
- Authored application, automation, test, and supported configuration source uses normal
.tsor.tsx. Treat an authored.js,.mjs, or.cjsfile as a review smell. Keep one only when a named tool or runtime cannot use TypeScript, and document that exact boundary. Generated output and required shipped browser artifacts can be valid exceptions. Do not add a repository-wide extension scanner. - Run
pnpm run check. It checks formatting, lint, browser TypeScript, Node TypeScript, Convex TypeScript, tests, and generated Cloudflare redirects. - Run
pnpm run buildbefore a deploy. The real Cloudflare build path runs the complete check before it builds the app.
This project uses Convex as its backend.
When working on Convex code, always read
convex/_generated/ai/guidelines.md first for important guidelines on
how to correctly use Convex APIs and patterns. The file contains rules that
override what you may have learned about Convex from training data.
Convex agent skills for common tasks can be installed by running
npx convex ai-files install.