Platform
Hosting & deploysPush to a branch, get a live linkDatabaseReal Postgres, one per appSign-inEmail and Google, users includedFile storageUploads, photos and documentsPaymentsCheckout and plans, same projectAI gatewayEvery model, with a hard spend cap
Solutions
Moving an app overFrom Lovable, Bolt, Replit or v0Your first real appNever shipped anything beforeSide project → businessWhen people start paying youPricing$20/month plus prepaid credits
Resources
DocsGuides written for people who are newFor AI agentsClaude Code, Cursor, MCP, JSON CLIChangelogWhat shipped, most recent firstComponentsPaste-ready UI for sign-in and moreSupportA person answers, not a queue botRefer a friendBoth of you get credits Start for $20
Open in ChatGPT Open in Claude Last updated 2026-09-24

Teams and roles

Three roles per project — owner, member, billing — with email invites, invite links and a domain allow-list.

A project is not a lonely account. Add people under Teams and each one gets a seat on that project with a role that decides what the seat can touch. Membership is per project: someone can be an owner on one app and a member on another, and the Teams screen shows the seat matrix across every project in the workspace.

The three roles

RoleWhat the seat can do
ownerEverything: deploy, database and secrets; manage domains, API keys and deploy hooks; change team settings, roles and memberships; pick alert recipients; delete the project.
memberThe build work: deploys, database, secrets and env, logs, monitors, errors. Can invite other members — but only members.
billingMoney, nothing else: plan, card, credits and invoices. Cannot deploy or read the vault.

In API terms the routes check three buckets: owner alone for destructive and team-admin actions, owner + member for build surfaces, and owner + billing for billing. Every seat can open the project and read its dashboard.

Email invites

Invite by email address and role. The invite link lands in their inbox and is valid for 7 days; accepting requires signing in with the invited address, so a forwarded link does not grant a seat to the wrong person.

  • Resend mints a fresh token and restarts the 7-day clock — use it when the first mail expired or went to spam.
  • Revoke kills a pending invite before it is accepted.
  • Only an owner can grant the owner or billing roles; a member's invites are members-only by construction.

For a team where inviting one address at a time does not scale, the project has an invite link: https://camplax.dev/join/<token>. Enable it in team settings and anyone signed in who opens it joins as a member. Rotate the token and every old link dies at once — that is the off-switch when a link leaks.

Two settings control who may join at all:

  • Allowed domains — a list like acme.com; only matching email addresses can be invited or use the link.
  • Domain lock — when on, the allow-list is enforced (invites to other domains come back blocked; the join link refuses them). With the lock on and an empty list, nothing gets in — the list is the gate, not a suggestion.

The rules that protect you

  • The last owner cannot be demoted or removed. Demoting or deleting the final owner seat returns last_owner — a project always keeps someone who can administer it.
  • You cannot remove yourself. Another owner does it.
  • Invites to domains outside an active lock are recorded as blocked, not sent — you can see who was turned away.
  • All team endpoints are session-only: project API keys cannot manage membership.

The API surface

EndpointWhat it doesWho
GET /v1/projects/:slug/teamsMembers, pending invites, role counts, invite-link stateany seat
PATCH /v1/projects/:slug/teams/settingsdomainLock, allowedDomains, inviteLinkEnabledowner
POST /v1/projects/:slug/teams/invite-link/rotateNew link token; old links stop workingowner
POST /v1/projects/:slug/teams/invites{ "emails": […], "role" } — email invitesowner/member
POST /v1/projects/:slug/teams/invites/acceptAccept by token; session email must matchthe invitee
POST /v1/projects/:slug/teams/invites/:id/resendNew token + fresh 7 daysowner/member
DELETE /v1/projects/:slug/teams/invites/:idRevoke a pending inviteowner/member
PATCH /v1/projects/:slug/teams/members/:idChange a roleowner
DELETE /v1/projects/:slug/teams/members/:idRemove a seatowner
POST /v1/projects/:slug/teams/joinJoin via an invite-link tokenany signed-in user the lock allows
© 2026 Camplax $20 / month · credits stop at zero
Ask about Camplax