Update wiki page 'Home'
34
Home.md
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
|
||||
|
||||
Reference in New Issue
Block a user