xynap.me — Personal Space Vision¶
Status: Concept (v1.0) | Created: 2026-03-11 Domain: xynap.me | Build: Genesis Framework
Vision¶
xynap.me is a personal digital space with blog character that organically forms a community through link-based sharing. Not a social network — a Personal Network.
Motto
Your space. Your data. Your connections.
Domain Strategy¶
The four xynap domains form a coherent ecosystem:
| Domain | Motto | Target group |
|---|---|---|
| xynap.tech | "What we can do" | B2B, partners, technology showcase |
| xynap.cloud | "Where customers work" | SaaS, business, multi-tenant |
| xynap.me | "My digital space" | B2C, personal, private space |
| xynap.world | "Discover the world" | B2C, public community, discovery |
Hierarchy: .me → .world¶
xynap.me xynap.world
┌──────────────────┐ ┌──────────────────────────┐
│ PRIVATE │ │ PUBLIC │
│ My Space │ ──────► │ The World │
│ My Blog │ public │ All public posts │
│ My Files │ content │ Topic hubs │
│ My Links │ flows │ Trending (curated) │
│ │ into │ Regional communities │
│ max.xynap.me │ │ Events & groups │
└──────────────────┘ └──────────────────────────┘
Basis (every user) Aggregation (opt-in)
xynap.me = You write, share, control — everything private by default. xynap.world = If you choose, make content public → appears on xynap.world.
No obligation to go public. xynap.me works completely without xynap.world.
Differentiation¶
| Platform | Problem | xynap.me Solution |
|---|---|---|
| Algorithm, ads, data abuse | No algorithm, no ads, own data | |
| Medium | Platform owns content, paywall | You own your content, no vendor lock-in |
| WordPress | Isolated, no social layer | Federated networking between spaces |
| Tumblr | Outdated, chaotic | Modern UX, structured content |
| Mastodon | Technical, fragmented | Simple like Instagram, open like Mastodon |
Core Concepts¶
1. Everything private by default¶
Every piece of content is private until the owner shares it. Three visibility levels:
| Level | Meaning |
|---|---|
| Private | Only you can see it |
| Via Link | Anyone with the link can see it |
| Public | Anyone can find and read it |
2. Link-based Sharing¶
Create content → Click "Share" → Generate link → Send
│
▼
Options:
- Expiry date (24h, 7d, 30d, unlimited)
- Password protection
- Access limit (max N views)
- Permission (read / edit)
Delivery: Copy-paste, email, QR code, direct message. No account needed to view — only required to share/comment.
3. Connections (not followers)¶
Max shares album with Lisa (via link)
→ Lisa sees album
→ Lisa has xynap.me account → "Suggest connection"
→ Max confirms → Mutual connection
→ Both see each other's updates in feed
- No one-way following — connections are always mutual
- No follower count — quality over quantity
- Connection types: Friend, family, colleague, acquaintance
4. Blog & Posts¶
Every space is simultaneously a blog:
| Element | Description |
|---|---|
| Post | Text + images + files, Markdown editor, tags |
| Collection | Grouped posts (recipes, travels, projects) |
| Page | Static page (about me, contact, imprint) |
| Gallery | Photo/video album |
| File | Individual file for download |
Editor: Rich-text (Tiptap/ProseMirror), Markdown mode, drag & drop for media.
5. Community through networking¶
Individual space
↓ Share via link
Connection between two spaces
↓ Comments, reactions
Small community
↓ Topic tags, explore page
Organically growing community
Comments are federated: When Lisa comments on Max's post, the comment appears for BOTH.
No central timeline — everyone only sees updates from their connections, sorted chronologically.
6. Reactions (minimal)¶
| Reaction | Meaning |
|---|---|
| Heart | Like |
| Comment | Reply |
| Link | Shared/Linked |
| Pin | Saved/Bookmarked |
No emoji flood, no angry reacts — intentionally reduced.
URL Schema¶
xynap.me → Landing page + registration
xynap.me/explore → Discover public spaces
max.xynap.me → Max's personal space (homepage/profile)
max.xynap.me/japan-trip → A blog post
max.xynap.me/recipes → A collection
max.xynap.me/s/abc123 → Shared content (link-based)
max.xynap.me/calendar → Personal calendar
max.xynap.me/files → Personal cloud storage
Technical Architecture¶
Base: Extend xynap Platform¶
xynap.me builds on the existing platform infrastructure:
┌─────────────────────────────────────────────┐
│ xynap.me │
│ (Vue 3 SPA + custom API) │
├─────────────────────────────────────────────┤
│ Platform API (FastAPI) │
│ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Spaces │ │ Posts │ │ Connections │ │
│ │ Module │ │ Module │ │ Module │ │
│ └─────────┘ └──────────┘ └──────────────┘ │
│ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Sharing │ │ Comments │ │ ActivityPub │ │
│ │ Module │ │ Module │ │ Federation │ │
│ └─────────┘ └──────────┘ └──────────────┘ │
├─────────────────────────────────────────────┤
│ Existing Infrastructure │
│ Auth │ Files │ CalDAV │ CardDAV │ Mail │
└─────────────────────────────────────────────┘
Backend Modules (FastAPI)¶
app/core/spaces/ — Space, SpaceMember, SpaceSettings
app/core/posts/ — Post, PostMedia, PostTag, Collection, Markdown rendering
app/core/social/ — Connection, Reaction, Comment, Feed aggregation
app/core/sharing/ — ShareLink, Token generation, expiry logic
app/core/federation/ — ActivityPub, WebFinger (Phase 2+)
Frontend (Vue 3 SPA)¶
/usr/local/xynap/me/frontend/src/
├── views/ — Landing, Explore, Feed, Space, Post, Editor, Gallery, Settings
├── components/ — space/, post/, social/, sharing/, layout/
├── composables/ — useSpace, useFeed, useEditor, useSharing, useConnections
├── stores/ — space, feed, me (Pinia)
└── i18n/ — de.json, en.json
Data Model (Core Tables)¶
| Table | Purpose |
|---|---|
spaces |
Personal areas (slug → subdomain) |
posts |
Posts with Markdown, visibility, tags |
collections |
Grouped posts |
post_media |
Images, videos, files |
connections |
Mutual connections |
comments |
Federated comments |
reactions |
Heart, bookmark, share |
share_links |
Link-based sharing with token |
feed_entries |
Materialized feed for fast queries |
API Endpoints¶
# Spaces
GET/POST /api/v1/me/spaces — Load/create own space
PUT /api/v1/me/spaces/{id} — Edit space
GET /api/v1/me/spaces/{slug} — Load public space
# Posts
GET/POST /api/v1/me/posts — Posts CRUD
GET/PUT/DEL /api/v1/me/posts/{slug} — Single post
# Feed + Social
GET /api/v1/me/feed — Personal feed (paginated)
GET/POST /api/v1/me/connections — Connections
POST /api/v1/me/posts/{id}/reactions — Reactions
GET/POST /api/v1/me/posts/{id}/comments — Comments
# Sharing
POST /api/v1/me/share — Create share link
GET /api/v1/me/share/{token} — Load shared content
# Explore + Media
GET /api/v1/me/explore — Public spaces/posts
POST /api/v1/me/media/upload — Upload file
Milestones¶
Phase 1: Foundation (Space + Blog)¶
| Milestone | Content |
|---|---|
| M1: Space Scaffolding | Space Model + CRUD API, SpaceView, subdomain routing, DNS wildcard + cert, auth |
| M2: Blog System | Post Model + Markdown rendering, PostEditor (Tiptap), collections, media upload, visibility levels |
| M3: Share Links | ShareLink Model + token, ShareDialog, password protection, expiry, public SharedView |
Phase 2: Community¶
| Milestone | Content |
|---|---|
| M4: Connections | Connection Model, ConnectionsView, connection types |
| M5: Feed + Interaction | Feed aggregation, reactions, comments, push notifications |
| M6: Explore + Discovery | Public search, tag system, SEO (SSR) |
Phase 3: Integration¶
| Milestone | Content |
|---|---|
| M7: Cloud Integration | Files tab (WebDAV), calendar tab (CalDAV), contacts (CardDAV) |
| M8: Federation | ActivityPub, WebFinger, Mastodon compatible, RSS feed per space |
Existing Infrastructure (reuse)¶
| Component | Use for xynap.me |
|---|---|
| Auth (JWT + 2FA) | Login, session |
| File Storage (WebDAV) | Files tab, media upload |
| CalDAV / CardDAV | Calendar tab, contacts |
| Mail (Postfix/Dovecot) | Notifications, invitations |
| Event Bus | Push notifications |
| Comm Hub | Chat/messages between spaces |
| RBAC + Scoping | Permissions, multi-tenancy |
| i18n (de + en) | Multilingual UI |
| CrowdSec + Traefik | DDoS protection, rate limiting |
GDPR & Security¶
Privacy by Design
All data belongs to the user. No tracking, no analytics, no external CDNs.
| Principle | Implementation |
|---|---|
| Data minimization | Only necessary data: name, email, content |
| Data portability | Full export as ZIP (posts, media, comments) |
| Right to deletion | Delete space = ALL data irrevocably deleted |
| No external dependencies | All assets local, no Google Fonts, no CDN |
| Legal notice requirement | Public spaces → imprint + privacy policy mandatory |
| Security measure | Details |
|---|---|
| Content sanitization | Server-side DOMPurify, no raw HTML |
| Rate limiting | Posts: 10/h, comments: 50/h, uploads: 100MB/h |
| Spam protection | 24h cooldown for new accounts, reporting system |
| Share link tokens | 32 characters, cryptographically random |
| Audit trail | All relevant actions logged |
Design Principles¶
- Simplicity — If grandma doesn't understand it, it's too complex
- Privacy — Everything private by default, share consciously
- No metrics — No follower count, no public like numbers
- Chronological — No algorithm, newest first
- Federated — No walled garden, ActivityPub compatible
- Data sovereignty — Export anytime, deletion complete
- No vendor lock-in — Open standards (RSS, ActivityPub, WebDAV)