In consideration for the payment of the Fees by Client, dOrg agrees to provide the Services as specified in, and in accordance with, the provisions set out in the Statement of Work (“SOW”) and the [Standard Terms & Conditions](https://github.com/dOrgTech/Ops/blob/master/legal/Client_Terms_And_Conditions.pdf) (together “Agreement ”).
# Statement of Work: NEAR
This SOW is based on project requirements as currently understood and does not account for changes in scope, additional work, unexpected complexity, extensive revisions, or other delays outside of dOrg's control. dOrg and the Client may revise the SOW by mutual consent of each *Point of Contact*.
## Objective
Specification & development of the Proof of Attendance on NEAR - EventCred.
## Scope of Work
- **Software Architecture** - Translate functional spec into fleshed out requirements doc & roadmap.
- Create User Stories
- Layout Milestones & Tech Specs
- **Frontend** - Basic Frontend to interact with the Mint smart contract.
- **Backend** - API Call/Endpoint that retrieves a list of NFT.
- **Testing** - Tests for backend api endpoints & contracts.
- **Smart Contracts** - Write contracts for mint & airdrop NFT’s.
## Milestones
0 - **Design Sprint**
- Create User Stories
- Layout Milestones & Tech Specs
1 - **Event Manager Backend**
- Write a contract to mint NFT
- Write a contract function that airdrops NFTs to the contacts in a CSV file that includes the name of the attendee, email, wallet address, Yes or No whether they attended the event and how long they attended the event for.
- Write tests for contract functions/actions such as: Mint, Airdrop.
2 - **Event Attendee Frontend**
- UI/Screen where the user will view a list of NFT one given NEAR Account Name user holds.
3 - **Event Manager Frontend**
- UI/Screen for NFT Minting and Airdrop to a specific list of accounts based on the attendees list criteria.
- Users would need to connect the wallet.
4 - **Event Manage & Attendee Backend**
- Write API Call/Endpoint that retrieves a list of NFT one given NEAR Account Name user holds.
- Write API Call/Endpoint that mints NFT tokens to a given list of NEAR Account names.
- Write test for API Endpoints.
## User Stories
- **Event Attendee**
- As a user, I would like to be rewarded and recongnized for attending an Envent/Meetup.
- As a user, I would like to drop my NEAR address so I can receive my reward for attending the event.
- As a user, I would like to view a list of NFT per Events(Meetup) a user has.
- **Event Manager**
- As a user, I would like to mint X amount of NFT based on the attendees list criteria (ie: time spent 30min, attendedEvent? Yes or No)
- As a user, I would like to trigger airdrop NFT awards to people that attend my events.
- As a user, I would like to be rewarded and recongnized for attending an Envent/Meetup.
- As a user, I would like to send an email to let attendees know that they have been awarded an NFT for attending the event.
- As a user, I would like to create the NFT to be awarded for attending my events after the event happens.
## Milestone #4
**Below are all tasks and functionality that involves the completion of milestone 4:**
- Create authentication that ensures only event managers can mint.
- Create event manager functionality through a master account that has the authority to create other event managers.
- Create a service contract function that can add & remove a new event manager to a PersistentSet. (This will make new accounts be able to mint nft).
- Connect backend with a frontend to add new event manager accounts to PersistentSet.
- Create a service contract function for minting the NFT to each corresponding accounts id's from a CSV list.
- Connect backend with frontend mint action.
- Create an endpoint that returns a list of NFT that an account id has.
- Create an endpoint for handling fleek/ipfs storage API secret keys.
- Configure production and testnet contract credentials/private keys thru enviroment variables.
## Quote
The following is an estimate based on the Scope of Work as currently stated and can change if either are revised.
**Term**: April 1st - September 8th, 2021
| Start Date | Milestone | Development | Cost |
| - | - | - | - | - |-|
| April 1st | 0 | 20 hr (prep work) | $0 | **Completed**
| April 26th | 1 | 60 hr | $4,800 | **Completed**
| Jul 5th | 2-3 | 60 hr | $4,800 | **Completed**
| Sep 6th - Sep 27th | 4 | 80 hr | $6,400 |
**Total Budget**: $16,000
USD payments should be made in DAI, USDC, or USDT to (`0x83F04065617949f541E9Ec1C7Ca0104c5FEBFcAf`).
## Accountability & Quality Assurance
dOrg utilizes the following processes to keep all parties accountable in the course of execution:
- *Coordinator* is responsible for keeping the project on track and should be interfaced through for any issues regarding scope, roadmap, risk, payments, etc.
- *Weekly Syncs* to share updates, discuss blockers, and realign priorities.
- *Telegram Chat* for ongoing updates and support
- *Github Project Board* for continuous deliverable tracking
- *Feedback Surveys* with each invoice to continuously identify problems and improve service
In order to assure ensure that all deliverables satisfy project requirements without issue, dOrg:
- Carefully assigns proven builders with the relevant expertise
- Utilizes modern testing frameworks and testnet lifecycle simulation
- Performs internal code reviews before handoff and other key milestones
Despite these efforts, dOrg is not able guarantee that all code will be perfect. Web3 is still an emerging field with a high level of risk and complexity. dOrg is not responsible for any bugs or technical failures that may result from its services. The Client is responsible for consulting with the relevant security experts before taking high risk systems live.
## Intellectual Property
As described in Section 2 of the Terms & Conditions, the Project is designated to be:
- [x] Open Source (s2.1)
- [ ] Proprietary (s2.2)
- [ ] Other:
## Signature & Change Log
| | dOrg | Client |
|-|-|-|
| *Address* | <p> dOrg, LLC </p> <p> 76 St. Paul St, PO Box 369 </p> <p> Burlington, VT 05402 </p> | <p> NEAR Protocol </p> <p> Bahnhofstrasse 20 </p> <p> 6300 Zug, Switzerland </p> |
| *Coordinator* | Hector Garcia | Cameron Dennis |
| *Signature* | | |
| *Date* | 2021-04-12 | |
All changes to the SOW will be tracked below.
|Date| Description |
|-|-|
| 2021-xx-xx | |