From 7810e9fcc088a4e9d11b3aa66d9797179bf5d581 Mon Sep 17 00:00:00 2001 From: Brian Patino Date: Fri, 27 Aug 2021 09:35:27 -0400 Subject: [PATCH] Hotfix/fix embed post (#81) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 * 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 * 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 * 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 * 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 * 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 * Final front end tweaks (#61) * Fix buttons missing once filters was removed (#63) * Fix buttons missing * Made buttons target new tab * Made buttons target new tab * Temp/resync branch (#65) * Temp/release prep (#62) (#64) * 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 * 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 * 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 * 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 * 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 * 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 * 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 Co-authored-by: João Henrique Costa 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 Co-authored-by: Oktalize Co-authored-by: Oktal <81541283+Oktalize@users.noreply.github.com> Co-authored-by: John <50239591+Icedcool@users.noreply.github.com> Co-authored-by: paulapivat Co-authored-by: João Henrique Costa 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 Co-authored-by: Oktalize * feature/66 removed listing of complete bounties * allow more characters * allow more characters (#69) Co-authored-by: Oktal <81541283+Oktalize@users.noreply.github.com> Co-authored-by: John <50239591+Icedcool@users.noreply.github.com> Co-authored-by: paulapivat Co-authored-by: João Henrique Costa 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 Co-authored-by: Oktalize * Temp/sync branches (#72) * Temp/release prep (#62) (#64) * 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 * 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 * 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 * 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 * 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 * 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 * 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 Co-authored-by: João Henrique Costa 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 Co-authored-by: Oktalize Co-authored-by: Oktal <81541283+Oktalize@users.noreply.github.com> Co-authored-by: John <50239591+Icedcool@users.noreply.github.com> Co-authored-by: paulapivat Co-authored-by: João Henrique Costa 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 Co-authored-by: Oktalize * feature/66 removed listing of complete bounties * allow more characters (#69) Co-authored-by: Oktal <81541283+Oktalize@users.noreply.github.com> Co-authored-by: John <50239591+Icedcool@users.noreply.github.com> Co-authored-by: paulapivat Co-authored-by: João Henrique Costa 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 Co-authored-by: Oktalize * Feature/fix qa envs (#76) * fix env variables * reference correct dev vs prod envs * add more specific entries * wip * set build ENV * cleanup * Feature/add metadata (#73) * add general high-level and bounty status queries for mongo shell (#78) * adjust hashID in embed (#77) * Update build system * enhance lint system by directly using ESLint * clean up codebase by explicitly naming variables * allow nodejs version greator than 14 * remove prettier since eslint --fix handles the formating * bug fixes Co-authored-by: Oktal <81541283+Oktalize@users.noreply.github.com> Co-authored-by: John <50239591+Icedcool@users.noreply.github.com> Co-authored-by: paulapivat Co-authored-by: João Henrique Costa 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 Co-authored-by: Oktalize --- mongo/bounties/bounty_queries.js | 73 +++++ packages/react-app/.env.prod | 5 +- packages/react-app/.env.qa | 5 +- packages/react-app/.eslintrc.json | 39 ++- packages/react-app/.prettierignore | 4 - packages/react-app/.prettierrc | 4 - packages/react-app/.prettierrc.js | 10 - packages/react-app/docs/CHANGELOG.md | 7 + packages/react-app/next-seo.config.ts | 11 +- packages/react-app/next.config.js | 11 +- packages/react-app/package.json | 33 +- packages/react-app/public/logo.png | Bin 0 -> 3229 bytes packages/react-app/public/preview.png | Bin 0 -> 72702 bytes .../src/components/global/Footer/index.tsx | 58 ++-- .../src/components/global/Header/Logo.tsx | 24 +- .../src/components/global/Header/index.tsx | 150 ++++----- .../components/global/SiteLayout/index.tsx | 54 ++-- .../pages/Bounties/Bounty/index.tsx | 286 +++++++++--------- .../pages/Bounties/BountyAccordion/index.tsx | 70 ++--- .../pages/Bounties/Filters/index.tsx | 165 +++++----- .../components/pages/Bounties/Form/index.tsx | 278 ++++++++--------- .../src/components/pages/Bounties/index.tsx | 150 +++++---- .../src/components/parts/AccessibleLink.tsx | 30 +- .../src/components/parts/ColorModeButton.tsx | 20 +- .../src/components/parts/ThemeToggle.tsx | 34 +-- .../react-app/src/constants/discordInfo.ts | 24 +- packages/react-app/src/models/Bounty.ts | 162 +++++----- packages/react-app/src/pages/400.tsx | 26 +- packages/react-app/src/pages/404.tsx | 26 +- packages/react-app/src/pages/[id]/edit.tsx | 50 +-- packages/react-app/src/pages/[id]/index.tsx | 24 +- packages/react-app/src/pages/_app.tsx | 78 ++--- packages/react-app/src/pages/_document.tsx | 69 ++--- .../react-app/src/pages/api/bounties/[id].ts | 155 +++++----- .../react-app/src/pages/api/bounties/index.ts | 45 +-- packages/react-app/src/pages/index.tsx | 18 +- packages/react-app/src/styles/customTheme.ts | 136 ++++----- packages/react-app/src/styles/index.tsx | 18 +- .../react-app/src/types/BountyCollection.ts | 32 ++ packages/react-app/src/utils/DiscordUtils.ts | 115 ++++--- packages/react-app/src/utils/ServiceUtils.ts | 24 +- packages/react-app/src/utils/dbConnect.ts | 59 ++-- 42 files changed, 1359 insertions(+), 1223 deletions(-) create mode 100644 mongo/bounties/bounty_queries.js delete mode 100644 packages/react-app/.prettierignore delete mode 100644 packages/react-app/.prettierrc delete mode 100644 packages/react-app/.prettierrc.js create mode 100644 packages/react-app/public/logo.png create mode 100644 packages/react-app/public/preview.png create mode 100644 packages/react-app/src/types/BountyCollection.ts diff --git a/mongo/bounties/bounty_queries.js b/mongo/bounties/bounty_queries.js new file mode 100644 index 00000000..576337be --- /dev/null +++ b/mongo/bounties/bounty_queries.js @@ -0,0 +1,73 @@ +// GENERAL HIGH LEVEL QUERIES + +// How many Bounties were created in Season 1? + +db.bounties.find({ season: 1 }).count(); + +// How much BANK was allocated for Bounties in Season 1? (TBD: aggregation framework) + +// (sort amount of BANK allocated in Season 1 in Descending order) + +db.bounties.find({ season: 1 }).sort({ "reward.amount": -1 }); + +// Number of Bounties at the start of the season? vs end of season? (TBD) + +// (sort bounties by createdAt, descending) + +db.bounties.find({ season: 1 }).sort({ createdAt: -1 }); + +// Who claimed the most bounties? (TBD) + +// (display claimedBy.discordHandle to eyeball) + +db.bounties.find({}, { "claimedBy.discordHandle": 1 }).pretty(); + +// Who completed/submitted the most bounties? (TBD) + +// (display submittedBy.discordHandle to eyeball) + +db.bounties.find({}, { "submittedBy.discordHandle": 1 }).pretty(); + +// Which guild completed the most bounties? (TBD, need to add new data fields to answer this question) + +// BOUNTY STATUS QUERIES + +// How many Bounties were completed on time? (need to add new data fields to consider timeliness) + +// How many Bounties expired? (need to add new data fields to consider expiration) + +// How many Bounties were expired? (past tense) + +db.bounties.find({ "statusHistory.status": "Deleted" }).count(); + +// How many Bounties current status is 'deleted'? + +db.bounties.find({ status: "Deleted" }).count(); + +// How many Bounties are (currently) open? + +db.bounties.find({ status: "Open" }).count(); + +// How many Bounties were drafted? (might not be meaningful as 'draft' turns into 'open') + +db.bounties.find({ "statusHistory.status": "Draft" }).count(); + +// How many Bounties are (currently) in 'Draft'? + +db.bounties.find({ status: "Draft" }).count(); + +// How many Bounties are (currently) 'In-Progress'? + +db.bounties.find({ status: "In-Progress" }).count(); + +// How many Bounties were 'In-Progress' at one point in time? + +db.bounties.find({ "statusHistory.status": "In-Progress" }).count(); + +// How many Bounties were 'In-Review' at one point in time? + +db.bounties.find({ "statusHistory.status": "In-Review" }).count(); + +// How many Bounties are (currently) 'In-Review'? + +db.bounties.find({ status: "In-Review" }).count(); diff --git a/packages/react-app/.env.prod b/packages/react-app/.env.prod index a131f7ac..b10f2c16 100644 --- a/packages/react-app/.env.prod +++ b/packages/react-app/.env.prod @@ -1,5 +1,6 @@ +BUILD_ENV=production MONGODB_DB=bountyboard -MONGODB_URI= +#PROD_MONGODB_URI= NEXT_PUBLIC_DISCORD_SERVER_ID=834499078434979890 NEXT_PUBLIC_DISCORD_CHANNEL_BOUNTY_BOARD_ID=850402063741091880 @@ -10,4 +11,4 @@ NEXT_PUBLIC_DAO_CURRENT_SEASON_END_DATE=2021-08-31T04:00:00.000Z # URLs NEXT_PUBLIC_DAO_BOUNTY_BOARD_URL=https://bountyboard.bankless.community -DISCORD_BOUNTY_BOARD_WEBHOOK= \ No newline at end of file +#PROD_DISCORD_BOUNTY_BOARD_WEBHOOK= \ No newline at end of file diff --git a/packages/react-app/.env.qa b/packages/react-app/.env.qa index 1565becd..e5563d98 100644 --- a/packages/react-app/.env.qa +++ b/packages/react-app/.env.qa @@ -1,5 +1,6 @@ +BUILD_ENV=development MONGODB_DB=bountyboard -MONGODB_URI= +#DEV_MONGODB_URI= NEXT_PUBLIC_DISCORD_SERVER_ID=851552281249972254 NEXT_PUBLIC_DISCORD_CHANNEL_BOUNTY_BOARD_ID=869964294865977425 @@ -10,4 +11,4 @@ NEXT_PUBLIC_DAO_CURRENT_SEASON_END_DATE=2021-08-31T04:00:00.000Z # URLs NEXT_PUBLIC_DAO_BOUNTY_BOARD_URL=https://develop--bounty-board-29081e.netlify.app/ -DISCORD_BOUNTY_BOARD_WEBHOOK=https://discord.com/api/webhooks/873289859308073070/cj4sCbAABT3CpOC5f-5XTbJvkDimqEGAye-CFUYGos6V_euKo9jlKXhpJu051ZoNkora \ No newline at end of file +#DEV_DEV_DISCORD_BOUNTY_BOARD_WEBHOOK= \ No newline at end of file diff --git a/packages/react-app/.eslintrc.json b/packages/react-app/.eslintrc.json index f9657030..b857740d 100644 --- a/packages/react-app/.eslintrc.json +++ b/packages/react-app/.eslintrc.json @@ -37,6 +37,43 @@ "argsIgnorePattern": "^_" } ], - "react/no-unescaped-entities": 1 + "react/no-unescaped-entities": 1, + "brace-style": ["error", "1tbs", { "allowSingleLine": true }], + "comma-dangle": ["error", "always-multiline"], + "comma-spacing": "error", + "comma-style": "error", + "curly": ["error", "multi-line", "consistent"], + "dot-location": ["error", "property"], + "handle-callback-err": "off", + "indent": ["error", "tab"], + "max-nested-callbacks": ["error", { "max": 4 }], + "max-statements-per-line": ["error", { "max": 2 }], + "no-console": "off", + "no-empty-function": "error", + "no-floating-decimal": "error", + "no-inline-comments": "error", + "no-multi-spaces": "error", + "no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], + "no-shadow": ["error", { "allow": ["err", "resolve", "reject"] }], + "no-trailing-spaces": ["error", { "skipBlankLines": true, "ignoreComments": true }], + "no-var": "error", + "object-curly-spacing": ["error", "always"], + "prefer-const": "error", + "quotes": ["error", "single"], + "semi": ["error", "always"], + "space-before-blocks": "error", + "space-before-function-paren": [ + "error", + { + "anonymous": "never", + "named": "never", + "asyncArrow": "always" + } + ], + "space-in-parens": "error", + "space-infix-ops": "error", + "space-unary-ops": "error", + "spaced-comment": "error", + "yoda": "error" } } diff --git a/packages/react-app/.prettierignore b/packages/react-app/.prettierignore deleted file mode 100644 index 09c508e8..00000000 --- a/packages/react-app/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore : -build -.next -node_modules \ No newline at end of file diff --git a/packages/react-app/.prettierrc b/packages/react-app/.prettierrc deleted file mode 100644 index b2095be8..00000000 --- a/packages/react-app/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "semi": false, - "singleQuote": true -} diff --git a/packages/react-app/.prettierrc.js b/packages/react-app/.prettierrc.js deleted file mode 100644 index 907d02e3..00000000 --- a/packages/react-app/.prettierrc.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - tabWidth: 2, - printWidth: 80, - endOfLine: 'auto', - arrowParens: 'always', - semi: true, - useTabs: false, - singleQuote: true, - bracketSpacing: true, -}; diff --git a/packages/react-app/docs/CHANGELOG.md b/packages/react-app/docs/CHANGELOG.md index bcb8d9fc..cb6a0f46 100644 --- a/packages/react-app/docs/CHANGELOG.md +++ b/packages/react-app/docs/CHANGELOG.md @@ -1,5 +1,12 @@ # CHANGELOG +## 1.0.0-beta2 (2021-08-26) + +1. Use QA specific environment variables +2. Add metadata to display preview in discord link +3. Adjust hashID for discordjs webhook message +4. Update ESLint config with cleaner controls and update build system + ## 1.0.0-beta (2021-08-12) 1. Add github and heroku actions integration, initialize react-create app diff --git a/packages/react-app/next-seo.config.ts b/packages/react-app/next-seo.config.ts index d90461e4..c5e41971 100644 --- a/packages/react-app/next-seo.config.ts +++ b/packages/react-app/next-seo.config.ts @@ -1,7 +1,6 @@ -const title = 'Bankless Bounty Board'; -const description = - 'Bankless Bounty Board'; -const url = 'https://bountyboard.bankless.community'; +export const title = 'Bankless Bounty Board' +const description = 'Bankless Bounty Board' +const url = 'https://bountyboard.bankless.community' const SEO = { title, @@ -27,6 +26,6 @@ const SEO = { site: '@banklessdao', }, additionalLinkTags: [{ rel: 'icon', href: '/favicon.png' }], -}; +} -export default SEO; +export default SEO diff --git a/packages/react-app/next.config.js b/packages/react-app/next.config.js index 83c12d0d..58af6c73 100644 --- a/packages/react-app/next.config.js +++ b/packages/react-app/next.config.js @@ -1,4 +1,9 @@ module.exports = { - distDir: 'dist', - webpack5: true, -} \ No newline at end of file + distDir: 'dist', + webpack5: true, + eslint: { + // Warning: This allows production builds to successfully complete even if + // your project has ESLint errors. + ignoreDuringBuilds: true, + }, +}; \ No newline at end of file diff --git a/packages/react-app/package.json b/packages/react-app/package.json index b672c3dc..5b1fc2d1 100644 --- a/packages/react-app/package.json +++ b/packages/react-app/package.json @@ -1,6 +1,6 @@ { "name": "@bounty-board/react-app", - "version": "1.0.0-beta", + "version": "1.0.0-beta2", "homepage": ".", "description": "This web app displays the bounties that are available for DAO members to claim.", "repository": "https://github.com/BanklessDAO/bounty-board", @@ -12,20 +12,20 @@ "extends": "react-app" }, "scripts": { - "dev": "next dev", + "dev": "yarn lint && next dev", "build": "next build", "start": "next start", - "build:qa": "env-cmd -f .env.qa next build", - "build:prod": "env-cmd -f .env.prod next build", + "build:qa": "env-cmd -f .env.qa yarn build", + "build:prod": "env-cmd -f .env.prod yarn build", + "prebuild": "yarn lint", "type-check": "tsc --pretty --noEmit --skipLibCheck --esModuleInterop --strict --jsx preserve", "export": "next export", - "lint": "next lint", - "format": "prettier --write src" + "lint": "eslint src --ext js,jsx,ts,tsx", + "format": "eslint src --ext js,jsx,ts,tsx --fix" }, "lint-staged": { "*.@(ts|tsx)": [ "yarn run type-check", - "yarn lint src --fix -d", "yarn format" ] }, @@ -36,9 +36,15 @@ "@fontsource/lexend": "^4.5.0", "@hookform/resolvers": "^2.7.1", "@netlify/plugin-nextjs": "^3.8.0", + "@types/node": "^16.4.7", + "@types/nprogress": "^0.2.0", + "@types/react": "^17.0.14", "@typescript-eslint/eslint-plugin": "^4.28.3", "env-cmd": "^10.1.0", + "eslint": "^7.30.0", + "eslint-config-next": "^11.0.1", "framer-motion": "^4.1.17", + "lint-staged": "^11.0.0", "mongodb-client-encryption": "^1.2.6", "mongoose": "^5.13.4", "next": "^11.0.0", @@ -49,20 +55,11 @@ "react-hook-form": "^7.12.2", "react-icons": "^4.2.0", "swr": "^0.5.6", + "typescript": "^4.3.5", "yup": "^0.32.9" }, - "devDependencies": { - "@types/node": "^16.4.7", - "@types/nprogress": "^0.2.0", - "@types/react": "^17.0.14", - "eslint": "^7.30.0", - "eslint-config-next": "^11.0.1", - "lint-staged": "^11.0.0", - "prettier": "^2.3.2", - "typescript": "^4.3.5" - }, "engines": { "yarn": "1.x", - "node": "~14.17.0" + "node": ">=14.17.0" } } diff --git a/packages/react-app/public/logo.png b/packages/react-app/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63696afffee45dcf63cafaaa3cb5bda007314c98 GIT binary patch literal 3229 zcmb7`2{aVm9>-foMkJ&p#b6||YcmPMsIl+HNTe*0U3QU4_NlQ;wuEV{QH*8Aq<=A) z$TnHV5-QCYWNI2C%bVVN=e+;h&O7gJ-+Rve{m!}Po_p`-n`&)&Y2V%>dw1;EvCjk! zv*juIcL(m_jdf1-B|O=4&Fm6v$M)}9M#N_C*db(V0)yH|PAnB8a>N~^lY6M4;xa$o z-6liBjgxjJ%H9P*Q`1uJ0H7j{9!Prw<7ADi20|yG?qq1lkg>VhVJ&zP)Lp>LHdR=e zUqRTXpo25RKR#ZyvczCmUl^W==wGR;VT3!}cEATbH8tJE+rs}@;D8+42nKjjToL?w z1G$j*>Nu?0Qok4t@jhq}=`yHOtBu4yw9G`QbnD(%ggwlL&>?sUam|3?w*zh6jdu?> zA+Rn4%Bo`V=c6aTrG!FM=N#_KL1=!JGo(P0bJjzgm-(am;~7#`Df8xq8aB7}wzZqx zH=}d2v#+1;3kj1>KdTck$OT*bs9$NX&?`J=LXCNL-?R;TSk@iOBvw)dr#fox@(UM$ zb>!c_Tm_S7c02CnEE@}nHRmXolxrpJM?^(MC0LS*A^2`HDx)Bt-qhlSW8rW|;bQCx zcI-IVWFb-n+()wSc_4$JDkEk;W)^t9=T?JX_cwF?Y#crs)W*<>WVdSxl zFke!><)bowsP`GM8KGq<-pEE~Rl-pgFen*;GUurGZ91&X z8;HJ_BQEW16@&r@xqe%*09gPO2o*6DNfhDT2owlt$WtIsp&|fTo+g5TvOq&1inqj@ zqW(kBpYk!gN=9rs)ya!zt&dGKBZ?tg7GY6U&!gLo_^E5N7pq<9T0q;w035QeeLb?@ zrRSkuSmBCPq|tP|8*%JOvM-A)U+odHT9D(QcR;i@R{l~(im&96)3I>$u?x;i6K!^% zr#I#nwuvOW__B+7QD<&;3sGCx2Y|NLe3`qY)v#8jKZ)}Woi5^iC$X{RYKKSbuh=y& zH;AtKk2csLRNY$M{qU?RV~#Z%HQyZG0~NEuY!vCoPjlFE+#nAyW&Bydg&xny#lExh z?f#(WA~*G`xjo!GC>d`HUMU-xpm2HfxCiD8rvDgGQZ!Y%an zsKzRt5EU#hfQkgCe4_=Da6OOCq{DT#pL<)u5sX6W%Kn%~tfjok$;qe8NA5;Ra`19N zxs8qQ@7+slSw2i_$#Yi?oM^QeXGc$O@AK0o_Fer&I`eBBmM6AH+9w0VhZMm%lXpjM z6%Q7RBeD8$9+=RyHtnF;CUq-%bxLk@3zr{kBC1SARxTrpJ%E5qvtVS3K-< z@4-dZP14p8=-wuft?}L$8M=4yH$J?J$aTes*EN`4H-g<9C$ueUnP&UGtO>WguiovO z7w{_lIZ;c&jJwq#ptD-KvhFv)KIOmhbVb$}&9;R)#5A_VPa=dHzI8r`&0u||R9_np=}e}Z<*OOj7Ah##;3kd>MJ};1 z+eVKZ>*{_PFTVt4?Ld)p*&{f+ZuaeS%)0~Ch-MiL#|FoGr>Oaeot-0$^~5~yT~b5k zhZuT?=oJZnz-C;DqF_-#riyDTxwX^bBqHfWeb)+c;cEq>IL~WistPS-w0s)xkUY8U z&0RTO@kS6T1{0xa-_<22H>pXIJQzk#og0VHGY)EQU1JqTd{5sTN=y}vugWxkq(yC= zMoXOm!OMZHN&WUCqY1I&BSUk$0)LrgSWA+n|(eP5EvhrzD%ifY%*9>1@ z!~jHLNrvU(jOn+EXcBhLkvKM%mrrl1 z>Utn&`E1FIbm_!?&K8$JQAblK8zJ~#Q7;z*ost_sa1>C^qWZXHiLRt$=vU@L?b{J2 zE>{fqCF^vI>fdw zdZ7-VL6I3F&9LM0bTp55Zp;b(KFW&rtA?K%RWHwX`a&1-5-ByC>qyE#y~X846$8nm zbT55c)oz0R4G|O=1=>%o3A~{58A@#-5YXTWxZSflp`lEl7!#vWwJV14oPv@NKO?-A2)Sg5#~>VV?Ar9(;k3=l~b6pih){<`}Rkb zd!8KK?)$)G>YvoKHqAfbqx$G_Mf4%{nR`%?{Q#Ya<)W3xw6{#CPsr(g8adF|Syxa0 zQgisql;T$wOG8aQLH=IOB`-5pI0qmOE7bP1wK);`(*HXCmE_U27#{x5*2niTsP{j} zMnHYKg?}pBNDV2U30=?Fj@fT?_og#BAT{=$ zsUDwVF?xxnCwVJU{~u`P@%pbw{yU__xFgEW=BHH(&F55dMZkIhWKcvJggq(-?$2_4 zaqi#qc=^9uaMtX)feJMXv(~F^oGqGIa?8*P@~@!(lLz2W`=37GzxaszEbhkpIa7?# zc9yOSX(xYLWL_=>u~wQD1;NKCz}w?}AT9A}yNz`z%U3!!tlnmuxIR8R-9~i2wZQ1ye6ep^ZKs0!LS9#20o?o&=Hact*ObL zJ7O;^of;jDt;7)s1OwD9(=`4HP=YBwa7B+=7H~yaF4feuvf`o6*%)p@X#w%=p9m}8QrSdVCKQ5Iw+=cysf|H-2cj+%A) z%wG)Sefl(?yqaOKlJp?ouP6Px_&)AixaACfquqW7Pmhh9^0?#FcnRxg3xzW7K)#;~ z5b?BR{KyduwS~eY2tU}Gm!<0Ub$2HIaj@73B11n#ZIj1oJl-BChP;Km5fIRfP}uo@ edUaknc-J;xAw<${_`74;X^&hSG3 literal 0 HcmV?d00001 diff --git a/packages/react-app/public/preview.png b/packages/react-app/public/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..61d075e3acbd1c5082f6f9d6d2e12982132e7270 GIT binary patch literal 72702 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 { - return ( - - - {/* + return ( + + + {/* Mirror Substack Discord Twitter Github */} - - - Give us Feedback - + + + Give us Feedback + - - Need Help? - - - + + Need Help? + + + - © {new Date().getFullYear()} Bankless DAO - - ) -} + © {new Date().getFullYear()} Bankless DAO + + ); +}; -export default Footer +export default Footer; diff --git a/packages/react-app/src/components/global/Header/Logo.tsx b/packages/react-app/src/components/global/Header/Logo.tsx index f75d935c..ad6fb6e7 100644 --- a/packages/react-app/src/components/global/Header/Logo.tsx +++ b/packages/react-app/src/components/global/Header/Logo.tsx @@ -1,15 +1,15 @@ -import React from 'react' -import { Box, BoxProps, Image, Link as ChakraLink } from '@chakra-ui/react' -import Link from 'next/link' +import React from 'react'; +import { Box, BoxProps, Image, Link as ChakraLink } from '@chakra-ui/react'; +import Link from 'next/link'; export default function Logo(props: BoxProps): JSX.Element { - return ( - - - - Bankless DAO - - - - ) + return ( + + + + Bankless DAO + + + + ); } diff --git a/packages/react-app/src/components/global/Header/index.tsx b/packages/react-app/src/components/global/Header/index.tsx index 1d7fae17..d7dc2535 100644 --- a/packages/react-app/src/components/global/Header/index.tsx +++ b/packages/react-app/src/components/global/Header/index.tsx @@ -1,102 +1,102 @@ -import React, { useState } from 'react' -import { Box, Flex, Text, Stack, useColorModeValue } from '@chakra-ui/react' +import React, { useState } from 'react'; +import { Box, Flex, Text, Stack, useColorModeValue } from '@chakra-ui/react'; -import { RiMenuFill, RiCloseFill } from 'react-icons/ri' +import { RiMenuFill, RiCloseFill } from 'react-icons/ri'; -import Logo from './Logo' -import ThemeToggle from '../../parts/ThemeToggle' -import AccessibleLink from '../../parts/AccessibleLink' -import ColorModeButton from '../../parts/ColorModeButton' +import Logo from './Logo'; +import ThemeToggle from '../../parts/ThemeToggle'; +import AccessibleLink from '../../parts/AccessibleLink'; +import ColorModeButton from '../../parts/ColorModeButton'; const CloseIcon = ({ color }: { color: string }) => ( - -) + +); const MenuIcon = ({ color }: { color: string }) => ( - -) + +); const NavBar: React.FC = (props): JSX.Element => { - const [isOpen, setIsOpen] = useState(false) - const toggle = () => setIsOpen(!isOpen) + const [isOpen, setIsOpen] = useState(false); + const toggle = () => setIsOpen(!isOpen); - return ( - - - - - - ) -} + return ( + + + + + + ); +}; const MenuToggle = ({ - toggle, - isOpen, + toggle, + isOpen, }: { toggle: VoidFunction isOpen: boolean }): JSX.Element => { - const fgColor = useColorModeValue('black', 'white') - return ( - - {isOpen ? : } - - ) -} + const fgColor = useColorModeValue('black', 'white'); + return ( + + {isOpen ? : } + + ); +}; const MenuItem = ({ - children, - to = '/', - newTab, - ...rest + children, + to = '/', + newTab, + ...rest }: { children?: React.ReactNode isLast?: boolean to: string newTab?: boolean }): JSX.Element => ( - - - {children} - - -) + + + {children} + + +); const MenuLinks = ({ isOpen }: { isOpen: boolean }): JSX.Element => ( - - - {/*Bounty Board*/} - {/*TODO: enabled this with web3 integration */} - {/**/} - {/* Connect Wallet{' '}*/} - {/**/} - - Join DAO{' '} - - - - -) + + + {/* Bounty Board*/} + {/* TODO: enabled this with web3 integration */} + {/* */} + {/* Connect Wallet{' '}*/} + {/* */} + + Join DAO{' '} + + + + +); const NavBarContainer: React.FC = (props): JSX.Element => ( - - {props.children} - -) + + {props.children} + +); -export default NavBar +export default NavBar; diff --git a/packages/react-app/src/components/global/SiteLayout/index.tsx b/packages/react-app/src/components/global/SiteLayout/index.tsx index 3d226dbd..2f564910 100644 --- a/packages/react-app/src/components/global/SiteLayout/index.tsx +++ b/packages/react-app/src/components/global/SiteLayout/index.tsx @@ -1,8 +1,8 @@ -import { Box, Stack, Heading } from '@chakra-ui/react' -import { ReactNode } from 'react' +import { Box, Stack, Heading } from '@chakra-ui/react'; +import { ReactNode } from 'react'; -import Header from '../Header' -import Footer from '../Footer' +import Header from '../Header'; +import Footer from '../Footer'; type LayoutProps = { children: ReactNode @@ -10,27 +10,27 @@ type LayoutProps = { } const SiteLayout = ({ children, title }: LayoutProps): JSX.Element => { - return ( - <> -
- - - - {title} - - {children} - - -