> *a small good place. social media that visits you when you visit it.*
## what it is
eutopic is a federation-capable, photo-first social app for small trusted communities. it's a place to post pictures and short stories for friends and friends-of-friends — explicitly not a global network, not algorithmically driven, and not optimized for attention extraction.
the immediate goal is to give a specific community a real alternative to instagram that doesn't ask them to learn the fediverse, pick a server, or understand what activitypub is. it should feel like opening any other app — but without the cruft, surveillance, and dopamine grift of meta's products.
## who it's for
- a small community currently on instagram, with low-to-medium tech literacy
- 70/30 ios/android split
- mostly EU-based, finnish leaning, mixed language preferences
- 5-50 people at launch, growing organically by invite
## what it does (v1)
- **feed** — chronological, no algorithm, posts with up to 10 photos
- **stories** — 10s auto-advance, basic filters via swipe, no replies, 24h expiry
- **profiles** — username, display name, avatar, bio
- **invite-only signup** — magic-link email auth, no passwords
- **community surveys** — adding the possibility of feedback for dev work, unusual for mass social media. shows that we care
## what it explicitly doesn't do (v1)
- **no push notifications** — eutopic doesn't ping you. you visit when you visit.
- **no DMs** — use signal, element, or another tool. for now, profiles include "message me at [telegram/signal/element/matrix handle]". eutopic stays focused on photo-sharing only. defensible posture — "we do one thing, well." mirrors the no-notifications stance.actual dm impl deferred to v2.
- **no analytics or tracking** — none. zero. not even self-hosted.
- **no algorithm** — chronological feed, no ranking, no engagement bait.
3.**transparent costs, donation funded** — single "about" page with real monthly numbers, link to liberapay.
4.**no premium tier, no badges** — donation is private, no class hierarchy in the app.
5.**federation-capable but closed** — built on activitypub via fedify, federation off by default. flag-flippable later without rewrites.
6.**invisibly leftist** — values inform every architectural choice, but never appear on the surface. no manifestos, no political iconography, no "we believe in" claims. people who care about the values recognize them; people who don't just enjoy the product. the architecture is the belief.
single `AGENTS.md` at the eutopic repo root, read by all routed models in front-desk. terse and decision-focused — encodes the locked-in choices (no notifications, federation off, invisibly leftist tone, etc.) so any model invoked produces consistent output.
## architecture decisions
### why fedify from day one with federation off
- avoids painful rewrite later if federation becomes desired
- adds upfront cost is minimal (it's a library, not a protocol implementation)
- data model uses URIs from the start, makes future migration trivial
- can be turned on by config flag without breaking clients
### why no notifications in v1
- biggest single technical simplification (no APNs, FCM, UnifiedPush, device tokens)
- aligns with anti-attention-economy values
- ships v1 weeks faster
- ships with a strong differentiator
- can revisit if/when DMs are added in v2
### why background + resumable uploads
- meta's posting feels instant because uploads are invisible
- "the slowest part of using social media" disappears
- tus protocol is open, multiple implementations
## the meta-migration problem (named)
this community already tried pixelfed and bounced back to instagram. the failure mode wasn't pixelfed's quality — it was the cumulative weight of small decisions: pick a server, understand handles, install a third-party client, deal with federation timeline weirdness. each "wait, what?" is a friction point that compounds.
eutopic's design constraint: **the user should never be asked to understand anything that doesn't have a direct analog in instagram.** no server picker, no handle explanation, no fediverse vocabulary anywhere in the UI. the activitypub layer is invisible.
## onboarding flow (target)
```
1. friend texts you an invite link
2. tap link → app store / play store → install
3. open app, invite code prefilled from deep link
4. enter email + pick username
5. magic link to email → tap → you're in
6. friends-of-the-inviter auto-suggested to follow
7. post your first photo
```
zero decisions about technology. zero "where do you want to live online" questions.
## funding model
a single "about" page (and a settings-page link) with:
- **hosting** ── €X/mo
- **domain** ── €Y/yr
- **apple developer program** ── $99/yr
- **current month** ── covered ✓ / short by €N
- **support eutopic** ── link to liberapay (opens in browser, not in-app purchase)
no donor badges, no public donor list, no "premium tier," no nagging popups. donation is private and doesn't change in-app experience.
## about page tone (target)
a single quiet page. no manifesto, no flags. example phrasing:
- "eutopic is a quiet place for friends to share photos."
- "we don't track you. we don't run ads. we don't sell your data."
- "we don't notify you — visit when you want to."
- "running it costs ~€X/month. donations help cover hosting."
- "made with care in EU."
## the subversive stance (internal value, not surface copy)
eutopic is built on tools the giants gave away — flutter (google), bun (originally seeded by US capital), the npm registry (microsoft), apple's runtime (apple), even activitypub (a w3c spec adopted by what used to be a small twitter alternative). we are using their open work to build something they wouldn't.
this isn't compromise, it's strategy. opensourcing tools is the one good thing big tech does. using those tools against the extraction economy they invented is the entire point. linux ran on intel chips and ate intel's lunch in servers. eutopic runs on flutter and aims to make meta's social graph products less necessary, one community at a time.
- **flutter** (google-maintained) — using google's toolkit, no worse than meta's. dart is a small price for a single codebase that ships real native iOS and android