Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bounty page #243

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 27 additions & 30 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
"i18next": "^17.0.12",
"i18next-browser-languagedetector": "^3.0.3",
"i18next-xhr-backend": "^3.1.2",
"react": "^16.8.6",
"react": "^17.0.2",
"react-collapsible": "^2.6.0",
"react-dom": "^16.8.6",
"react-dom": "^17.0.2",
"react-enroute": "^3.0.2",
"react-i18next": "^10.12.2",
"react-render-html": "^0.6.0",
Expand Down
Binary file added public/img/bounty_chart.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/img/bounty_chart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/icons/bounty_green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/icons/bounty_white.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 37 additions & 0 deletions public/locales/en-US/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
"projects": "Projects",
"blog": "Blog",
"peercoinFoundation": "Peercoin Foundation",
"bounty": "Bug Bounty",
"contactUs": "Contact Us",
"contribute": "Contribute"
},
Expand Down Expand Up @@ -133,6 +134,42 @@
"contactUsTitle": "Contact Us",
"addressCountry": "The Netherlands"
},
"bountyPage": {
"bountyTitle": "Peercoin Bug Bounty Program",
"bountyDescription": "How You Can Help Make Peercoin Better",
"bountyDisclosureHeader": "Responsible Disclosure Policy",
"bountyDisclosureIntro": "Participants must comply with the following rules to qualify for a bug bounty reward.",
"bountyDisclosurePoint1": "Participants must give a reasonable amount of time for the Peercoin Team to investigate the reported issue before sharing or making the bug public knowledge.",
"bountyDisclosurePoint2": "Participants must not exploit a bug they discover for any reason.",

"bountySubmissionHeader": "Bug Submission Rules",
"bountySubmissionPoint1": "Adhere to the Responsible Disclosure Policy (see above).",
"bountySubmissionPoint2": "If a participant has found a bug, please write a detailed report of the bug/vulnerability and email it to the foundation email provided below. The email should include both [Bug Bounty], followed by a short description of the bug/vulnerability in the title. Please allow three business days for a response.",
"bountySubmissionPoint3": "Known or previously submitted bugs are not eligible for rewards.",
"bountySubmissionPoint4": "Members of the Peercoin Foundation are not eligible to receive bug bounty rewards.",

"bountyGuidelinesHeader": "Our Guidelines",
"bountyGuidelinesIntro1": "The Peercoin Team recognizes and appreciates the researchers that help maintain the integrity of the project.",
"bountyGuidelinesPoint1": "The Peercoin Team will investigate and respond to all valid and clearly submitted bug reports.",
"bountyGuidelinesPoint2": "Payout amounts are determined by a number of factors, including scope, impact, likelihood, etc… Ultimately it will be determined according to the Peercoin Team’s judgement, following the OWASP risk rating model.",

"bountyGuidelinesIntro2": "Reward sizes are estimated by the guidelines, but the Peercoin Team will have the sole and final discretion for payouts.",
"bountyGuidelinesPoint3": "Critical: Money amount here",
"bountyGuidelinesPoint4": "High: Money amount here",
"bountyGuidelinesPoint5": "Medium: Money amount here",
"bountyGuidelinesPoint6": "Low: Money amount here",
"bountyGuidelinesPoint7": "Minimum Payout: Money amount here",

"bountyGuidelinesIntro3": "In addition, other variables may be considered:",
"bountyGuidelinesPoint8": "Description: Well-written, clear submissions will always have a higher reward.",
"bountyGuidelinesPoint9": "Reproducibility: The easier a solution can be implemented, the higher the reward",

"bountyScopeHeader": "Out of Scope",
"bountyScopeIntro": "The Bug Bounty program only pertains to core protocol related issues. Website or social engineering related vulnerabilities are not eligible for a reward at this time.",
"bountyContactHeader": "Contact Us",
"bountyContactIntro": "To submit a bug report, contact the foundation below",
"bountyContactEmail": "<a href='mailto:[email protected]'>[email protected]</a>"
},
"contributePage": {
"contributeTitle": "Contribute ",
"contributeDescription": "How You Can Help Make Peercoin Better",
Expand Down
2 changes: 2 additions & 0 deletions src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import Index from "./pages/Index/Index.jsx";
import Resources from "./pages/Resources/Resources.jsx";
import Projects from "./pages/Projects/Projects";
import Foundation from "./pages/Foundation/Foundation";
import Bounty from "./pages/Bounty/Bounty";
import Contact from "./pages/Contact/Contact";
import Wallet from "./pages/Wallet/Wallet";
import ScrollTop from "./components/ScrollTop/ScrollTop";
Expand All @@ -28,6 +29,7 @@ function App() {
<Route path="/projects" component={Projects} />
<Route path="/privacy" component={Privacy} />
<Route path="/foundation" component={Foundation} />
<Route path="/bounty" component={Bounty} />
<Route path="/wallet" component={Wallet} />
<Route path="/contact" component={Contact} />
<Route path="/contribute" component={Contribute} />
Expand Down
6 changes: 6 additions & 0 deletions src/components/Menu/Menu.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,12 @@ function Menu() {
{t("menuComponent.links.project.peercoinFoundation")}
</Link>
</li>
<li>
<Link to="/bounty" className="submenu">
<img src="/img/icons/bounty_green.png" alt="" />
{t("menuComponent.links.project.bounty")}
</Link>
</li>
<li>
<Link to="/contribute" className="submenu">
<img src="/img/icons/pickaxe_green.png" alt="" />
Expand Down
105 changes: 105 additions & 0 deletions src/pages/Bounty/Bounty.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import React, { Suspense } from "react";
import { useTranslation, Trans } from "react-i18next";
import renderHTML from "react-render-html";
import "./Bounty.scss";
import Menu from "../../components/Menu/Menu";
import Address from "../../components/Address/Address";
import Footer from "../../components/Footer/Footer";
import Loader from "../../components/Loader/Loader";

function Foundation() {
const { t } = useTranslation();

return (
<>
<Menu />
<div className="hero hero--thin">
<h1 className="hero__title">{t('bountyPage.bountyTitle')}</h1>
<p className="hero__description">
{t('bountyPage.bountyDescription')}
</p>
</div>

<div className="main text-sections">
<div className="container">
<div className="row">
<div className="col">
<h3 className="title title--green title--left">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider making the title lines h2's
let's the design breath and has nicer spacing

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completed this

{t("bountyPage.bountyDisclosureHeader")}
</h3>
<p>{t("bountyPage.bountyDisclosureIntro")}</p>
<ul>
<li className="list-item">{t("bountyPage.bountyDisclosurePoint1")}</li>
<li className="list-item">{t("bountyPage.bountyDisclosurePoint2")}</li>
</ul>

<h2 className="title title--green title--left">
{t("bountyPage.bountySubmissionHeader")}
</h2>
<ul>
<li className="list-item">{t("bountyPage.bountySubmissionPoint1")}</li>
<li className="list-item">{t("bountyPage.bountySubmissionPoint2")}</li>
<li className="list-item">{t("bountyPage.bountySubmissionPoint3")}</li>
<li className="list-item">{t("bountyPage.bountySubmissionPoint4")}</li>
</ul>

<h2 className="title title--green title--left">
{t("bountyPage.bountyGuidelinesHeader")}
</h2>
<p>{t("bountyPage.bountyGuidelinesIntro1")}</p>
<ul>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint1")}</li>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint2")}</li>
</ul>

<div className="bounty-image-parent">
<img
src="/img/bounty_chart.svg"
alt="Peercoin Bounty Chart"
className="bounty-image"
/>
</div>

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actual reward numbers could use an h2/3 for a title

<p>{t("bountyPage.bountyGuidelinesIntro2")}</p>
<ul>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint3")}</li>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint4")}</li>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint5")}</li>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint6")}</li>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint7")}</li>
</ul>

<p>{t("bountyPage.bountyGuidelinesIntro3")}</p>
<ul>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint8")}</li>
<li className="list-item">{t("bountyPage.bountyGuidelinesPoint9")}</li>
</ul>

<h2 className="title title--green title--left">
{t("bountyPage.bountyScopeHeader")}
</h2>
<p>{t("bountyPage.bountyScopeIntro")}</p>

<h2 className="title title--green title--left">
{t("bountyPage.bountyContactHeader")}
</h2>
<p>{t("bountyPage.bountyContactIntro")}</p>
<p>{renderHTML(t("bountyPage.bountyContactEmail"))}</p>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or just link to /contact ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your choice. I like to keep everything one page but I see how that makes extra work

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes it easier should we have multiple ways for contact in the future

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't see a fix here? forgot to push?

</div>
</div>
</div>
</div>
<Footer />
</>
);
}

function HoF() {
return (
<Suspense fallback={<Loader open={true} />}>
<Foundation />
</Suspense>
);
}

export default HoF;
15 changes: 15 additions & 0 deletions src/pages/Bounty/Bounty.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.list-item {
willyfromtheblock marked this conversation as resolved.
Show resolved Hide resolved
font-weight: 300;
font-size: 1.6rem;
line-height: 2.5rem;
}

.bounty-image-parent {
width: 100%;
text-align: center;
padding: 1vw;
}

.bounty-image {
width: 70%;
}