Files
social-media/docs/constraints.md

2.6 KiB

Constraints

These are cross-cutting rules for the current product and codebase. They are intended to reduce ambiguity for both humans and AI agents.

Product Constraints

  • The product is a workflow tool, not a public social network.
  • Internal review and client review should be modeled as related workflow stages, not isolated products.
  • Content approval must preserve traceability of comments, revisions, decisions, and status changes.
  • “Ready to publish” should only be reachable from an explicit workflow state transition, not inferred casually in UI code.

Domain Constraints

  • Organization is the SaaS account, billing, subscription, connector, and workspace ownership boundary.
  • Workspace is the brand/client workflow boundary.
  • A workspace belongs to exactly one organization and is not shared between organizations.
  • ContentItem belongs to a workspace scope.
  • Channels are configured inside a workspace.
  • Organization-level membership can grant inherited access to all workspaces owned by the organization.
  • Workspace-level membership can grant direct workspace access and override applicable inherited workspace permissions.
  • External Collaborator workspace participants can have workspace access without organization membership.
  • Comments, approvals, assets, and notifications must remain traceable to the underlying workflow entity they relate to.

Backend Constraints

  • Keep module boundaries intact. Do not couple DbContexts across modules.
  • When adding schema changes, create migrations in the owning module only.
  • Follow the existing FastEndpoints handler pattern with explicit route and tag metadata.
  • Preserve development HTTP behavior locally; HTTPS redirection is not enabled in development.

Frontend Constraints

  • Frontend runtime config must flow through frontend/src/config.js.
  • Do not add feature-level import.meta.env reads.
  • Avoid introducing fallback env chains that create multiple configuration sources of truth.
  • Preserve token refresh concurrency protections in authStore and the API client.
  • Preserve route-level auth and role checks unless the product requirement explicitly changes.

Documentation Constraints

  • One topic should have one current source of truth.
  • Historical docs must be marked archived or legacy.
  • Specs should distinguish current behavior from proposed behavior.
  • Open questions should be listed explicitly rather than hidden in narrative text.

Naming Constraints

  • Prefer current product/domain language over Hutopy-era terminology.
  • Avoid reviving creator/tipping/membership concepts unless intentionally rebuilding them for the new product.