I am a C# programmer who publishes and promotes a .NET tarot program via the internet in my spare time.
I want to build in a P2P component to facilitate file sharing between users of this program. The program lets users design and create their own tarot decks to use with the program and this would be a way to let them share their creations with other users.
I am looking for help and advice from someone who has experience in P2P architecture and programming. The client would be developed as a stand alone app, which I would then wire into the tarot program.
I would envisage it being a pure-ish p2p network, perhaps using a server to inform peers of the network addresses of other peers, but with indexing of files done on client nodes in the form of a structured network maintaining a distributed hash table. The project would also involve development of any server component. Client anonymity would be desirable too, but the details would be open to discussing following a review of potential benefits/drawbacks.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
The program needs to be written in C# so I can maintain it, and run on the .NET Framework 2.0.