abstract
Skillshare is a peer-to-peer platform in which users exchange knowledge by publishing skill announcements, requesting exchanges, communicating through chat, and reviewing one another. The original application used one server and one MapDB database. This project transforms it into a federated distributed system demonstrated through two local Docker instances, each with independent users and persistent state. Instances exchange domain events through HTTP using JSON representations and identify users as user@instance. Selected data concerning announcements, exchange requests, chat messages, and reviews is replicated asynchronously. Local operations remain available when a peer is unreachable, while a persistent outbox, manual and automatic retries, stable event identiers, and a processed-event inbox ledger support eventual consistency and idempotent handling. Federated chat uses persistent Lamport logical clocks to obtain a causality-compatible deterministic ordering without depending on synchronized physical clocks. Reviews are propagated to the reviewed user's home instance and contribute to local reputation. The prototype therefore provides a concrete study of federation, replication, partial failure, recovery, logical time, and the trade-o between availability and immediate consistency.
outcomes