From df262d33c6a45de7b6e83755155cbc1c24433053 Mon Sep 17 00:00:00 2001 From: pabl0cks Date: Fri, 24 Jan 2025 01:08:44 +0100 Subject: [PATCH 1/2] Add FAQ --- packages/nextjs/app/faq/page.tsx | 199 ++++++++++++++++++++++++++ packages/nextjs/components/Header.tsx | 14 +- 2 files changed, 210 insertions(+), 3 deletions(-) create mode 100644 packages/nextjs/app/faq/page.tsx diff --git a/packages/nextjs/app/faq/page.tsx b/packages/nextjs/app/faq/page.tsx new file mode 100644 index 0000000..9ea22de --- /dev/null +++ b/packages/nextjs/app/faq/page.tsx @@ -0,0 +1,199 @@ +import type { NextPage } from "next"; + +const FAQ: NextPage = () => { + const faqSections = [ + { + title: "Understanding Our Platform", + questions: [ + { + question: "What is the Builder Grants platform?", + answer: + "The Builder Grants platform provides continuous funding for public goods projects in the Ethereum and Web3 ecosystems. We've designed it to support projects at every stage of development, whether you're just starting or ready to scale your impact. Our mission is to help builders create lasting value for the broader Web3 community through sustainable, milestone-driven funding.", + }, + { + question: "Why did you create this platform?", + answer: + "We recognize that public goods funding shouldn't be seasonal or fragmented. The Builder Grants platform combines our previous Small and Large Grants programs into a streamlined experience. This unified approach means builders have a clear pathway to funding without navigating multiple programs or waiting for specific seasons to open.", + }, + ], + }, + { + title: "Eligibility and Focus", + questions: [ + { + question: "What kinds of projects do you fund?", + answer: ( +
+

We focus on three core areas that strengthen the Web3 ecosystem:

+ +
+ ), + }, + { + question: "What makes a project ineligible for funding?", + answer: ( +
+

+ We've learned that certain types of projects are better suited for other funding sources. We do not + fund: +

+ +
+ ), + }, + ], + }, + { + title: "Application Process", + questions: [ + { + question: "How do I apply for funding?", + answer: + "Start by visiting the Builder Grants Platform, connect your wallet and complete our application form.", + }, + { + question: "What makes a compelling application?", + answer: + "The key to a strong application is clarity about your project's impact. Explain the problem, how you'll solve it, and why it matters to the Web3 ecosystem. Include specific milestones that show how you'll turn your vision into reality. Focus on telling your project's story. Share concrete evidence of your ability to execute— past projects, technical prototypes, or community feedback. Most importantly, outline clear, achievable milestones demonstrating how you'll create impact over time.", + }, + ], + }, + { + title: "Funding Structure", + questions: [ + { + question: "How much funding is available?", + answer: + "Projects can currently request between 0.25 ETH and 2 ETH. We're actively working to add USDC as a payment option to provide more flexibility. The amount granted may be adjusted during review based on our evaluation of your project's scope and potential impact.", + }, + { + question: "How does milestone-based funding work?", + answer: + "Rather than providing all funds upfront, we release funding as you achieve specific milestones. This approach helps ensure sustained progress while providing regular opportunities for feedback and support. You'll work with our team to define meaningful milestones that align with your project's goals and our evaluation criteria.", + }, + ], + }, + { + title: "Evaluation Process", + questions: [ + { + question: "How do you evaluate applications?", + answer: ( +
+

+ Our evaluation focuses on two key aspects: usefulness and impact. +

+

+ When assessing usefulness, we look at how valuable your project is to the Ethereum/Web3 ecosystem—does + it solve a significant problem? Will it make something meaningful easier or better? +

+

+ For impact, we examine the reach and effectiveness of your solution—how many people can benefit? What + evidence have you provided to suggest your approach will work? We are particularly interested in + projects demonstrating potential for long-term, sustainable impact. +

+
+ ), + }, + { + question: "How long does the review process take?", + answer: + "Our Public Goods Working Group stewards review applications regularly. You can track your application status directly via the dashboard. We'll also communicate directly via comments if we need any additional information. We aim to provide clear, constructive feedback regardless of the outcome.", + }, + ], + }, + { + title: "After Approval", + questions: [ + { + question: "What happens after my project is approved?", + answer: + "Once approved, you'll receive information about the next steps, including milestone tracking and payment schedules. All transactions are recorded on-chain for transparency.", + }, + { + question: "How do I report progress?", + answer: + "The platform includes built-in tools for tracking and reporting progress on your milestones. You should provide regular updates, share evidence of completion and join the weekly PG calls to share these.", + }, + ], + }, + { + title: "Support and Resources", + questions: [ + { + question: "How can I get help with my application?", + answer: + "We believe in supporting builders throughout their journey. Attend our weekly public goods working group calls to learn more about what we seek. For technical issues with the platform itself, the PG team is ready to help get you back on track.", + }, + { + question: "Where can I learn more?", + answer: ( +
+ The best way to understand our ecosystem is to engage with it. Follow our updates on Twitter{" "} + + @ens_dao + {" "} + and attend our weekly calls. You can also review previously funded projects on the platform to better + understand the types of initiatives we support. Remember, we're here to help you succeed in creating + valuable public goods for Web3. +
+ ), + }, + ], + }, + ]; + + return ( +
+
+

Frequently Asked Questions

+

Learn more about the ENS Builder Grants Platform.

+ +
+ {faqSections.map((section, sectionIndex) => ( +
+

{section.title}

+
+ {section.questions.map((faq, index) => ( +
+

{faq.question}

+
+ {typeof faq.answer === "string" ?

{faq.answer}

: faq.answer} +
+
+ ))} +
+
+ ))} +
+
+
+ ); +}; + +export default FAQ; diff --git a/packages/nextjs/components/Header.tsx b/packages/nextjs/components/Header.tsx index 227fb3d..afbe39b 100644 --- a/packages/nextjs/components/Header.tsx +++ b/packages/nextjs/components/Header.tsx @@ -4,7 +4,7 @@ import React from "react"; import Image from "next/image"; import Link from "next/link"; import { usePathname } from "next/navigation"; -import { DocumentTextIcon, LockClosedIcon, UserIcon } from "@heroicons/react/24/outline"; +import { DocumentTextIcon, LockClosedIcon, QuestionMarkCircleIcon, UserIcon } from "@heroicons/react/24/outline"; import { FaucetButton, RainbowKitCustomConnectButton } from "~~/components/scaffold-eth"; import { useAuthSession } from "~~/hooks/pg-ens/useAuthSession"; @@ -30,18 +30,26 @@ export const menuLinks: HeaderMenuLink[] = [ href: "/admin", icon: , }, + { + label: "FAQ", + href: "/faq", + icon: , + }, ]; export const HeaderMenuLinks = () => { const pathname = usePathname(); const { isAdmin, data } = useAuthSession(); - const linksToShow = isAdmin ? [menuLinks[1], menuLinks[2]] : [menuLinks[0]]; + const linksToShow = [...(isAdmin ? [menuLinks[1], menuLinks[2]] : [menuLinks[0]]), menuLinks[3]]; return ( <> {linksToShow.map((linkToShow, index) => { - if ((linkToShow.label === "My grants" && !data) || (linkToShow.label !== "My grants" && !isAdmin)) { + if ( + (linkToShow.label === "My grants" && !data) || + (linkToShow.label !== "My grants" && !isAdmin && linkToShow.label !== "FAQ") + ) { return null; } From debcc5ac6aeedc82b10040e800356bf49603b537 Mon Sep 17 00:00:00 2001 From: Shiv Bhonde Date: Fri, 24 Jan 2025 16:02:39 +0530 Subject: [PATCH 2/2] remove reduant null return check --- packages/nextjs/components/Header.tsx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/nextjs/components/Header.tsx b/packages/nextjs/components/Header.tsx index afbe39b..113bfe6 100644 --- a/packages/nextjs/components/Header.tsx +++ b/packages/nextjs/components/Header.tsx @@ -41,20 +41,19 @@ export const HeaderMenuLinks = () => { const pathname = usePathname(); const { isAdmin, data } = useAuthSession(); - const linksToShow = [...(isAdmin ? [menuLinks[1], menuLinks[2]] : [menuLinks[0]]), menuLinks[3]]; + const linksToShow = [ + ...(isAdmin + ? [menuLinks[1], menuLinks[2]] // All Grants, Admin + : Boolean(data) + ? [menuLinks[0]] // My Grants if user has auth data + : []), // empty if no data + menuLinks[3], // Show FAQ always + ]; return ( <> {linksToShow.map((linkToShow, index) => { - if ( - (linkToShow.label === "My grants" && !data) || - (linkToShow.label !== "My grants" && !isAdmin && linkToShow.label !== "FAQ") - ) { - return null; - } - const isActive = pathname === linkToShow.href; - return (