Create Job / Task / Project
Authenticate
Navigate to Create Form
Fields= TODO
Type - Task / Job / Project
Description
First man gets the job / accept applications
Compensation - released at end / released at each period (1w)
Required Stake.
Timeframe / Steps
TODO: we need examples as much as possible
Completion Criteria.
All steps to be completed
Form Submitted
Lock initial amount in contract (for 1st week ?)
Job details get hosted on IPFS (immutable)
IPFS link gets saved on-chain.
Stake & Start Work
Browse through a list of Jobs (with filters etc)
Jobs stored in a Ceramic stream.
UI queries jobs as a GraphQL request ?
Choose then Stake & Start
Stake amount stored in contract (in jobs mapping struct)
First Step gets completed.
UI for dev to "submit work"
UI for provider to "review & verify"
Verified by provider
1st payment gets released & small state changes.
Final step gets completed
Return stake.
Send compensation.
Get % for protocol (us).
Dispute Resolutions
At any step the Provider can decline the submitted work with feedback (gets recorded on ipfs).
TODO: research how to integrate Kleros.
Considerations:
We might want to create a separate "Vault" contract with minimal logic that'll keep all the funds.
Each time a new JobContract is finalized (aka dev gets accepted) we can deploy a new Smart Contract with the whole logic encapsulated inside.
Why ? → this way we'll give up the ownership & it will be truly trustless.
Too much gas ? → we can use CREATE2 op-code to pre-calculate the address and deploy only if the first step of the JobContract gets completed.