Wallet-native deployment platform: GitHub OAuth, prepaid credits, IPFS publishing, and s3worm (S3 Wrapped ORM) for typed JSON and artifacts on S3-compatible storage.
- Node.js 20+
- pnpm 9+
- Docker (for local Postgres, Redis, MinIO)
Some installs use GitHub Package Registry for @decoperations/s3worm. Set GITHUB_TOKEN (see .env.example) before pnpm install if you pull that package from GPR instead of the workspace copy.
cp .env.example .env
# Edit .env — at minimum DATABASE_URL, REDIS_URL, S3_*, BUILDER_*, BUILDER_SECRET
make bootstrap # install, db migrate, worm codegen stub, infra optional per Makefile
pnpm typecheck
pnpm dev # or: make dev- Web:
http://localhost:3000 - Builder API:
http://localhost:3001(expectsx-builder-secretheader matchingBUILDER_SECRET)
Under pnpm + tsc --noEmit, any package whose source imports drizzle-orm (for example eq, and, sql) must declare drizzle-orm in that package’s package.json, even if it already depends on @xops/db. Otherwise TypeScript may report “Cannot find module drizzle-orm”. Typical direct dependents: @xops/auth, @xops/web, @xops/builder, @xops/build-runner.
s3worm means S3 Wrapped ORM (structured JSON + paths on S3). Deployment manifest keys use a first-write policy (IfNoneMatch: '*') so records are not overwritten after create.
The apps/web/Dockerfile expects a monorepo root build with output: 'standalone' (see apps/web/next.config.ts). Build from the repository root per your CI pattern.
| Command | Description |
|---|---|
pnpm typecheck |
Typecheck all workspaces |
pnpm build |
Production builds |
pnpm test |
Vitest (unit smoke tests) |
make bootstrap |
First-run setup |
Private / DecOps — see repository settings.