Skip to content

Commit

Permalink
Temp/release prep (#62) (#64)
Browse files Browse the repository at this point in the history
* add build-and-test github action

* add test server heroku deploy

* update action names

* add pull request step for autodeploy

* add changelog file

* reference heroku api key

* NextJS scaffolding to get the project started. (#10)

* Update README.md

* Scaffolding for initial project

* Lint fixes

* update deps and add jest unit

* remove extra deploy step

* move test to separate dir

Co-authored-by: John <50239591+Icedcool@users.noreply.github.com>
Co-authored-by: Brian Patino <patinobrian@gmail.com>

* Update README.md (#11)

Co-authored-by: John <50239591+Icedcool@users.noreply.github.com>

* add mongo directory and bboard_v1.json and update readme

* update bountyCriteria field, remove publicAddress, and add bountyImage

* Feature/mongo db integration (#14)

* add environment files

* add GET bountie API

* fix linting issues

* remove push github action

* update heroku api key

* add secret env

* update secrets

* add changelog entry

* Feature/escrow contract (#15)

* Update README.md

* v0.1.0 escrow contract

* gitignore merge

* configure yarn workspaces

* fix yarn lint command

Co-authored-by: John <50239591+Icedcool@users.noreply.github.com>
Co-authored-by: João Henrique Costa <28352619+joaoh9@users.noreply.github.com>
Co-authored-by: Brian Patino <patinobrian@gmail.com>

* Issue-12:added uuid dependency for Bounty Resource Number creation (#13)

* Issue-12:added uuid dependency for Bounty Resource Number creation

* fix yarn.lock file

Co-authored-by: Brian Patino <patinobrian@gmail.com>

* Feature/netlify integration (#23)

* add .toml to react-app

* remove .github actions

* add mongodb-client-encryption

* add netlify status badge

* add netlify and nextjs build configs

* add bboard_v2.json withh mock data (#24)

* add bboard_v2.json withh mock data

* update CHANGELOG.md with description of mock json data

* update changelog

Co-authored-by: Brian Patino <patinobrian@gmail.com>

* update data model to separate dao member from bounty card

* add schema validation for mongo database with validation.js file

* update validation.js to validate bountyCard schema for primary key fields

* remove bounty from key fields of bboard_v3.json and validation.js

* Feature/documentation readme update (#44)

* update README.md with project overview, mvp description, and guidance for users

* update creating a bounty section in readme

* Front end mvp (#28)

* Bounty board front end mvp

* Fix node version error for deploy

* Adding back eslintconfig in package.json

* Fix for yarn version

* reward option type fix

* Configuring husky, close #38

* Making status optional for now

* Updated [id]/index to display correct fields, and updated mongoose validation to be consistent with consense validation fields

* Added [id]/edit conditional render to block edits on bounties that are not in draft state

* refactored previous commit to be logically cleaner by using toLowerCase instead of explicitly checking cases

* Small fix for default yarn lint command

* Updating husky pre-commit

* updated schema validation rules to be consistent with specification, plus requiring the status field. refactored variable names to pull from the correct form variable

* Added bounty.status state permissions to delete permissions in [id]/index. Created 400 error page

* Updating types and params

* Updating bounty type

* First attempt at single bounty filter

* Refactored single bounty view

* Starting filter and draft editing

* Removing POST because it is out of scope

* Yarn lock for react hook form

* Change of schema from date to string

Co-authored-by: Behold <Behold.3th@gmail.com>

* fix netlify deployment (#50)

* Initial chakra form implementation

* Troubleshooting the issue with mongo

* Troubleshooting the issue with mongo

* Bounty form styling and api refactoring

* Cleanup and removing features not needed in MVP

* Updating bounty schema

* Fixing missing package after merge

* Form refactoring to use scale

* Bounty props refactor and discord claim linking

* add final bounties schema (#41)

* add final bounties schema

* update final.json according to final_validation.js

* adjust to double value

* address review comments

* add postinstall step and remove 'guild' from 'guildName'

* add postinstall step for husky

* add precision field

* change to scale

* update to int

* Feature/degen integration sync (#52)

* add webhook integration

* add build for qa env file

* try different build

* add root build:qa script

* remove mongodb url credentials

* manually add configs

* move bounty publish to api

* remove api console log

* wait for publish bounty to finish

* feature/54 refactored ? Get Help to Need Help? on buttons below filter

* Added link functionality to Need Help? and Give us Feedback buttons in index.tsx under filter

* feature/54: Removed use of anchor tag in ColorModeButton due to breaking change and refactored to wrap component in Filter/index.tsx with an accessible link. Refactored prev discord info work

* Feature/54 netlify failed on linting error due to unused import. removed

* Feature/allow open bounty edit (#57)

* Feature/enhance toml env config (#58)

* fix webhook post and add conditional logging

* small fine tunning

* Feature/53 Pagination (#59)

* Implemented scrappy client side pagination. Button logic needs updating, as does button styling

* feature/53: fixed buggy next page and previous page logic. Implemented an API route to get # bounties in the collection

* feature/53: refactored onClick methods. Attempted to wire in Chakra, couldn't get onClick to fire.

* feature/53: implemented chakra styling over html buttons w Zberwaldt !

* feature/53 hand merged in Oktal's refactoring of paginated bounties to make it a child component of Bounties and the use of Button rather than chakra.button. refactored math

* update readme documentation with ux flow, and updated bot commands. (#51)

* update readme documentation with ux flow, and work-in-prog update on bot commands

* update README.md to change User Experience Flow and Bot Commands as suggested

* add frontend flow to match bot/discord commands in README.md, link to Bounty Board Workflow Notion Page

Co-authored-by: Brian <patinobrian@gmail.com>

* Final front end tweaks (#61)

* add prod details

* Fix buttons missing once filters was removed (#63)

* Fix buttons missing

* Made buttons target new tab

* Made buttons target new tab

Co-authored-by: Oktal <81541283+Oktalize@users.noreply.github.com>
Co-authored-by: John <50239591+Icedcool@users.noreply.github.com>
Co-authored-by: paulapivat <paul.apivat@gmail.com>
Co-authored-by: João Henrique Costa <joaoh9@pm.me>
Co-authored-by: João Henrique Costa <28352619+joaoh9@users.noreply.github.com>
Co-authored-by: Behold3th <85538143+Behold3th@users.noreply.github.com>
Co-authored-by: @PaulApivat <4058461+PaulApivat@users.noreply.github.com>
Co-authored-by: Behold <Behold.3th@gmail.com>
Co-authored-by: Oktalize <oxta@protonmail.com>

Co-authored-by: Oktal <81541283+Oktalize@users.noreply.github.com>
Co-authored-by: John <50239591+Icedcool@users.noreply.github.com>
Co-authored-by: paulapivat <paul.apivat@gmail.com>
Co-authored-by: João Henrique Costa <joaoh9@pm.me>
Co-authored-by: João Henrique Costa <28352619+joaoh9@users.noreply.github.com>
Co-authored-by: Behold3th <85538143+Behold3th@users.noreply.github.com>
Co-authored-by: @PaulApivat <4058461+PaulApivat@users.noreply.github.com>
Co-authored-by: Behold <Behold.3th@gmail.com>
Co-authored-by: Oktalize <oxta@protonmail.com>
  • Loading branch information
10 people authored Aug 13, 2021
1 parent 0f64e3c commit 3bf68b8
Show file tree
Hide file tree
Showing 68 changed files with 18,542 additions and 551 deletions.
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
34 changes: 28 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,17 +68,12 @@ typings/
# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test
.env.qa
.env.prod

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
Expand Down Expand Up @@ -110,3 +105,30 @@ dist
*.iws
*.iml
*.ipr

# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env*.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

package-lock.json
contracts/coverage.json
contracts/build

# Local Netlify folder
.netlify
4 changes: 4 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

yarn workspace @bounty-board/react-app lint-staged
78 changes: 77 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,88 @@
# DAO Bounty Board

[![Netlify Status](https://api.netlify.com/api/v1/badges/8e12fc34-94a3-4c7a-8323-fc2b7e1d4d14/deploy-status)](https://app.netlify.com/sites/bounty-board-29081e/deploys)

Project Page:
https://www.notion.so/bankless/Bounty-Board-318dc164cc5640cca17e0fb5f484fd90


### Specifications:

- [Specs page](https://docs.google.com/document/d/1VJXin9Uoqt54JjfQEtyM11XESb2l4C1SSAzgc0kvxIs/edit?usp=sharing)
- [Figma](https://www.figma.com/file/venmq7OWr8iRsjR9ecttvc/Untitled?node-id=1%3A7)
- [Whimsical](https://whimsical.com/bounty-board-design-bankless-2cPEEZinYKJ2zE2Zvq7iAZ)
- [Heroku](https://bounty-board.herokuapp.com/)
- [Possible Queries](https://www.notion.so/Bounty-Board-Queries-33d03a4330454e67b8194aa86274ec34)
- [Data Fields](https://docs.google.com/document/d/10jgHxEpkPlArGlsQH1g22utFrAFh2lK-fbXjbq8KkuU/edit)
- [Personas](https://www.notion.so/Bounty-Board-Personas-8e8f2789775a445c82d13c2a9c545185)
- [Bot flowchart](https://media.discordapp.net/attachments/852736763205910538/857786834682511370/image0.jpg?width=978&height=683)

# Project Overview

## Problem

Currently, Bankless DAO bounties are not in a centralized location causing confusion and makes it challenging for members, new and old, to contribute. Also Level 0's do not have intuitive ways to get involved and earn $BANK other than buying in the secondary markets.

## Solution

For the DAO to grow, we need a way to attract, retain and coordinate talent. The bounty board, accessible to members and non-members will connect the DAO to a continually expanding talent pool.

In addition, we need a way to codify meaningful units of work. Given the diversity of jobs to be done in a DAO, the bounty board allows bounty _creators_ to define and specify the scope of tasks along with expected deliverables.

Finally, we need a way to formalize the flow of capital, beyond an informal, organic tipping culture that exists to formally recognize contributors for their knowledge, skills and abilities.

The bounty board will be a key mechanism for coordinating talent, tasks and capital.

## Minimal Viable Product 1.0

### Bounty Card Definition

For the MVP, we are focusing on the bare requirements for a Bounty Card to be created by a user via DEGEN and/or Frontend UI, with the following key fields:

- **Title**: Bounty Titles should be like headlines
- **Description**: Provides space to flesh out the scope, deliverables and timeline for the bounty.
- **Criteria**: When is a task considered "done" or "complete"?
- **Reward**: Bounty creator indicates `amount` (i.e., 10000) and `currency` (i.e., $BANK) to be paid for completing the work.
- **HashId**: Auto-generated ID for each bounty.
- **CreatedBy / RequestedBy**: Bot automatically enters bounty creator's `discordHandle`.
- **ClaimedBy**: Bot automatially notes `discordHandle` claiming the bounty.
- **SubmittedBy**: Bot automatically notes `discordHandle` submitting the bounty.

#### User Experience Flow: Bot in Discord

The User Experience flow with accompanying bounty status is as follows:

1. **Draft**: Bounty creator creates new bounty with `/bounty create new`; status is now "Draft" and _not_ shown in Discord. Bounty creator must publish the bounty before it is available to the public.
2. **Publish/Open**: Bounty creator clicks thumbs up emoji 👍 or `/bounty create publish` in Discord, bounty published to #🧀-bounty-board channel and website (url provided); status is now _Open_ on website.
3. **Claim/In Progress**: Within #🧀-bounty-board Bounty _claimer_ click black flag 🏴 or `/bounty claim` to 'start', card changes color in Discord, Bounty creator receives message that bounty has been claimed; Bounty card on website now has _Claimed By_; card status is now "In Progress".
4. **Submit/In Review**: Bounty claimer hits red mail box emoji 📮 in Discord, receives auto-generated message from Bot indicating "bounty in review". The creator of the bounty is notified that the bounty is ready for review. They should reach out to the claimee. Alternatively, user can submit directly through a new bot command `/bounty submit`, entering `HashId`; card status is now "In Review".
5. **Complete/Completed**: Bounty claimer can signal completion ✅ on the post in the #🧀-bounty-board channel or directly through a new bot command `/bounty complete true`; card status is now "Completed".

#### Bot Commands

1. Within The Bankless Bot Garage, head to #spam-tastic
2. Enter `/` and see a list of Bots pop up, choose `SERENDIPITY MK-I`

The following commands are available for Serendipity MK-I:

/bounty create new
/bounty create publish
/bounty claim
/bounty complete
/bounty list
/bounty delete
/bounty submit

Refer to the [Bounty Board Commands and Workflow](https://bankless.notion.site/The-Bounty-Board-Commands-and-Workflow-7f15bbc3f2c744afab1cb5f90daac4a2) Notion Page for in-depth details.

#### User Experience Flow: Frontend

**Note**: Currently, the frontend mirrors the interaction with the Bot in discord and displays changes in card status. Both Discord/Bot actions and Frontend Statuses are displayed below:

1. **Discord/Bot: Draft**: Bounty creator creates new bounty with `/bounty create new`; status is now "Draft" and _not_ shown in Discord. Bounty creator must publish the bounty before it is available on the frontend.
2. **Frontend Status: Open**: Bounty creator clicks thumbs up emoji 👍 or `/bounty create publish` in Discord, bounty published to #🧀-bounty-board channel and website (url provided); status is now _Open_ on the frontend.
3. **Discord/Bot: Claim**: Now that a bounty card is _Open_, we can click "Claim It".
4. **Frontend Status: In Progress**: Within #🧀-bounty-board Bounty click black flag 🏴 or `/bounty claim` to 'claim'. A link back to the frontend shows card status as "In Progress" and "Claimed By" claimer's discord handle.
5. **Discord/Bot: Submit**: Bounty claimer hits red mail box emoji 📮 in Discord, receives auto-generated message from Bot indicating "bounty in review".
6. **Frontend Status: In Review**: Card status on the frontend is "In Review".
7. **Discord/Bot: Complete**: Bounty claimer can signal completion ✅ on the post in the #🧀-bounty-board channel. Bounty creator receives message to tip bounty completer.
8. **Frontend Status: Completed**: Work is done.
87 changes: 87 additions & 0 deletions mongo/bounties/bboard_final.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
[
{
"_id": "60f6585b453e70eed340e8e3",
"season": 1,
"title": "Make new website landing page",
"description": "Description for new website landing page with specs",
"criteria": "A completed bounty has the following deliverables...",
"reward": {
"currency": "BANK",
"amount": 10000,
"precision": 2
},
"applicableGuilds": [
{
"name": "Developers",
"id": "60f6585b453e70eed340e8e3"
},
{
"name": "Marketing Guild",
"id": "60f6585b453e70eed340e8e3"
}
],
"createdBy": {
"isDaoMember": true,
"guildName": "Analytics Guild",
"discordHandle": "paul#8888",
"discordId": "324439902343239764"
},
"createdAt": "2021-07-20T06:40:56.112Z",
"dueAt": "2021-07-20T06:42:28.853Z",
"activatedAt": "2021-07-20T06:44:33.858Z",
"claimedBy": [
{
"isDaoMember": false,
"guildName": null,
"discordHandle": "rick#5555",
"discordId": "324423432343239764"
}
],
"claimedAt": "2021-07-20T07:00:31.166Z",
"completedAt": "2021-07-20T07:00:31.166Z",
"submissionUrl": "https://example.org/rels/v1/bounty_submission",
"submissionNotes": "it took me a long time to work on this bounty",
"status": "Draft",
"statusHistory": [
{
"status": "Open",
"modifiedAt": "2021-07-20T07:00:31.166Z"
},
{
"status": "Draft",
"modifiedAt": "2021-07-20T07:00:31.166Z"
},
{
"status": "In-Progress",
"modifiedAt": "2021-07-20T07:00:31.166Z"
},
{
"status": "In-Review",
"modifiedAt": "2021-07-20T07:00:31.166Z"
},
{
"status": "Completed",
"modifiedAt": "2021-07-20T07:00:31.166Z"
},
{
"status": "Deleted",
"modifiedAt": "2021-07-20T07:00:31.166Z"
}
],
"hash": "96efcf14fe28a4f17a07a5441b00285b12cbb208bf3c1bdbb030bb95d3e31a8b",
"skillsRequired": [
"writing",
"design",
"frontend software development",
"backend software development",
"strategic planning",
"data analysis",
"grant writing",
"proposal development",
"team building",
"consensus building",
"marketing",
"sales"
]
}
]
76 changes: 76 additions & 0 deletions mongo/bounties/bboard_v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
[
{
"//": "Comment: bountyHash message -> bankless dao bounty board"
},
{
"season" : 2,
"bountyTitle": "A new About Us webpage",
"bountyDescription": "Description of webpage",
"bountyCriteria": "A completed bounty has the following...",
"bountyReward": {
"currency" : "BANK",
"amount" : 5000
},
"applicableGuilds": [
{"guildName": "Marketing Guild"},
{"guildName": "Treasury Guild"},
{"guildName": "Developer's Guild"},
{"guildName": "Analytics Guild"},
{"guildName": "Writer's Guild"}
],
"bountyCreatedBy": {
"isDaoMember" : true,
"guildName" : "Analytics Guild",
"discordHandle" : "@paulapivat#8888"
},
"bountyCreatedAt": "2021-07-10T13:49:51.141Z",
"bountyDueAt" : "2021-09-11T13:49:51.141",
"bountyImage": "https://pbs.twimg.com/profile_images/1389400052448247816/qsOU0pih_400x400.jpg",
"bountyActivatedAt": "2021-07-12T13:49:51.141Z",
"bountyClaimedBy": [
{"guildName": "Marketing Guild", "discordHandle" : "@random#1234", "publicAddress" : "0x2d94aa3e47d9d5024503ca8491fce9a2fb4da198"}
],
"bountyClaimedAt": "2021-07-11T13:49:51.141Z",
"bountySubmittedBy": "Developer's Guild",
"bountySubmittedAt": "2021-08-11T13:49:51.141Z",
"bountySubmissionLink": "https://example.org/rels/v1/bounty_submission",
"bountyStatus": [
{
"status" : "Open",
"openAt" : "2021-07-10T13:49:51.141Z"
},
{
"status" : "Draft",
"draftAt" : "2021-07-10T13:49:51.141Z"
},
{
"status" : "In-Progress",
"progressAt" : "2021-07-10T13:49:51.141Z"
},
{
"status" : "In-Review",
"reviewAt" : "2021-07-10T13:49:51.141Z"
},
{
"status" : "Completed",
"completedAt" : "2021-07-10T13:49:51.141Z"
},
{
"status" : "Deleted",
"closedAt" : "2021-07-10T13:49:51.141Z"
}
],
"bountyHash" : "96efcf14fe28a4f17a07a5441b00285b12cbb208bf3c1bdbb030bb95d3e31a8b",
"skillsRequired" : [
"writing",
"design",
"software development",
"strategic planning",
"data analysis",
"grant writing",
"proposal development",
"team building",
"marketing"
]
}
]
Loading

0 comments on commit 3bf68b8

Please sign in to comment.