This is an old revision of the document!
In order to keep your momentum going, we're proposing you the following project.
For your project, you have to implement a simple Peer-To-Peer File Sharing service that provides a REST API. Your service will keep a list of the files that he shares and their corresponding MD5 hash. A peer can ask the service to provide a chunk from a given file, the rationale being that it can ask different chunks of the same file from different peers in order to rebuild the original, thus maximizing the throughput. In a similar manner, your service can download files from other peers.
A simple example flow would be:
You are required to use the vibe.d framework, as this will make the development process sweet and simple. vibe.d provides a toolkit for doing asynchronous I/O in a familiar and natural procedural style. It combines the intuitive and efficient programming style of synchronous I/O with the scalability of asynchronous I/O.
Your service must provide the following capabilities: