> [!TIP] > Haskell bindings supported!: [Bindings documentaton](https://p2prc.akilan.io/Docs/haskell/P2PRC.html) > [!NOTE] > Fixing documentation to latest changes. If you have any questions setting up P2PRC either [create an issue](https://github.com/Akilan1999/p2p-rendering-computation/issues/new/choose) or send me an email (me AT akilan dot io). > Currently HEAD is always intended to stay on a working state. It is recommended to always use HEAD in your go.mod file.


p2prc

GPLv2 license Maintenance made-with-Go GoDoc reference example
This project aims to simplify self-hosting servers and streamline the creation of distributed systems. The primary focus is to enable users to design custom peer-to-peer networks for distributed computing, offering full flexibility and control while abstracting away the complexities of networking. ## Key Features Simplified Self-Hosting Empower users to easily host nodes, whether on personal computers behind NAT, custom hardware, or cloud-based infrastructure. ### Custom Peer-to-Peer Networks Build a decentralised network tailored to user requirements, enabling distributed task execution without the need for in-depth networking knowledge. ### Heterogeneous Node Support Harness a diverse array of nodes—from personal computers to specialised hardware—seamlessly integrated into a global node list. ### Abstracted Networking Layer Networking details are completely abstracted, enabling users to focus on developing bespoke task orchestration systems. No more manual configuration of IPs, ports, or connection logic. ### Flexible Task Distribution Users acting as clients retain full control over how tasks are batched and assigned to nodes, creating endless possibilities for optimising performance based on specific use cases. ## Latest tutorial [![IMAGE ALT TEXT](https://i.ytimg.com/vi/OMwCpedu5cs/hqdefault.jpg)](https://www.youtube.com/watch?v=OMwCpedu5cs")


## Introduction This project aims to create a peer to peer (p2p) network, where a user can use the p2p network to act as a client (i.e sending tasks) or the server (i.e executing the tasks). A prototype application will be developed, which comes bundled with a p2p module and possible to execute docker containers or virtual environments across selected nodes. ### Objectives - Background review on peer to peer network, virtual environments, decentralized rendering tools and tools to batch any sort of tasks. - Creating p2p network - Server to create a containerised environment - The client node to run tasks on Server containerised node [Read more on the introduction](Docs/Introduction.md)
## Extend your application with P2PRC ```go package main import ( "fmt" "github.com/Akilan1999/p2p-rendering-computation/abstractions" ) func main() { _, err := abstractions.Init(nil) if err != nil { fmt.Println(err) return } // start p2prc _, err = abstractions.Start() if err != nil { fmt.Println(err) return } // Run server till termination for { } } ``` ## Find out more As we are working on the open source project p2prc (i.e p2p network designed for computation).If you are interested in participating as a contributor or just providing feedback on new features to build or even just curious about new features added to the project. We have decided to create a discord group. [![Support Server](https://discordapp.com/api/guilds/854397492795277322/widget.png?style=banner2)](https://discord.gg/b4nRGTjYqy) [![Star History Chart](https://api.star-history.com/svg?repos=Akilan1999/p2p-rendering-computation&type=Date)](https://github.com/Gaurav-Gosain)