Update wiki page 'Home'

2026-05-15 15:03:25 +00:00
parent d1520eaa33
commit 5fcb8deaf7

34
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