LEARN MORE
{/* Card Container */}
@@ -302,9 +387,29 @@ export const getStaticProps: GetStaticProps<{ stats: Stats }> = async () => {
const stats = (await res.json()) as Stats;
+ // Fetch data for cohorts section
+ const resCohorts = await fetch(`${process.env.BG_BACKEND_API}/cohorts/stats`);
+
+ if (!resCohorts.ok) throw new Error(`Failed to fetch cohorts, received status ${resCohorts.status}`);
+
+ const cohortsData = (await resCohorts.json()) as Cohort[];
+
+ // Calculate total number of cohorts
+ const totalCohorts = cohortsData?.length;
+
+ // Calculate total number of hackers
+ const totalHackers = cohortsData.reduce((acc, cohort) => acc + Object.keys(cohort.builders).length, 0);
+
+ // Calculate Total ETH Streamed by all cohorts
+ const totalEthStreamed = cohortsData?.reduce((acc, cohort) => acc + parseFloat(cohort.totalWithdrawn), 0).toFixed(2);
+
return {
props: {
stats,
+ cohortsData,
+ totalCohorts,
+ totalHackers,
+ totalEthStreamed,
},
// 6 hours refresh.
revalidate: 21600,
diff --git a/packages/nextjs/public/assets/aztek-logo.png b/packages/nextjs/public/assets/aztek-logo.png
new file mode 100644
index 0000000..c8b6f9f
Binary files /dev/null and b/packages/nextjs/public/assets/aztek-logo.png differ
diff --git a/packages/nextjs/public/assets/ef-logo.png b/packages/nextjs/public/assets/ef-logo.png
index 4c7d7ba..efda8e2 100644
Binary files a/packages/nextjs/public/assets/ef-logo.png and b/packages/nextjs/public/assets/ef-logo.png differ
diff --git a/packages/nextjs/public/assets/laptop.svg b/packages/nextjs/public/assets/laptop.svg
new file mode 100644
index 0000000..30dd06c
--- /dev/null
+++ b/packages/nextjs/public/assets/laptop.svg
@@ -0,0 +1,12 @@
+
diff --git a/packages/nextjs/public/assets/starknet-logo.svg b/packages/nextjs/public/assets/starknet-logo.svg
new file mode 100644
index 0000000..71533a4
--- /dev/null
+++ b/packages/nextjs/public/assets/starknet-logo.svg
@@ -0,0 +1,22 @@
+
diff --git a/packages/nextjs/public/assets/support-high-impact-devs.png b/packages/nextjs/public/assets/support-high-impact-devs.png
new file mode 100644
index 0000000..4517c8b
Binary files /dev/null and b/packages/nextjs/public/assets/support-high-impact-devs.png differ
diff --git a/packages/nextjs/styles/globals.css b/packages/nextjs/styles/globals.css
index 7547f52..6bf9c8b 100644
--- a/packages/nextjs/styles/globals.css
+++ b/packages/nextjs/styles/globals.css
@@ -56,6 +56,21 @@ p {
@apply shadow-none;
}
+tbody tr:first-child td:first-child {
+ border-top-left-radius: 1.5rem;
+}
+
+tbody tr:first-child td:last-child {
+ border-top-right-radius: 1.5rem;
+}
+
+tbody tr:last-child td:first-child {
+ border-bottom-left-radius: 1.5rem;
+}
+
+tbody tr:last-child td:last-child {
+ border-bottom-right-radius: 1.5rem;
+}
.hero-top-gradient {
background: linear-gradient(180deg, #c3dbff 0%, rgba(217, 235, 229, 0.51) 66.15%, rgba(239, 251, 202, 0) 100%);
}
diff --git a/packages/nextjs/tailwind.config.js b/packages/nextjs/tailwind.config.js
index 4e27638..4bae5e6 100644
--- a/packages/nextjs/tailwind.config.js
+++ b/packages/nextjs/tailwind.config.js
@@ -71,6 +71,15 @@ module.exports = {
"space-grotesk": ["Space Grotesk", "sans-serif"],
"neue-machina": ["PPNeueMachina", "sans-serif"],
},
+ backgroundColor: {
+ skin: "#EBECFD",
+ },
+ boxShadow: {
+ even: "0px 0px 11.65074px 0px rgba(139, 178, 241, 0.50)",
+ },
+ screens: {
+ xs: "450px",
+ },
keyframes: {
"bounce-interval": {
"0%, 12.5%, 25%, 37.5%, 50%": {