pbvex-internals
PBVex implementation internals
Start with the public executable boundary in backend/cmd/pbvex/main.go and the application host in backend/internal/pbvex/. Inspect the owning package before changing a contract:
rg -n "Register|Route|realtime|activation|migration" backend/internal
(cd backend && go test ./... && go vet ./...)
Preserve runtime contracts
The binary embeds PocketBase and runs uploaded TypeScript bundles in Goja. It must validate deployment envelopes, manifests, bundle hashes/sizes, function descriptors, wire values, visibility, and component mounts before activation. Activation compiles functions and materializes compatible schema/index changes transactionally; on failure the prior active deployment stays active.
Keep the distinction clear:
- Public TypeScript authoring APIs are exported by
pbvex,pbvex/server,pbvex/values, and generated files. backend/internal/**Go packages are implementation details, not APIs for application TypeScript or external Go consumers.
Do not expose an internal function through the public call path, weaken argument/return validation, accept handwritten component IDs, or bypass transaction/activation checks.