%%{init: { 'theme': 'neutral', 'flowchart': { 'curve': 'linear' }, 'themeCSS': '.edgePath path { stroke-dasharray: 6 4; animation: dash 18s linear infinite; } @keyframes dash { to { stroke-dashoffset: -1000; } }' }}%% flowchart TB classDef grp fill:#0f172a,stroke:#334155,color:#e5e7eb; classDef model fill:#111827,stroke:#475569,color:#e5e7eb; subgraph CORE["Core"] direction LR m_settings["Settings"]:::model m_user["User"]:::model m_user_profile["UserProfile"]:::model end subgraph CONTENT["Content"] direction LR m_article["Article"]:::model m_category["Category"]:::model m_page_el["PageElementConfig"]:::model m_uploaded["UploadedFile"]:::model m_file_usage["FileUsage"]:::model end subgraph NAV["Navigation"] direction LR m_nav_item["NavigationItem"]:::model m_social["SocialLink"]:::model m_short["ShortLink"]:::model m_click["LinkClick"]:::model end subgraph MATCHES["Matches & Teams"] direction LR m_team["Team"]:::model m_player["Player"]:::model m_match_over["MatchOverride"]:::model m_team_logo_over["TeamLogoOverride"]:::model m_comp_alias["CompetitionAlias"]:::model m_score_state["ScoreboardState"]:::model end subgraph POLLS["Polls"] direction LR m_poll["Poll"]:::model m_poll_opt["PollOption"]:::model m_poll_vote["PollVote"]:::model end subgraph SWEEPSTAKES["Sweepstakes"] direction LR m_sw["Sweepstake"]:::model m_sw_prize["SweepstakePrize"]:::model m_sw_entry["SweepstakeEntry"]:::model m_sw_winner["SweepstakeWinner"]:::model end subgraph COMMENTS["Comments & Moderation"] direction LR m_comment["Comment"]:::model m_comment_react["CommentReaction"]:::model m_comment_ban["CommentBan"]:::model m_unban_req["UnbanRequest"]:::model m_comment_rep["CommentReport"]:::model end subgraph CONTACTS["Contacts & Newsletter"] direction LR m_contact_cat["ContactCategory"]:::model m_contact["Contact"]:::model m_contact_msg["ContactMessage"]:::model m_news_sub["NewsletterSubscription"]:::model m_email_log["EmailLog (models.email)"]:::model end subgraph ENGAGE["Engagement & Rewards"] direction LR m_points_tx["PointsTransaction"]:::model m_ach["Achievement"]:::model m_user_ach["UserAchievement"]:::model m_reward_item["RewardItem"]:::model m_reward_red["RewardRedemption"]:::model end subgraph SHOP["Shop"] direction LR m_cloth["Clothing"]:::model end subgraph GALLERY["Gallery"] direction LR m_zonerama_album["ZoneramaAlbum (derived)"]:::model end subgraph ERRORS["Error Tracking"] direction LR m_error["ErrorEvent"]:::model end %% (Optional) Indicative relationships (no strict cardinalities) %% Using simple arrows to avoid ER notation parse issues m_article --> m_category m_article --> m_user m_file_usage --> m_uploaded m_click --> m_short m_comment_react --> m_comment m_comment_ban --> m_user m_unban_req --> m_user m_comment_rep --> m_comment m_user_profile --> m_user m_points_tx --> m_user m_user_ach --> m_user m_user_ach --> m_ach m_reward_red --> m_reward_item m_sw_entry --> m_sw m_sw_winner --> m_sw m_poll_opt --> m_poll m_poll_vote --> m_poll m_contact_msg --> m_contact m_nav_item --> m_article