Start on the product, not the plumbing.

Organizations, products, communications and transactional email, already wired together in Nuxt and Postgres.

Domain event

{
  "name": "product.stock_changed",
  "organizationId": "org_7c1a",
  "entity": { "type": "product", "id": "prd_4f2b" },
  "actor": { "type": "user", "id": "usr_91e0" },
  "source": "api:product.movement"
}

Every transition emits the same envelope on one event bus.

From the trigger catalog

product.stock_changedproduct.createdorganization.member_addedorganization.invitation_createdteam.member_addedcommunication.sent

Everything your product needs, already connected

Modules that share one event bus, one audit trail and one role system.

Organizations and roles

Owners, admins and members in one organization. Invitations expire after seven days.

Products and inventory

Variants, serial numbers, stock movements and photos, with prices in your currency.

Teams

Group people inside the organization and invite new members straight into a team.

Communications and notifications

Message teams or people. In-app notifications and email, resolved per recipient.

Transactional email

Invitations, password resets and magic links, rendered from branded MJML templates in three languages.

Audit log

Every mutation is recorded with its actor, its target and its result, including the failed ones.

Organization documents

Private files delivered as short-lived download links. Members read, admins write.

Bulk invitations

Upload a CSV and invite the whole list in the background, with per-row retries.

Describe the email, get the template

Tell the assistant what the email should say and it builds the template with the same blocks and merge tags you would pick by hand. You review and apply; it never sends on its own.

  1. Describe
  2. Generate
  3. Review
  4. Apply

From clone to first automation

  1. 01

    Deploy

    Postgres, a Nitro server and a queue. Run the migrations and you are up.

  2. 02

    Invite the team

    Create an organization and add people by role, one at a time or from a file.

  3. 03

    Communicate

    Send a communication to your members or a transactional email, with delivery tracked in one place.

Access is by invitation

There is no public sign-up. Your organization invites you, you sign in, and your role decides what you see.

  • Sign in with a magic link from the invitation email.

  • One account for every organization you join.

  • Your role decides what you can see and do.

Ready when you are.

Sign in to open your organization. New members join through an invitation.