4.5 KiB
4.5 KiB
OPEN-QUESTIONS.md — eutopic
decision log. open = not yet decided. closed = locked, with resolution noted.
open
priority 0:
- exact reaction palette (design collab pending)
- branding + visual identity (design collab pending)
- RSVP interaction model (deferred, not designed yet)
- email notification format/timing for RSVPs (deferred)
- DMs — websockets/simple in-app vs matrix vs no DMs ever. decide before v2 launch.
- social handle platform list expansion (signal + telegram primaries. custom covers edge cases. expand tbd.)
- server/media migration path — which host migration is least painful for media storage (filesystem → s3-compatible). greenhost/hetzner candidates.
- which njalla plan tier?
- comment hearts/likes — do comments get a heart reaction? tension with "no hierarchy" value. deferred.
- compose — modal sheet over current screen, or full dedicated screen?
- stories — filters applied at capture time or view time?
- posters — tag filter UI: tab strip or dropdown?
- stories access — purely via tab, or also accessible from own profile?
- CI/CD on codeberg possibly?
- feed reaction visibility — should users see all reactions on a post, only their own, or none? (poster-tab reactions already locked: author-only. this is feed-only.)
closed
no push notifications ever→ v1: none. v2: DM notifications only if DMs land. never for feed activity.federation UI→ locked off. activitypub via fedify active in stack, flag OFF. UI stays invisible always.reaction model→ poster defines up to 5 emoji as their reaction set. open emoji picker always available as fallback. reactions stored as user + post + emoji + timestamp (not counters).bulletin board as separate entity→is_eventflag on regular posts. event fields:event_date,event_location,event_ends_at. auto-archives 1 day afterevent_ends_at.event reactions visibility→ visible to post author only. no public counts on bulletin board. no class hierarchy.who can post to bulletin board→ anyone. filters/subpages handle noise.save/bookmark→ optional, toggled by poster at compose time. default off for personal posts.story interaction model→ no replies. "witnessed" metadata: private, per-viewer row in story_witness table, expires with story (24h). story author can view flat witness list (like ig). no public count.comments→ flat, chronological, on posts only. not on stories.DMs in v1→ not shipping. replaced bydisplay_social_handleuser flag. may become vestigial if DMs land in v2.social handle as boolean→display_social_handle: none | mutuals | all. single field, three states.social handle structure→ array of{ platform, handle, label?, active }. one entry per platform.labelonly used for custom platform.activehides without deleting. plus free textcontact_prefs("bad texter", "weekends only" etc).third-party auth / handle linking→ rejected. store strings, display them, done.social handle onboarding→ opt-in during onboarding. if skipped: "re-enable at any time in settings."bulletin board layout→ 2-column grid (SliverGrid/GridView.builder), infinite scroll, paginated fetch.survey creator→ admin only (you).is_adminflag on user record, used only for this.survey format→ multiple choice only. separate/feedbacksubpage always has free text field.survey visibility→ dev use only. no results shown to users, no public engagement metrics.survey feature→ v1, non-negotiable. community sees product is actively iterated on their feedback.survey delivery→ slot 1 in feed as injected card (not a real post). GIF cover image. tapping routes to/feedbackwhere active survey renders above permanent free text field. card drops from slot 1 per-user once they've responded (checkssurvey_responseon feed load). no modal.survey expiry→ ephemeral, 36h.bulletin board route + name→/posters. scope is broader than events: three post types, single required tag (choose one):event,fundraiser,current affairs.event tags — max count→ max 1 tag per poster post. single required tag forces a clear primary classification, reduces compose cognitive load.nav structure→ five-slot bottom tab bar: home / posters / compose (center) / stories / profile. stories as dedicated tab, not top strip — intentional destination, not ambient check-in prompt.PWA— fallback option to consider if run into problems with apple app store