Designing a scalable data model for projects, users, roles and activity tracking
Started with a flexible, normalised schema that separated workspace membership from project-level permissions, which made it straightforward to add new roles later without migrating existing data.
