diff --git a/public/about/image1.png b/public/about/image1.png index 1deeb0d..bb9c3fb 100644 Binary files a/public/about/image1.png and b/public/about/image1.png differ diff --git a/public/core-contributors/cat.png b/public/core-contributors/cat.png new file mode 100644 index 0000000..3db64d3 Binary files /dev/null and b/public/core-contributors/cat.png differ diff --git a/public/core-contributors/coinmandeer.png b/public/core-contributors/coinmandeer.png new file mode 100644 index 0000000..e6dd37e Binary files /dev/null and b/public/core-contributors/coinmandeer.png differ diff --git a/public/core-contributors/mf.png b/public/core-contributors/mf.png new file mode 100644 index 0000000..0213a94 Binary files /dev/null and b/public/core-contributors/mf.png differ diff --git a/public/core-contributors/michael-parenti.png b/public/core-contributors/michael-parenti.png new file mode 100644 index 0000000..b91d557 Binary files /dev/null and b/public/core-contributors/michael-parenti.png differ diff --git a/public/core-contributors/michael.png b/public/core-contributors/michael.png new file mode 100644 index 0000000..3624eae Binary files /dev/null and b/public/core-contributors/michael.png differ diff --git a/public/core-contributors/mykola-siusko.png b/public/core-contributors/mykola-siusko.png new file mode 100644 index 0000000..82c5177 Binary files /dev/null and b/public/core-contributors/mykola-siusko.png differ diff --git a/public/core-contributors/odd.png b/public/core-contributors/odd.png new file mode 100644 index 0000000..6eefaa7 Binary files /dev/null and b/public/core-contributors/odd.png differ diff --git a/public/core-contributors/robert.png b/public/core-contributors/robert.png new file mode 100644 index 0000000..83880f5 Binary files /dev/null and b/public/core-contributors/robert.png differ diff --git a/public/events/masonry/1.png b/public/events/masonry/1.png new file mode 100644 index 0000000..905124f Binary files /dev/null and b/public/events/masonry/1.png differ diff --git a/public/events/masonry/1.webp b/public/events/masonry/1.webp new file mode 100644 index 0000000..a8a1e92 Binary files /dev/null and b/public/events/masonry/1.webp differ diff --git a/public/events/masonry/2.png b/public/events/masonry/2.png new file mode 100644 index 0000000..3e6d822 Binary files /dev/null and b/public/events/masonry/2.png differ diff --git a/public/events/masonry/2.webp b/public/events/masonry/2.webp new file mode 100644 index 0000000..67711fb Binary files /dev/null and b/public/events/masonry/2.webp differ diff --git a/public/events/masonry/3.png b/public/events/masonry/3.png new file mode 100644 index 0000000..ff9a6c4 Binary files /dev/null and b/public/events/masonry/3.png differ diff --git a/public/events/masonry/3.webp b/public/events/masonry/3.webp new file mode 100644 index 0000000..c711b96 Binary files /dev/null and b/public/events/masonry/3.webp differ diff --git a/public/events/masonry/4.png b/public/events/masonry/4.png new file mode 100644 index 0000000..75781d4 Binary files /dev/null and b/public/events/masonry/4.png differ diff --git a/public/events/masonry/4.webp b/public/events/masonry/4.webp new file mode 100644 index 0000000..5a26a3e Binary files /dev/null and b/public/events/masonry/4.webp differ diff --git a/public/events/masonry/5.png b/public/events/masonry/5.png new file mode 100644 index 0000000..f26c9cf Binary files /dev/null and b/public/events/masonry/5.png differ diff --git a/public/events/masonry/5.webp b/public/events/masonry/5.webp new file mode 100644 index 0000000..25ba17b Binary files /dev/null and b/public/events/masonry/5.webp differ diff --git a/public/events/masonry/6.png b/public/events/masonry/6.png new file mode 100644 index 0000000..ad1aaf3 Binary files /dev/null and b/public/events/masonry/6.png differ diff --git a/public/events/masonry/6.webp b/public/events/masonry/6.webp new file mode 100644 index 0000000..c516f03 Binary files /dev/null and b/public/events/masonry/6.webp differ diff --git a/public/events/masonry/7.png b/public/events/masonry/7.png new file mode 100644 index 0000000..0fa5aff Binary files /dev/null and b/public/events/masonry/7.png differ diff --git a/public/events/masonry/7.webp b/public/events/masonry/7.webp new file mode 100644 index 0000000..56c798b Binary files /dev/null and b/public/events/masonry/7.webp differ diff --git a/public/events/masonry/8.png b/public/events/masonry/8.png new file mode 100644 index 0000000..68b5390 Binary files /dev/null and b/public/events/masonry/8.png differ diff --git a/public/events/masonry/8.webp b/public/events/masonry/8.webp new file mode 100644 index 0000000..bc40740 Binary files /dev/null and b/public/events/masonry/8.webp differ diff --git a/public/events/masonry/9.png b/public/events/masonry/9.png new file mode 100644 index 0000000..127a212 Binary files /dev/null and b/public/events/masonry/9.png differ diff --git a/public/events/masonry/9.webp b/public/events/masonry/9.webp new file mode 100644 index 0000000..e8c39a2 Binary files /dev/null and b/public/events/masonry/9.webp differ diff --git a/public/hp-bg-redesign.webp b/public/hp-bg-redesign.webp new file mode 100644 index 0000000..0d0b6de Binary files /dev/null and b/public/hp-bg-redesign.webp differ diff --git a/public/icons/signal.svg b/public/icons/signal.svg new file mode 100644 index 0000000..cc07d87 --- /dev/null +++ b/public/icons/signal.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/public/membersLogo/0xbow.png b/public/membersLogo/0xbow.png new file mode 100644 index 0000000..895efef Binary files /dev/null and b/public/membersLogo/0xbow.png differ diff --git a/public/membersLogo/CryptoCanal.png b/public/membersLogo/CryptoCanal.png new file mode 100644 index 0000000..2caf305 Binary files /dev/null and b/public/membersLogo/CryptoCanal.png differ diff --git a/public/membersLogo/ETHRome.png b/public/membersLogo/ETHRome.png new file mode 100644 index 0000000..304593b Binary files /dev/null and b/public/membersLogo/ETHRome.png differ diff --git a/public/membersLogo/GCC.png b/public/membersLogo/GCC.png new file mode 100644 index 0000000..ce46cb2 Binary files /dev/null and b/public/membersLogo/GCC.png differ diff --git a/public/membersLogo/LunarDAO.png b/public/membersLogo/LunarDAO.png new file mode 100644 index 0000000..c8eeb5e Binary files /dev/null and b/public/membersLogo/LunarDAO.png differ diff --git a/public/membersLogo/MolochDAO.png b/public/membersLogo/MolochDAO.png new file mode 100644 index 0000000..e25efe9 Binary files /dev/null and b/public/membersLogo/MolochDAO.png differ diff --git a/public/membersLogo/Urbe.png b/public/membersLogo/Urbe.png new file mode 100644 index 0000000..aa84b42 Binary files /dev/null and b/public/membersLogo/Urbe.png differ diff --git a/public/membersLogo/codex.svg b/public/membersLogo/codex.svg new file mode 100644 index 0000000..42573d6 --- /dev/null +++ b/public/membersLogo/codex.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/membersLogo/dyne.png b/public/membersLogo/dyne.png new file mode 100644 index 0000000..0c7e484 Binary files /dev/null and b/public/membersLogo/dyne.png differ diff --git a/public/membersLogo/gnosisdao.png b/public/membersLogo/gnosisdao.png new file mode 100644 index 0000000..08ab987 Binary files /dev/null and b/public/membersLogo/gnosisdao.png differ diff --git a/public/membersLogo/hopr.svg b/public/membersLogo/hopr.svg new file mode 100644 index 0000000..51389c7 --- /dev/null +++ b/public/membersLogo/hopr.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/membersLogo/intmax.png b/public/membersLogo/intmax.png new file mode 100644 index 0000000..c72b5b4 Binary files /dev/null and b/public/membersLogo/intmax.png differ diff --git a/public/membersLogo/kernel.png b/public/membersLogo/kernel.png new file mode 100644 index 0000000..e68be24 Binary files /dev/null and b/public/membersLogo/kernel.png differ diff --git a/public/membersLogo/labyrinth.png b/public/membersLogo/labyrinth.png new file mode 100644 index 0000000..ddda23b Binary files /dev/null and b/public/membersLogo/labyrinth.png differ diff --git a/public/membersLogo/logos.svg b/public/membersLogo/logos.svg new file mode 100644 index 0000000..a7abf1e --- /dev/null +++ b/public/membersLogo/logos.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/membersLogo/moros.png b/public/membersLogo/moros.png new file mode 100644 index 0000000..c662849 Binary files /dev/null and b/public/membersLogo/moros.png differ diff --git a/public/membersLogo/namada.png b/public/membersLogo/namada.png new file mode 100644 index 0000000..e843a8d Binary files /dev/null and b/public/membersLogo/namada.png differ diff --git a/public/membersLogo/nomos.svg b/public/membersLogo/nomos.svg new file mode 100644 index 0000000..0be3653 --- /dev/null +++ b/public/membersLogo/nomos.svg @@ -0,0 +1,4716 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/membersLogo/polis.png b/public/membersLogo/polis.png new file mode 100644 index 0000000..b2996b6 Binary files /dev/null and b/public/membersLogo/polis.png differ diff --git a/public/membersLogo/ssummit.png b/public/membersLogo/ssummit.png new file mode 100644 index 0000000..056521b Binary files /dev/null and b/public/membersLogo/ssummit.png differ diff --git a/public/membersLogo/tokendynamics.png b/public/membersLogo/tokendynamics.png new file mode 100644 index 0000000..391b4d1 Binary files /dev/null and b/public/membersLogo/tokendynamics.png differ diff --git a/public/membersLogo/waku.svg b/public/membersLogo/waku.svg new file mode 100644 index 0000000..a6e9062 --- /dev/null +++ b/public/membersLogo/waku.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/membersLogo/zcash.png b/public/membersLogo/zcash.png new file mode 100644 index 0000000..dfe16b0 Binary files /dev/null and b/public/membersLogo/zcash.png differ diff --git a/public/review.png b/public/review.png new file mode 100644 index 0000000..41954b9 Binary files /dev/null and b/public/review.png differ diff --git a/public/scripts/text-scramble.js b/public/scripts/text-scramble.js new file mode 100644 index 0000000..bcebb80 --- /dev/null +++ b/public/scripts/text-scramble.js @@ -0,0 +1,105 @@ +function applyScrambleEffect() { + const glitchTextOnceElements = document.querySelectorAll('.glitch-text'); + const glitchTextRepeatElements = document.querySelectorAll('.glitch-text-interval'); + const glitchTextHoverElements = document.querySelectorAll('.glitch-text-hover'); + + const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + + function animateScramble(element, text, duration = 1000) { + const chars = []; + element.innerHTML = ''; + const preScrambleWidth = element.offsetWidth; + element.style.width = `${preScrambleWidth}px`; + + for (let t = 0; t < text.length; t++) { + const span = document.createElement('span'); + span.innerHTML = text[t] === ' ' ? ' ' : text[t]; + chars[t] = span; + span.style.display = 'inline-block'; + element.appendChild(span); + } + + const rand = Math.random; + const SECONDS = 1000; + const FPS = 30; + const animationLength = duration; + + function animate3(k) { + const kk = k * text.length; + for (let i = 0; i < text.length; i++) { + if (kk < i) { + chars[i].innerHTML = charset[Math.floor(rand() * charset.length)]; + } else { + chars[i].innerHTML = text[i] === ' ' ? ' ' : text[i]; + } + } + } + + let start = Date.now(); + function animate() { + const current = Date.now(); + const time = current - start; + const k = time / animationLength; + + if (k < 1) { + setTimeout(animate, SECONDS / FPS); + animate3(k); + } else { + for (let i = 0; i < text.length; i++) { + chars[i].innerHTML = text[i] === ' ' ? ' ' : text[i]; + } + element.style.width = 'auto'; + element.isAnimating = false; + } + } + + animate(); + } + + // Use IntersectionObserver for once-only animation + const observer = new IntersectionObserver((entries, observer) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + const element = entry.target; + const text = element.innerText; + animateScramble(element, text); + observer.unobserve(element); + } + }); + }, { + threshold: 0.1 + }); + + glitchTextOnceElements.forEach((element) => { + observer.observe(element); + }); + + glitchTextRepeatElements.forEach((element) => { + const text = element.innerText; + + animateScramble(element, text); + + const intervalId = setInterval(() => { + if (!element.isAnimating) { + animateScramble(element, text); + } + }, 5000); + }); + + // Hover functionality for `.glitch-text-hover` elements + glitchTextHoverElements.forEach((element) => { + const text = element.innerText; + + element.addEventListener('mouseenter', () => { + // Only start the animation if it isn't already in progress + if (!element.isAnimating) { + element.isAnimating = true; + animateScramble(element, text, 800); + } + }); + + // No need for 'mouseleave' as the animation will complete even if the mouse leaves + }); +} + +document.addEventListener('DOMContentLoaded', applyScrambleEffect); diff --git a/public/testimonials/amit-chaudary.jpg b/public/testimonials/amit-chaudary.jpg new file mode 100644 index 0000000..68a383b Binary files /dev/null and b/public/testimonials/amit-chaudary.jpg differ diff --git a/public/testimonials/andreea.jpg b/public/testimonials/andreea.jpg new file mode 100644 index 0000000..53dae85 Binary files /dev/null and b/public/testimonials/andreea.jpg differ diff --git a/public/testimonials/cryptocanal.jpg b/public/testimonials/cryptocanal.jpg new file mode 100644 index 0000000..b87ce27 Binary files /dev/null and b/public/testimonials/cryptocanal.jpg differ diff --git a/public/testimonials/hack-guru.jpg b/public/testimonials/hack-guru.jpg new file mode 100644 index 0000000..9585b2e Binary files /dev/null and b/public/testimonials/hack-guru.jpg differ diff --git a/public/testimonials/jaromil.png b/public/testimonials/jaromil.png new file mode 100644 index 0000000..eaae0d8 Binary files /dev/null and b/public/testimonials/jaromil.png differ diff --git a/public/testimonials/lunar-dao.jpg b/public/testimonials/lunar-dao.jpg new file mode 100644 index 0000000..8c3f8ab Binary files /dev/null and b/public/testimonials/lunar-dao.jpg differ diff --git a/public/testimonials/matteo-tambussi.jpg b/public/testimonials/matteo-tambussi.jpg new file mode 100644 index 0000000..f308320 Binary files /dev/null and b/public/testimonials/matteo-tambussi.jpg differ diff --git a/public/testimonials/pie-man.jpg b/public/testimonials/pie-man.jpg new file mode 100644 index 0000000..07722f8 Binary files /dev/null and b/public/testimonials/pie-man.jpg differ diff --git a/src/components/AboutFooter.astro b/src/components/AboutFooter.astro index 199f1f9..8a1a148 100644 --- a/src/components/AboutFooter.astro +++ b/src/components/AboutFooter.astro @@ -2,114 +2,157 @@ import * as config from "../config.yaml"; import core from "../core.json"; import contributors from "../contributors.json"; -import { getPersonByGH } from "../lib/core.js"; -import PeopleCarousel from "../components/PeopleCarousel.astro"; +import SpeakerGrid from "./SpeakerGrid.astro"; +import SliderTestimonial from "./SliderTestimonial.astro"; +import MembersGrid from "./MembersGrid.astro"; +import { fade } from "astro:transitions"; -function findPerson(src) { - const p = core.people.find((p) => - src.refs?.twitter - ? p.refs?.twitter === src.refs.twitter - : src.refs?.bsky - ? p.refs.bsky === src.refs.bsky - : {} - ); - if (p) { - p.ct = src; - } - return p; -} +// Accept sectionsConfig as a prop +const { + sectionsConfig = [ + { name: "community", visible: true, order: 1 }, + { name: "socialLinks", visible: true, order: 2 }, + { name: "speakers", visible: true, order: 3 }, + { name: "core contributors", visible: true, order: 4 }, + { name: "contributors", visible: true, order: 5 }, + { name: "testimonials", visible: true, order: 6 }, + { name: "membersGrid", visible: true, order: 7 }, + { name: "communityPartners", visible: true, order: 8 }, + ], +} = Astro.props; -function personLink(person) { - return person.refs?.twitter - ? `https://twitter.com/${person.refs.twitter}` - : person.refs?.bsky - ? `https://bsky.app/profile/${person.refs.bsky}` - : "#"; -} +// Function to sort sections by order +const sortedSections = sectionsConfig + .filter((section) => section.visible) + .sort((a, b) => a.order - b.order); --- - -
-

- Join the Community -

-
{config.landing.community}
+ +
{config.landing.community}
+
+ )} -

Speakers

-
- { - core.people - .filter((p) => !core.teams["core-team"].includes(p.id)) - .filter((p) => p.imageUrl) - .map((person) => ( -
- - - -
- )) - } -
- -
- -
- -

Git Contributors

-
- { - // filter(p => !core.teams['core-team'].includes(getPersonByGH(p.login)?.id)) - contributors.items.map((contrib) => ( -
- - + {section.name === "socialLinks" && ( + - )) - } -
+ )} -
- - - -
-
+ {section.name === "speakers" && ( +
+

Speakers

+ +
+ )} + + {section.name === "core contributors" && ( +
+

Core Contributors

+ +
+ )} + + {section.name === "contributors" && ( +
+

Contributors

+
+ {contributors.items.map((contrib) => ( +
+ + + +
+ ))} +
+
+ + + +
+
+ )} + + {section.name === "testimonials" && ( +
+

+ What People Have To Say About US +

+ +
+ )} + + {section.name === "membersGrid" && ( +
+

Members

+
+ +
+
+ )} + + )) +} diff --git a/src/components/AboutItem.astro b/src/components/AboutItem.astro index 85a236e..d203ca6 100644 --- a/src/components/AboutItem.astro +++ b/src/components/AboutItem.astro @@ -14,7 +14,7 @@ const { title, subtext, variant = "primary" } = Astro.props; }`} > {title} @@ -33,4 +33,4 @@ const { title, subtext, variant = "primary" } = Astro.props; ) } - + \ No newline at end of file diff --git a/src/components/AboutItemGrid.astro b/src/components/AboutItemGrid.astro index 14cb84c..7634a85 100644 --- a/src/components/AboutItemGrid.astro +++ b/src/components/AboutItemGrid.astro @@ -2,236 +2,110 @@ import AboutItem from "../components/AboutItem.astro"; --- -
- -
-
- General public - Projects - Startupers -
-
- Developers - Audit companies - Investors -
+ +
+
+

+ We cultivate and foster a culture of privacy in web3 making data free + and public. +

+

+ Check our annual reports, infographics, privacy awards, newsletter, and + guidelines. +

+
- - -
-
- -
- - Market stats - - - - Like Crunchbase, but free forever - -
-
+
+
+ +

+ By developing free and open tools,
we empower people to make informed + decisions: +

-
- -
- - Privacy Ranking - - - - Scoring and review of current privacy projects - +
+
+
+
+
-
-
- -
- - Academy - - - Education for general public how to reach privacy - -
-
-
- -
- - Research - - - - Anual reports, Frameworks, Tools, Books - -
-
-
- -
- - Data - - - + + For Projects, Use-case list, Market & Funding info
- - -
-
- -
- - Advocacy - - - - Branding “decentralization = privacy” - -
-
-
- -
- - Events - - - - Meetups, Summits, Hackathons, Camps - +
+
+
+
-
-
- -
- - Ecosystems collaboration - - - Networks, Alliances, Media -
-
-
- -
- - Standartisation - - - - Privacy-features, security audit (example) - -
-
-
- -
- - Incubation - - - Product managers facilitation, Business sustainability +
+
+ + HACKATHON IDEA GENERATOR + +
+ Helps developers build applications that address real-world + problems, that people will actually use.
- - -
-
-
- - GENERAL PUBLIC - -
    -
  • Milions of educated users
  • -
  • Higher privacy culture
  • -
+
+
+
+
-
- - PROJECTS +
+
+ + WEEK IN PRIVACY + +
+ Weekly newsletter with round-up of the most important news + happening around privacy in Web3 -
    -
  • Better privacy features
  • -
  • New use-cases
  • -
  • Efficient demos
  • -
-
-
- - SECURITY AUDIT COMPANIES - -
    -
  • New “privacy audit” category
  • -
  • Significant growth of audited projects.
  • -
-
-
-
-
- - DEVELOPERS - -
    -
  • More devs building privacy
  • -
  • More sustainable projects.
  • -
-
-
- - STARTUPERS - -
    -
  • More privacy-oriented projects
  • -
  • Longer runway
  • -
- -
+
+ + + +
+
+

+ We make privacy accessible for everyone, empowering people to learn and + implement best practices effectively. +

+

+ From mentoring at hackathons, guidelines for developers, and the + Cypherpunk Academy - we offer training, incubation, and acceleration + programs. +

+ +
+
+
\ No newline at end of file diff --git a/src/components/EventItem.astro b/src/components/EventItem.astro index 618c9a7..3a20db0 100644 --- a/src/components/EventItem.astro +++ b/src/components/EventItem.astro @@ -3,7 +3,7 @@ const { item } = Astro.props; import { marked } from 'marked'; import EventsExt from '../events-ext.json'; import core from "../core.json"; -import { dateFormat, dateInfo, dateEnd, nameRenderer, ccRenderer, eventStatus, getSpeaker, findExt, getEventPoster } from '../lib/events.js'; +import { dateFormat, dateEnd, nameRenderer, ccRenderer, eventStatus, getSpeaker, findExt, getEventPoster } from '../lib/events.js'; import SpeakerList from './SpeakerList.astro'; import PeopleCarousel from './PeopleCarousel.astro'; @@ -71,7 +71,7 @@ const eventPoster = getEventPoster(item) } {/*
*/} {item.links?.rsvp && - + }
diff --git a/src/components/EventMasonry.astro b/src/components/EventMasonry.astro new file mode 100644 index 0000000..fdc6c1e --- /dev/null +++ b/src/components/EventMasonry.astro @@ -0,0 +1,147 @@ +--- +const { + images = [ + { webp: "/events/masonry/1.webp", png: "/events/masonry/1.png" }, + { webp: "/events/masonry/2.webp", png: "/events/masonry/2.png" }, + { webp: "/events/masonry/3.webp", png: "/events/masonry/3.png" }, + { webp: "/events/masonry/4.webp", png: "/events/masonry/4.png" }, + { webp: "/events/masonry/5.webp", png: "/events/masonry/5.png" }, + { webp: "/events/masonry/6.webp", png: "/events/masonry/6.png" }, + { webp: "/events/masonry/7.webp", png: "/events/masonry/7.png" }, + { webp: "/events/masonry/8.webp", png: "/events/masonry/8.png" }, + { webp: "/events/masonry/9.webp", png: "/events/masonry/9.png" }, + ], +} = Astro.props; +--- + + +
+ { + images.slice(0, 4).map((image, index) => ( +
+ {`Image +
+ )) + } +
+ +
+ { + images.slice(4).map((image, index) => ( +
+ {`Image +
+ )) + } +
+ + + + + diff --git a/src/components/MembersGrid.astro b/src/components/MembersGrid.astro new file mode 100644 index 0000000..ec38a89 --- /dev/null +++ b/src/components/MembersGrid.astro @@ -0,0 +1,61 @@ +--- +const { team, people, core } = Astro.props; + +const filteredPeople = core + ? people.filter((p) => !team.includes(p.id)).filter((p) => p.imageUrl) + : team; + +// Limit the number of members to 12 (2 rows with a max of 6 columns each) +const limitedPeople = filteredPeople.slice(0, 12); + +function personLink(person) { + if (person.refs?.twitter) { + return `https://twitter.com/${person.refs.twitter}`; + } else if (person.refs?.bsky) { + return `https://bsky.app/profile/${person.refs.bsky}`; + } else if (person.refs?.linkedin) { + return `https://www.linkedin.com/in/${person.refs.linkedin}`; + } else if (person.refs?.github) { + return `https://github.com/${person.refs.github}`; + } else if (person.refs?.matrix) { + return `https://matrix.to/#/${person.refs.matrix}`; + } else if (person.refs?.email) { + return `mailto:${person.refs.email}`; + } else { + return "#"; + } +} +--- + +
+ { + limitedPeople.map((person) => ( +
+ + {person.name} + +
+

{person.name}

+ {person.refs && ( +

+ {person.refs.twitter && `@${person.refs.twitter}`} + {person.refs.bsky && ` | bsky: ${person.refs.bsky}`} + {person.refs.linkedin && ` | LinkedIn: ${person.refs.linkedin}`} + {person.refs.github && ` | GitHub: ${person.refs.github}`} + {person.refs.matrix && ` | Matrix: ${person.refs.matrix}`} + {person.refs.email && ` | Email: ${person.refs.email}`} +

+ )} +
+
+ )) + } +
diff --git a/src/components/MembershipOtherOptionsWidget.astro b/src/components/MembershipOtherOptionsWidget.astro new file mode 100644 index 0000000..7337b01 --- /dev/null +++ b/src/components/MembershipOtherOptionsWidget.astro @@ -0,0 +1,165 @@ +
+
+
+

SPONSORSHIP

+
+
+
+
+
+

+ Sponsors are our value-aligned partners who help us maintain + financial sustainability. They support our mission by contributing + to all our activities, whether it's a research project, an event, + a merchandise release. +

+
+ + + +
+
+
+
+
+
+
+

DONATE

+
+
+
+
+
+

+ Our diverse array of research, projects development, events and + tools production is all offered freely, fueled by people and + organizations who care about digital privacy. +

+

+ Support our independence, help us to advocate for freedom +

+
+ +
+
+
+
+
+
+

+ SPEAK at our events +

+
+
+
+
+
+

+ At Web3Privacy Now, we are dedicated to fostering growth, + innovation, and collaboration. We offer a supportive environment + where like-minded individuals come together to share knowledge, + spark creativity, and drive positive change. +

+
+
+ +
+
+
+
+
diff --git a/src/components/MembershipWidget.astro b/src/components/MembershipWidget.astro new file mode 100644 index 0000000..f4b43f0 --- /dev/null +++ b/src/components/MembershipWidget.astro @@ -0,0 +1,163 @@ +--- +import core from "../core.json"; +--- + +
+
+
+

INDIVIDUAL

+
+
+
+
+
+

+ For members who want to be more involved in the governance of our + initiative, we offer the opportunity to participate in the + decisions and voting on our plans and other topics. +

+
+ + Benefits + +
    +
  • You are supporting a good thing!
  • +
  • Guaranteed access to all our events
  • +
  • Privacy Swag Pack
  • +
  • Deals from our partners
  • +
+
+
+ +
+
+ Price + + €100 / Year + + +

+ After making your donation, kindly send us the tx hash, your T-shirt size, and let us know if you would like + your membership to be public or kept private. +

+
+ +
+
+
+
+
+
+
+

+ Organisations +

+
+
+
+
+
+

+ Members are our chosen collaborators for mutual support and + growth. Rather than one-time deals for individual events or + projects, we strive for consistent collaboration to achieve + lasting impact. +

+
+
+ + Benefits + +
    +
  • + Greater Exposure +

    + Ensure visibility at all our events [Congresses, Summits & + Hackathons] +

    +
  • +
  • + Access to Talent + +

    + Connect with the right builders to test or develop your beta + projects or services. +

    +
  • +
  • + Targeted Outreach + +

    Grow impact through strategic, targeted communications.

    +
  • +
  • + Tought Leadership + +

    Participate in speaking engagements and mentorship roles.

    +
  • +
  • + Focused Engagement +

    + Reach and interact with specific, highly-relevant audiences. +

    +
  • +
+
+
+
+
+
+ Our membership has multiple tiers ranging from + + 7,000 to 70,000 € / year + + Membership for registered non-profit organizations is + + + 3,000 € / year + +
+ +
+ +
+
+
+
+
+
+
diff --git a/src/components/SliderTestimonial.astro b/src/components/SliderTestimonial.astro new file mode 100644 index 0000000..294d448 --- /dev/null +++ b/src/components/SliderTestimonial.astro @@ -0,0 +1,274 @@ +--- +const testimonials = [ + { + id: "jaromil", + author: "Jaromil", + designation: "Hacktivist, Founder & Director at Dyne.org Foundation", + reviewText: + "Privacy-by-design is the best way to approach the web3 frontier and develop something that empowers people and builds the critical mass for its sustainability. Web3Privacy Now focuses on the best possible goals for crypto developments: privacy, independence and decentralisation.", + imageUrl: "/testimonials/jaromil.png", + }, + { + id: "hackguru", + author: "HackGuru", + designation: "Developer Relation at Waku", + reviewText: + "They have been organising amazing pro-privacy initiatives. Been a big fan and excited to continue contributing to this amazing community : )", + imageUrl: "/testimonials/hack-guru.jpg", + }, + { + id: "lunar-dao", + author: "Lunar Dao", + designation: null, + reviewText: + "A catalyst leading a brilliant charge into privacy content for the web3 ecosystem.", + imageUrl: "/testimonials/lunar-dao.jpg", + }, + { + id: "amit-chaudhary", + author: "Amit Chaudhary", + designation: "Founder Labyrinth, Ex Head of DeFi Research Polygon", + reviewText: + "This is the best community for privacy that unites people to collaborate and turns user privacy into reality with exciting narratives.", + imageUrl: "/testimonials/amit-chaudary.jpg", + }, + { + id: "andreea", + author: "Andreea", + designation: null, + reviewText: + "I loved the event, the place, the people, the conversations, the swag. You guys are incredible! I think I won’t be attending other crypto events that much anymore.", + imageUrl: "/testimonials/andreea.jpg", + }, + { + id: "cryptocanal", + author: "CryptoCanal", + designation: null, + reviewText: + "One event at a time, they are building an ecosystem to ensure that no one forgets the political frontiers being pushed by crypto. Web3Privacy Now has been rallying support and ensuring that privacy holds a prime spot at all the major conferences worldwide.", + imageUrl: "/testimonials/cryptocanal.jpg", + }, + { + id: "matteo-tambussi", + author: "Matteo Tambussi", + designation: "Founder of Spaghetteth, Project Manager StakeCapital", + reviewText: + "The balance between Transparency and Privacy, accountable and unaccountable, manifest and secret, convex and concave, 1 and 0 is one of the most fun puzzles blockchain tech has to solve for the world. W3P community approaches this with incredible humility and an unravel-the-knot open debate approach. Also I like how they dress.", + imageUrl: "/testimonials/matteo-tambussi.jpg", + }, + { + id: "pie-man", + author: "Pie Man", + designation: "Co-Founder Fairblock Network", + reviewText: + "Most bullish event by far in EthCC was Web3Privacy Now: right in the middle of the park without anything fancy going on, the only incentive to stay was lovely people with extreme passion for deep but practical steps, cryptography, and amazing applications.", + imageUrl: "/testimonials/pie-man.jpg", + }, +]; + +// Usage +let currentTestimonial = 0; +--- + +
+
+
+ Review Image +
+
+

+ {testimonials[currentTestimonial].author}: +

+

+ "{testimonials[currentTestimonial].reviewText}" +

+
+
+
+ + +
+ +
+
+ +
+ +
+ { + testimonials.map((_, index) => ( +
+
+
+ + diff --git a/src/components/SpeakerGrid.astro b/src/components/SpeakerGrid.astro new file mode 100644 index 0000000..2062610 --- /dev/null +++ b/src/components/SpeakerGrid.astro @@ -0,0 +1,75 @@ +--- +import { parseAndWrapCaptions } from "../../utils/captionParser"; + +const { people, team, core } = Astro.props; + +// Filter based on the `core` parameter +const members = core ? people.filter((p) => { + return team.includes(p.id) +}).filter((p) => p.imageUrl) : team; + +// const filteredPeople = members.filter((p) => p.imageUrl).slice(0, 12); +const filteredPeople = members.filter((p) => p.imageUrl); + +function personLink(person) { + if (person.refs?.twitter) { + return `https://twitter.com/${person.refs.twitter}`; + } else if (person.refs?.bsky) { + return `https://bsky.app/profile/${person.refs.bsky}`; + } else if (person.refs?.linkedin) { + return `https://www.linkedin.com/in/${person.refs.linkedin}`; + } else if (person.refs?.github) { + return `https://github.com/${person.refs.github}`; + } else if (person.refs?.matrix) { + return `https://matrix.to/#/${person.refs.matrix}`; + } else if (person.refs?.designation) { + return `${person.refs.designation}`; + } else if (person.refs?.email) { + return `mailto:${person.refs.email}`; + } else { + return "#"; + } +} +--- + +
+ { + filteredPeople.map((person) => ( +
+ + {person.name} + +
+

{person.name}

+ + {person.refs && ( +

+ {person.refs.twitter && `@${person.refs.twitter}`} + {person.refs.email && ` | Email: ${person.refs.email}`} + {person.refs.bsky && ` | bsky: ${person.refs.bsky}`} + {person.refs.linkedin && ` | LinkedIn: ${person.refs.linkedin}`} + {person.refs.github && ` | GitHub: ${person.refs.github}`} + {person.refs.matrix && ` | Matrix: ${person.refs.matrix}`} + {person.refs.email && ` | Email: ${person.refs.email}`} +

+

+ + +

+ {person.refs.designation && `${person.refs.designation}`} + +

+ )} +
+
+ )) + } +
diff --git a/src/config.yaml b/src/config.yaml index b4c2795..1fe2970 100644 --- a/src/config.yaml +++ b/src/config.yaml @@ -1,5 +1,5 @@ title: Web3Privacy Now -description: Advocates worldwide are uniting to make privacy fundamental pillar of the Web3 industry, transforming it into a cultural movement that champions freedom and decentralization. +description: The leading nonprofit advancing Privacy & Freedom in the web3 industry. 
In our Ecosystem, we foster a culture that empowers decentralization, open-source , and anti surveillance. header: menu: - name: Home @@ -22,7 +22,7 @@ header: link: news - name: Docs link: docs - - name: Membership + - name: Get Involved link: membership url: /membership #- name: Manifesto @@ -54,7 +54,9 @@ footer: link: matrix hero: text: | - Advocates worldwide are uniting to make privacy fundamental pillar of the Web3 industry, transforming it into a cultural movement that champions freedom and decentralization. + The leading nonprofit advancing Privacy & Freedom in the web3 industry. +
+ In our Ecosystem, we foster a culture that empowers decentralization, open-source, and anti surveillance. landing: merch: | To make humans gain control over their privacy by utilizing Web3 stack. So privacy would become a cultural phenomena & active lifestyle. diff --git a/src/core.json b/src/core.json index 8d37805..37be0cc 100644 --- a/src/core.json +++ b/src/core.json @@ -24,10 +24,266 @@ "telegram": "https://t.me/+AKj7mTSVcTc3N2Q0" }, "teams": { - "core-team": [ - "mykola-siusko", - "pg", - "coinmandeer" + "core-team": ["mykola-siusko", "pg", "coinmandeer"], + "members": [ + { + "name": "LOGOS", + "imageUrl": "/membersLogo/logos.svg", + "refs": { + "website": "https://logos.co/", + "twitter": "logos_network" + } + }, + { + "name": "WAKU", + "imageUrl": "/membersLogo/waku.svg", + "refs": { + "website": "https://waku.org/", + "twitter": "waku_org" + } + }, + { + "name": "Nomos", + "imageUrl": "/membersLogo/nomos.svg", + "refs": { + "website": "https://nomos.tech/", + "twitter": "Nomos_tech" + } + }, + { + "name": "Codex", + "imageUrl": "/membersLogo/codex.svg", + "refs": { + "website": "https://nomos.tech/", + "twitter": "Codex_storage" + } + }, + { + "name": "Dyne", + "imageUrl": "/membersLogo/dyne.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "dyneorg" + } + }, + { + "name": "DNOSIS DAO", + "imageUrl": "/membersLogo/gnosisdao.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "dyneorg" + } + }, + { + "name": "0xbow", + "imageUrl": "/membersLogo/0xbow.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "0xbowio" + } + }, + { + "name": "Labyrinth", + "imageUrl": "/membersLogo/labyrinth.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "Labyrinth_HQ" + } + }, + { + "name": "Namada", + "imageUrl": "/membersLogo/namada.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "namada" + } + }, + { + "name": "Intmax", + "imageUrl": "/membersLogo/intmax.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "intmaxIO" + } + }, + { + "name": "MorosNet", + "imageUrl": "/membersLogo/moros.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "morosnet" + } + }, + { + "name": "TokenDynamics", + "imageUrl": "/membersLogo/tokendynamics.png", + "refs": { + "website": "https://nomos.tech/", + "twitter": "tokendynamics" + } + } + ], + "community-partners": [ + { + "name": "HOPR", + "imageUrl": "/membersLogo/hopr.svg", + "refs": { + "website": "https://hoprnet.org/", + "twitter": "hoprnet" + } + }, + { + "name": "ETHRome", + "imageUrl": "/membersLogo/ETHRome.png", + "refs": { + "website": "https://www.ethrome.org/", + "twitter": "ETHRome" + } + }, + { + "name": "LunarDAO", + "imageUrl": "/membersLogo/LunarDAO.png", + "refs": { + "website": "https://lunardao.net/", + "twitter": "lunarpunksquad" + } + }, + { + "name": "MolochDAO", + "imageUrl": "/membersLogo/MolochDAO.png", + "refs": { + "website": "https://molochdao.com/", + "twitter": "molochdao" + } + }, + { + "name": "Urbe.eth", + "imageUrl": "/membersLogo/Urbe.png", + "refs": { + "website": "https://linktr.ee/urbe.eth", + "twitter": "urbeEth" + } + }, + { + "name": "CryptoCanal", + "imageUrl": "/membersLogo/CryptoCanal.png", + "refs": { + "website": "https://lu.ma/cryptocanal", + "twitter": "cryptocanal" + } + }, + { + "name": "ParalelniPolis", + "imageUrl": "/membersLogo/polis.png", + "refs": { + "website": "https://www.paralelnipolis.cz/en/", + "twitter": "Paralelni_polis" + } + }, + { + "name": "GCCofCommons", + "imageUrl": "/membersLogo/GCC.png", + "refs": { + "website": "https://www.gccofficial.org/en", + "twitter": "GCCofCommons" + } + }, + { + "name": "Zcash", + "imageUrl": "/membersLogo/zcash.png", + "refs": { + "website": "https://z.cash/", + "twitter": "zcash" + } + }, + { + "name": "Kernel Community", + "imageUrl": "/membersLogo/kernel.png", + "refs": { + "website": "https://kernel.community/", + "twitter": "Kernel0x" + } + }, + { + "name": "Shielding Summit", + "imageUrl": "/membersLogo/ssummit.png", + "refs": { + "website": "https://shieldingsummit.org/", + "twitter": "ShieldingSummit" + } + } + ], + "core-speakers": [ + "david-chaum", + "tor-ekeland", + "michael-bauwens", + "vitalik-buterin", + "paul-dylan-ennis", + "jaromil", + "ameen-soleimani", + "ahmed-ghappour", + "scott-moore", + "juraj-bednar", + "kurt-opsahl", + "guy-zyskind" + ], + + "core-contributors": [ + { + "id": "mykola-siusko", + "name": "Mykola Siusko", + "caption": "Chief empathy officer", + "country": "es", + "imageUrl": "https://data.web3privacy.info/img/people/mykola-siusko.png" + }, + { + "id": "pg", + "name": "PG", + "caption": "Larrikin sling master", + "country": "it", + "imageUrl": "https://data.web3privacy.info/img/people/pg.jpg" + }, + { + "id": "michael-parenti", + "name": "Michael Parenti", + "caption": "Ops & vibe", + "country": "us", + "imageUrl": "/core-contributors/michael-parenti.png" + }, + { + "id": "coinmandeer", + "name": "Coinmandeer", + "caption": "UI/UX Design & Brand", + + "imageUrl": "https://data.web3privacy.info/img/people/coinmandeer.png" + }, + { + "id": "robert", + "name": "Robert De Groot", + "caption": "Partnership & Volunteers", + + "imageUrl": "/core-contributors/robert.png" + }, + { + "id": "cat", + "name": "CAT THAT LURKS", + "caption": "“Like all pure creatures, cats are practical.” – William S. Burroughs", + + "imageUrl": "/core-contributors/cat.png" + }, + { + "id": "odd", + "name": "ODD", + "caption": "Copywriting & Education", + "imageUrl": "/core-contributors/odd.png" + }, + { + "id": "mf", + "name": "MF", + "caption": "master of caffeine", + + "imageUrl": "/core-contributors/mf.png" + } ] }, "research": [ @@ -36,12 +292,8 @@ "title": "ZK solutions DB", "status": "live", "sort": 1, - "labels": [ - "db" - ], - "assignees": [ - "Msiusko" - ], + "labels": ["db"], + "assignees": ["Msiusko"], "caption": "General DB aggregation focused on ZK for privacy.", "links": { "web": "https://github.com/web3privacy/web3privacy/tree/main/ZKprivacylandscape#readme", @@ -53,12 +305,8 @@ "title": "Privacy Use-Cases DB", "status": "live", "sort": 3, - "labels": [ - "db" - ], - "assignees": [ - "Msiusko" - ], + "labels": ["db"], + "assignees": ["Msiusko"], "caption": "Basic DB of the privacy-centric use-cases.", "links": { "web": "https://github.com/Msiusko/web3privacy/blob/main/Use-cases.md", @@ -71,9 +319,7 @@ "status": "live", "sort": 5, "labels": [], - "assignees": [ - "Msiusko" - ], + "assignees": ["Msiusko"], "caption": "Pagency framework for facilitation privacy use-cases (privacy services modelling)", "links": { "web": "https://github.com/web3privacy/web3privacy/blob/main/Pagency/Pagency%20-%20privacy%20use-case%20facilitation%20framework.pdf", @@ -85,12 +331,8 @@ "title": "Privacy Projects Hiring", "status": "live", "sort": 4, - "labels": [ - "db" - ], - "assignees": [ - "Msiusko" - ], + "labels": ["db"], + "assignees": ["Msiusko"], "caption": "Hiring snapshot across the market: total vacancies, grades, technical x non-technical positions, hiring scope within specific companies & domains.", "links": { "web": "https://docs.google.com/spreadsheets/d/1dN6bIWyOh01Dl-y1iZh-1TASZxKUefD098BUALcnUb8/edit?usp=sharing", @@ -112,10 +354,7 @@ "status": "backlog", "sort": 2, "labels": [], - "assignees": [ - "EclecticSamurai", - "Msiusko" - ], + "assignees": ["EclecticSamurai", "Msiusko"], "links": {} }, { @@ -124,10 +363,7 @@ "status": "backlog", "sort": 3, "labels": [], - "assignees": [ - "EclecticSamurai", - "Msiusko" - ], + "assignees": ["EclecticSamurai", "Msiusko"], "links": {} }, { @@ -136,9 +372,7 @@ "status": "in-progress", "sort": 0, "labels": [], - "assignees": [ - "Msiusko" - ], + "assignees": ["Msiusko"], "caption": "Comprehensive privacy-centric research aimed to map Ethereum-centric privacy services, use-cases, product stages, missing areas (use-cases), funding landscape etc Supported by MolochDAO", "links": { "web": "https://github.com/web3privacy/web3privacy/blob/main/Market%20overview/Ethereum%20Ecosystem/Readme.md", @@ -150,9 +384,7 @@ "title": "Privacy use-cases DB 2.0 (major update)", "status": "backlog", "sort": 4, - "labels": [ - "db" - ], + "labels": ["db"], "assignees": [], "links": {} }, @@ -162,9 +394,7 @@ "status": "backlog", "sort": 1, "labels": [], - "assignees": [ - "Msiusko" - ], + "assignees": ["Msiusko"], "links": {} }, { @@ -173,9 +403,7 @@ "status": "in-progress", "sort": 1, "labels": [], - "assignees": [ - "Msiusko" - ], + "assignees": ["Msiusko"], "links": {} }, { @@ -184,9 +412,7 @@ "status": "live", "sort": 2, "labels": [], - "assignees": [ - "Msiusko" - ], + "assignees": ["Msiusko"], "caption": "150-pages report on the state of privacy x web3 from funding to key projects.", "links": { "web": "https://github.com/web3privacy/web3privacy/blob/main/Market%20overview/Privacy%20market%20outlook%20in%20Web3%20by%20Mykola%20Siusko%20(Jan%202023).pdf" @@ -198,9 +424,7 @@ "status": "live", "sort": 6, "labels": [], - "assignees": [ - "Msiusko" - ], + "assignees": ["Msiusko"], "caption": "Research how privacy tools can protect human rights, vulnerable audiences within the war, migration & cross-border relations. Supported by Zcash Foundation.", "links": { "web": "https://github.com/web3privacy/grants/blob/main/staticobjects/Privacy%20use%20cases%20with%20the%20focus%20on%20Zcash%20(privacy%20coins)_Siusko.pdf" @@ -212,9 +436,7 @@ "status": "live", "sort": 0, "labels": [], - "assignees": [ - "Msiusko" - ], + "assignees": ["Msiusko"], "caption": "Privacy services x web3 initial market DB aggregation: segmentation, key links (web, git, docs), ecosystem, product liveliness etc. 600 projects in the DB.", "links": { "web": "https://github.com/web3privacy/web3privacy?tab=readme-ov-file#contents" @@ -1645,9 +1867,7 @@ "design": { "image": "bucharest01" }, - "helpers": [ - "Alina" - ], + "helpers": ["Alina"], "links": { "rsvp": "https://lu.ma/w3pn-meetup-bucharest1" }, @@ -1693,10 +1913,7 @@ "place-address": "Paleisstraat 107, 1012 ZL Amsterdam, Paesi Bassi", "lead": "PG", "visitors": 90, - "helpers": [ - "Mykola", - "Alina" - ], + "helpers": ["Mykola", "Alina"], "coincidence": "[ETHDam](https://www.ethdam.com/)", "slots": 3, "links": { @@ -1749,9 +1966,7 @@ "coincidence": "ETHBerlin", "lead": "Mykola", "visitors": 150, - "helpers": [ - "ligi" - ], + "helpers": ["ligi"], "speakers": [ "afri-schoedon", "joshua-davila", @@ -1800,11 +2015,7 @@ "country": "de", "coincidence": "ETHBerlin", "lead": "Tree", - "helpers": [ - "Mykola", - "Coinmandeer", - "Robert" - ], + "helpers": ["Mykola", "Coinmandeer", "Robert"], "visitors": 210, "links": { "web": "https://c24ber.web3privacy.info/" @@ -1847,11 +2058,7 @@ "coincidence": "ETHPrague", "lead": "PG", "visitors": 180, - "helpers": [ - "PG", - "Mykola", - "Coinmandeer" - ], + "helpers": ["PG", "Mykola", "Coinmandeer"], "slots": 16, "links": { "rsvp": "https://lu.ma/w3pn-summit-prague2" @@ -1921,11 +2128,7 @@ "links": { "rsvp": "https://lu.ma/w3pn-meetup-bru1" }, - "speakers": [ - "edward-fricker", - "joshua-davila", - "mykola-siusko" - ], + "speakers": ["edward-fricker", "joshua-davila", "mykola-siusko"], "images": { "wide-square": "https://data.web3privacy.info/img/events/2024/m24bru-wide-square.png", "poster": "https://data.web3privacy.info/img/events/2024/m24bru-poster.png", @@ -1964,10 +2167,7 @@ "design": { "image": "rome02" }, - "helpers": [ - "Mykola", - "Alina" - ], + "helpers": ["Mykola", "Alina"], "links": { "rsvp": "https://lu.ma/w3pn-meetup-rome1" }, @@ -2107,13 +2307,9 @@ "links": { "web": "https://lu.ma/w3pm-prg1" }, - "speakers": [ - "vaclav-pavlin", - "radek-svarz", - "marcel-kolaja" - ], + "speakers": ["vaclav-pavlin", "radek-svarz", "marcel-kolaja"], "images": {}, "thumbs": {} } ] -} \ No newline at end of file +} diff --git a/src/layouts/base.astro b/src/layouts/base.astro index 18c93b3..61beaa6 100644 --- a/src/layouts/base.astro +++ b/src/layouts/base.astro @@ -152,10 +152,16 @@ function genHeading(str) {