Schema Overview

Core Prisma entities, relationships, and enum-driven state models.

Domain entities

Primary relationships

  • User 1:N GroupMember
  • Group 1:N GroupMember
  • Group 1:1 GroupSubscription
  • SubscriptionService 1:N GroupSubscription
  • GroupSubscription 1:N Payment
  • Group 1:N Invitation

Uniqueness and integrity constraints

  • Group.joinCode unique
  • @@unique([groupId, userId]) on GroupMember prevents duplicate joins
  • GroupSubscription.groupId unique enforces single selected service per group
  • Payment.stripePaymentIntentId unique supports webhook idempotency

Enum state machines

EnumValues
GroupStatusACTIVE, PAUSED, DISSOLVED
MemberRoleOWNER, ADMIN, MEMBER
MemberStatusACTIVE, REMOVED, LEFT
SubStatusPENDING, ACTIVE, PAST_DUE, CANCELLED
PaymentStatusPENDING, PROCESSING, SUCCEEDED, FAILED, REFUNDED
InviteStatusPENDING, ACCEPTED, EXPIRED, REVOKED

Data conventions

  • Timestamp fields are persisted in UTC.
  • Monetary values are integer cents.
  • IDs use CUID by default.