From 5fcb8deaf7cb3094b14677d56f1cb2a9de1619ae Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Fri, 15 May 2026 15:03:25 +0000 Subject: [PATCH] Update wiki page 'Home' --- Home.md | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/Home.md b/Home.md index c0bed66..cc7ea58 100644 --- a/Home.md +++ b/Home.md @@ -1,8 +1,24 @@ # Thoughts +A self-hosted microblogging server with full ActivityPub federation. Write short posts, follow people on Mastodon and other Fediverse servers, and receive their posts in your feed. Built in Rust with a Next.js frontend. + **Tagline:** Your Space, Your Friends, Your Feed. -Thoughts is a decentralized social media platform focused on genuine user connection and creative self-expression. It is a deliberate departure from algorithm-driven feeds and corporate-controlled online spaces — a digital "third place" reminiscent of the early internet. +## Features + +- Short-form posts ("thoughts") with replies, boosts, and likes +- Full ActivityPub federation — follow/unfollow remote actors, accept/reject followers, federated content broadcast as `Note` objects, paginated outbox, NodeInfo discovery, WebFinger, shared inbox, actor profile sync +- **Remote actor discovery** — search by `@user@instance` handle, view full remote profiles (bio, banner, profile fields, posts, followers, following tabs), follow from within the UI +- **Worker-backed remote caches** — remote posts and follower/following lists are fetched by the NATS worker and cached locally; profiles populate on first visit and refresh in the background +- Content negotiation at `GET /users/{username}` — serves ActivityPub actor JSON or REST profile based on `Accept` header +- Federation moderation — per-instance domain blocking, per-user actor blocking with `Block` activity delivery +- Async event fan-out via NATS JetStream — notifications and AP delivery run in a separate worker process +- JWT authentication (Bearer token) and long-lived API keys +- OpenAPI docs at `/docs` (Swagger UI) and `/scalar` (Scalar) +- Full-text search over thoughts and users via PostgreSQL trigram indexes +- Top friends — pin up to 5 users as highlighted contacts +- Home feed, public feed, and per-user thought timelines +- Notifications ## Guiding Principles @@ -11,24 +27,24 @@ Thoughts is a decentralized social media platform focused on genuine user connec | Chronological Above All | The main feed is always reverse-chronological. No algorithmic sorting. | | User in Control | Users decide what they see by choosing who to follow. No suggestions. | | Radical Self-Expression | Profiles support custom CSS for full personalization. | -| Open and Federated | ActivityPub integration is a primary feature (Fediverse citizen). | -| Performance by Default | Lightweight, fast page loads, minimal client-side JS. | +| Open and Federated | ActivityPub federation is a primary, not secondary, feature. | | API-First Design | The backend is the core service; the frontend is just the first client. | ## Stack | Layer | Technology | |---|---| -| Backend | Rust (Axum) | +| Backend | Rust (Axum) — hexagonal architecture | +| Event transport | NATS JetStream | | Frontend | Next.js (SSR) | -| Database | PostgreSQL | +| Database | PostgreSQL 15+ | | Reverse Proxy | Nginx | | Deployment | Docker + Docker Compose | ## Wiki Pages -- [Architecture](Architecture) — system design, component roles, deployment topology -- [API Reference](API-Reference) — all REST endpoints, auth methods, data models -- [Database Schema](Database-Schema) — table definitions and relationships -- [Development Setup](Development-Setup) — local dev environment instructions +- [Architecture](Architecture) — hexagonal design, crate layout, processes, event system +- [API Reference](API-Reference) — REST endpoints, auth, ActivityPub endpoints, data models +- [Database Schema](Database-Schema) — all tables, migrations +- [Development Setup](Development-Setup) — local dev environment - [Deployment](Deployment) — Docker Compose production setup