Post Authors Feature (DataHub)
Post Authors Feature (DataHub)
This feature enables explicit attribution of one or more authors to individual posts, following a model similar to Substack. Authors are existing DataHub users and are linked to posts via foreign keys; by default, the post author is the publication owner, but this can be overridden per post.
Core Principles
- Per-post authorship: Authors are attached to posts, not publications.
- User-based attribution: Authors must correspond to DataHub user accounts.
- Simplicity first: No invitation or approval workflow in the initial implementation.
- Progressive enhancement: Clear extension paths for invitations and approvals.
Data Model
-
User
- Required fields:
full_name - Derived fields:
avatar_url(Gravatar via email hash; fallback to generated avatar)
- Required fields:
-
Post
- New field:
authors[](array of foreign keys toUser) - Default:
[publication.owner]
- New field:
UI / UX
-
Post editor
- “Add author” control (plus button).
- Typeahead search over existing users (by name / username).
- Selecting a user immediately adds them as a co-author.
-
Post display
- Author byline showing avatars and names (up to N, consistent with Substack-style UI).
- Author names link to profile pages.
-
Profile page (minimal)
- URL:
/users/{username} - Displays: name, avatar, list of publications owned or contributed to.
- URL:
Identity & Avatars
- Primary avatar source: Gravatar (from user email).
- Fallback: system-generated placeholder avatar (deterministic, aesthetically consistent).
Scope Exclusions (for now)
- No publication-level author roles.
- No email invitations.
- No author approval or consent flow.
- No role distinctions (e.g. editor vs contributor).
Appendix A: Future Extension – Author Approval Flow
- Adding an author triggers a pending state.
- The added user receives a notification/email.
- Authorship becomes active only after explicit acceptance.
- Prevents unauthorized attribution.
Appendix B: Future Extension – Email-Based Invitations
-
Allow adding authors by email address.
-
If the email is not associated with an account:
- Send an invitation to join DataHub.
- On signup, prompt acceptance of co-authorship.
-
Invitation acceptance simultaneously:
- Creates the user account.
- Confirms authorship on the post.
Notes
- Initial implementation assumes a trusted environment.
- All extensions are additive and do not require changes to the core data model.