Update wiki page 'Home'
34
Home.md
34
Home.md
@@ -1,8 +1,24 @@
|
|||||||
# Thoughts
|
# 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.
|
**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
|
## 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. |
|
| 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. |
|
| 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. |
|
| Radical Self-Expression | Profiles support custom CSS for full personalization. |
|
||||||
| Open and Federated | ActivityPub integration is a primary feature (Fediverse citizen). |
|
| Open and Federated | ActivityPub federation is a primary, not secondary, feature. |
|
||||||
| Performance by Default | Lightweight, fast page loads, minimal client-side JS. |
|
|
||||||
| API-First Design | The backend is the core service; the frontend is just the first client. |
|
| API-First Design | The backend is the core service; the frontend is just the first client. |
|
||||||
|
|
||||||
## Stack
|
## Stack
|
||||||
|
|
||||||
| Layer | Technology |
|
| Layer | Technology |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Backend | Rust (Axum) |
|
| Backend | Rust (Axum) — hexagonal architecture |
|
||||||
|
| Event transport | NATS JetStream |
|
||||||
| Frontend | Next.js (SSR) |
|
| Frontend | Next.js (SSR) |
|
||||||
| Database | PostgreSQL |
|
| Database | PostgreSQL 15+ |
|
||||||
| Reverse Proxy | Nginx |
|
| Reverse Proxy | Nginx |
|
||||||
| Deployment | Docker + Docker Compose |
|
| Deployment | Docker + Docker Compose |
|
||||||
|
|
||||||
## Wiki Pages
|
## Wiki Pages
|
||||||
|
|
||||||
- [Architecture](Architecture) — system design, component roles, deployment topology
|
- [Architecture](Architecture) — hexagonal design, crate layout, processes, event system
|
||||||
- [API Reference](API-Reference) — all REST endpoints, auth methods, data models
|
- [API Reference](API-Reference) — REST endpoints, auth, ActivityPub endpoints, data models
|
||||||
- [Database Schema](Database-Schema) — table definitions and relationships
|
- [Database Schema](Database-Schema) — all tables, migrations
|
||||||
- [Development Setup](Development-Setup) — local dev environment instructions
|
- [Development Setup](Development-Setup) — local dev environment
|
||||||
- [Deployment](Deployment) — Docker Compose production setup
|
- [Deployment](Deployment) — Docker Compose production setup
|
||||||
|
|||||||
Reference in New Issue
Block a user