| User | id, email, username, passwordHash, role, discordId, githubId, avatar, bio, website | → Role, → Plugin[], → AgentConfig[], → UserRating[] |
| Role | id, name, key, description, isSystem | → User[], → RolePermission[] |
| Permission | id, name, key | → RolePermission[] |
| RolePermission | roleId, permissionId | → Role, → Permission (composite unique) |
| Plugin | id, name, slug, version, kind, status, downloads, rating | → Category, → User, → SubmissionReview[], → UserRating[], → Screenshot[], → PluginVersion[] |
| AgentConfig | id, name, slug, version, provider, model, status | → Category, → User, → SubmissionReview[], → UserRating[], → Screenshot[], → AgentVersion[] |
| Category | id, name, slug | → Plugin[], → AgentConfig[] |
| SubmissionReview | pluginId/agentId, action, notes | → Plugin/AgentConfig, → User |
| UserRating | pluginId/agentId, rating (1-5), review | → Plugin/AgentConfig, → User |
| Screenshot | pluginId/agentId, url, alt, order | → Plugin/AgentConfig |
| PluginVersion | pluginId, version, kind, entryPoint | → Plugin |
| AgentVersion | agentId, version, provider, model | → AgentConfig |
| AuditLog | userId, action, entity, entityId, metadata, ip | → User |
| GitHubConnection | owner, repo, branch, isActive, lastSyncAt | → User |
| GitHubTopicScan | topic, status, resultCount | → User, → DiscoveredRepo[] |
| DiscoveredRepo | scanId, owner, repo, fullName, stars, topics | → GitHubTopicScan |
| Setting | key (unique), value | none |