Many people want to have their files available on multiple devices and want seamless file synchronization across them. For various reasons, they might not want to rely on centralized cloud services and want to have their files available while offline. This introduces distributed systems challenges like concurrent edits. In this project, you will build a decentralized, peer-to-peer file synchronization tool similar to Syncthing. To guarantee that all devices eventually agree on the same version of the files, you will rely on techniques used by Conflict-free Replicated Data Types (CRDTs). As part of this you will explore alternative conflict-resolution techniques, e.g. merging concurrently edited text files instead of only keeping one or renaming files in case of conflicts.