An distrubuted computing platform. People can share their CPU and GPU power to help with tasks requiring heavy load. * Task creators can upload their tasks to the platform * Task executors can contribute to the tasks through primarly the web browser, but also CLI tool or windowed application
-
Planning phase
- Check how to do computations in the browser
- create sandboxed environment and run given code there
- In future check how to do it with GPU
- Check how to break big tasks into smaller ones, so they can be shared
- Basically the task creator will write JS code which will be executed in the user's browser
- Create graph of the project
- Check how to do computations in the browser
-
Frontend
- Create basic website UI (purely functional)
- Part for adding new tasks
- Part for viewing tasks and selecting them
- executing of tasks
- viewing results of tasks
- make them call the server
- Create basic website UI (purely functional)
-
Backend
- Create basic website backend
- Make API for adding tasks and add them (temporarily) to map in memory
- Make API for getting all tasks
- Make API for receiving results of tasks
- Make API for seeing results of tasks
- Create basic website backend
-
Database
- Create database
- Make it possible to add tasks to the database
- Make it possible to get tasks from the database
- Consider tasks that have the same name. Should title be primary key or something else?
- Make it possible to add results of tasks to the database
- Make it possible to get results of tasks from the database
- Change varchars(n) to text as in postgres it is more efficient
- Create database
-
User system
* Make it possible to see the results of the tasks as an author
- Possibly task creators could pay for the task execution. The payment would be split between the task executors.
- Create an API for using the platform outside the browser
- Add possiblity to use other languages than JS
- Add possiblity to use GPU for computations
- Add possibility to use the internet for verified task creators