From 007cab36d1f1d4378b7ce1130a0dc926321b5ffe Mon Sep 17 00:00:00 2001 From: eutopiacode Date: Wed, 3 Jun 2026 17:03:17 +0300 Subject: [PATCH] survey questions; model test prompts --- .gitignore | 5 ++ docs/SURVEY-QQS.md | 26 +++++++++ model-test.md | 143 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 .gitignore create mode 100644 docs/SURVEY-QQS.md create mode 100644 model-test.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..71001d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +## ai +.claude/ + +## test output +output.md \ No newline at end of file diff --git a/docs/SURVEY-QQS.md b/docs/SURVEY-QQS.md new file mode 100644 index 0000000..79e0e12 --- /dev/null +++ b/docs/SURVEY-QQS.md @@ -0,0 +1,26 @@ +# SURVEY-QQS.md — eutopic + +candidate questions for in-app community surveys. admin-only, multiple choice, 36h expiry. + +format: question + options. one survey live at a time. + +--- + +## queue + +### 1. feed reaction visibility + +**question:** when you react to a post in your feed, what would feel right? + +**options:** +- see everyone's reactions on every post +- only see your own reaction on posts you've reacted to +- no visible reactions — they're a private signal to the poster + +**why ask:** values tension between social warmth and engagement pressure. community intuition matters more than designer intuition here. + +--- + +## used + +(none yet) diff --git a/model-test.md b/model-test.md new file mode 100644 index 0000000..a0d1f4d --- /dev/null +++ b/model-test.md @@ -0,0 +1,143 @@ +{ +you are helping design the frontend of eutopic — a +photo-first social app for small, invite-only +communities. it runs on flutter (dart). it has five +main screens: home feed, posters (bulletin board), +compose (center tab), stories, and profile. it also +has secondary screens for onboarding, settings, and +feedback. here's specs: + +--- + +## navigation + +five-slot bottom tab bar for screens: + +``` +⒣ home | ⇶ posters | ◲ compose | ❣ stories | ☺ profile +``` + +- **home** — chronological feed +- **posters** — bulletin board (`/posters`, `is_event` posts + informational posts + fundraisers) +- **compose** — center slot, filled/distinct treatment. opens compose flow (modal or full screen — TBD) +- **stories** — dedicated tab, not a top strip. intentional destination, not ambient anxiety ring. +- **profile** — own profile. viewing others' profiles navigates within the app but doesn't change the active tab. + +stories as a bottom tab (vs instagram-style top strip) is a deliberate choice: it frames stories as something you visit, not something that nags you to check. + +--- + +## screens + +### onboarding (unauthenticated) + +``` +invite gate + └── invite code prefilled from deep link, or entered manually +email + username entry +magic link sent / confirm screen +social handle opt-in + └── signal / telegram / custom. skippable. "re-enable anytime in settings." +follow suggestions + └── friends-of-inviter auto-suggested. skippable. +``` + +zero technology decisions for the user. no server picker. no handle explanation. no fediverse vocabulary. + +--- + +### feed (`/`) + +- chronological. no algorithm. no ranked content. +- posts with 1–10 photos (swipeable within the post card). +- reactions inline below each post. +- comments accessible via tap (flat, chronological thread). +- **survey card** injected at slot 1 when an active survey exists. GIF cover. taps to `/feedback`. disappears per-user once responded. not a real post. +- no unread indicators. no "new posts" banner. pull to refresh is fine. + +--- + +### posters (`/posters`) + +formerly "bulletin board". renamed because the scope is broader than events: + +**post types** (single tag, required, choose one): +- `event` — dated gathering, auto-archives 1 day after `event_ends_at` +- `fundraiser` — community fundraising +- `current affairs` — informational, reading, things worth knowing + +layout: 2-column grid (`FlatList numColumns={2}`), infinite scroll, paginated fetch. + +filtering by tag: TBD (tab strip or dropdown above grid). + +reactions on poster posts: visible to post author only. no public counts. no hierarchy. + +RSVP interaction model: open question, not designed yet. see OPEN-QUESTIONS.md. + +--- + +### compose (◲) + +- triggered from center nav slot. +- photo picker first (up to 10 photos). +- caption optional. +- toggle: post to feed or post to posters. if posters: tag picker (single tag required) + event fields if `event`. +- toggle: saveable on/off (default off). +- toggle: reaction set — choose up to 5 emoji, or leave open (open picker only). +- upload starts in background immediately on confirm. progress shown via hand-drawn animation. bad wifi handled invisibly via tus.io resumable upload. +- no drafts, no scheduling, no queue UI. + +--- + +### stories (❣) + +- dedicated tab, not a top strip. +- 10s auto-advance per story. +- filters via swipe gesture (basic, applied at view time or capture time — TBD). +- no replies. "witnessed" metadata only: private per-viewer row, expires with story (24h). +- story author can see flat witness list (like instagram). no public count. +- story creation: camera or photo picker, then post. no drafts. + +--- + +### profile (☺) + +**own profile:** +- avatar, display name, username, bio. +- social handles (signal / telegram / custom) — shown based on `display_social_handle` setting: none / mutuals / all. +- `contact_prefs` free text ("bad texter", "weekends only"). +- own posts grid. +- settings access. + +**others' profiles:** +- same view, minus settings. follow/unfollow action. +- social handles visible per their `display_social_handle` setting. + +--- + +### feedback (`/feedback`) + +- always accessible (settings link or survey card tap). +- active survey renders at top if one exists (multiple choice, 36h expiry). +- permanent free text field below, always present regardless of active survey. +- no results shown to users. dev use only. + +--- + +eutopic has no notifications, no DMs (chat), and no push +alerts. do not include any notification-related files +or widgets. + +use feature-first structure. example: +lib/features/feed/feed_screen.dart +lib/features/feed/widgets/post_card.dart +lib/shared/models/user.dart + +draw an ASCII tree diagram of the flutter frontend +folder and file structure. include lib/ as the root. +show actual filenames (*.dart), not just folder names. +} + +{ +read @AGENTS.md and @docs/ROADMAP.md. given the stack choices and the team size (1-2 people), does the feature scope for v0 and v1 feel right-sized, or is it too ambitious? focus on scope, not timeline. +} \ No newline at end of file