data update

This commit is contained in:
tree🌴 2024-01-25 21:51:47 +01:00
parent e7abd5895a
commit 843dc0b205
11 changed files with 423 additions and 320 deletions

View file

@ -8,12 +8,12 @@
"build": "astro build",
"preview": "astro preview",
"astro": "astro",
"core": "deno run --allow-all utils/core.js",
"contribs": "deno run --allow-all utils/contributors.js",
"events": "deno run --allow-all utils/events.js",
"articles": "deno run --allow-all utils/articles.js",
"talks": "deno run --allow-all utils/talks.js",
"explorer": "deno run --allow-all utils/explorer.js",
"all": "npm run contribs && npm run events && npm run articles && npm run talks && npm run explorer"
"all": "npm run core && npm run contribs && npm run articles && npm run talks && npm run explorer"
},
"dependencies": {
"@astrojs/tailwind": "^5.0.2",

View file

@ -1,6 +1,7 @@
---
import * as config from '../config.yaml';
import core from '../core.json';
import contributors from '../contributors.json';
---
@ -9,7 +10,7 @@ import contributors from '../contributors.json';
<h1><a href="https://docs.web3privacy.info/follow-us">Follow us</a></h1>
<div class="w3pn-wgrid">
{config.landing.follow.map((item) => (
<a href={item.url || config.links[item.link]} target="_blank">
<a href={item.url || core.links[item.link]} target="_blank">
<span><span class="icon" class:list={[item.ico || ""]}></span></span>
<span class="title">{item.name}</span>
<span>{item.text}</span>
@ -21,7 +22,7 @@ import contributors from '../contributors.json';
<h1><a href="https://docs.web3privacy.info/communication">Coordination</a></h1>
<div class="w3pn-wgrid">
{config.landing.coord.map((item) => (
<a href={item.url || config.links[item.link]} target="_blank">
<a href={item.url || core.links[item.link]} target="_blank">
<span><span class="icon" class:list={[item.ico || ""]}></span></span>
<span class="title">{item.name}</span>
<span>{item.text}</span>

View file

@ -1,16 +1,4 @@
title: Web3Privacy Now
links:
docs: https://docs.web3privacy.info/
manifesto: https://docs.web3privacy.info/manifesto
github: https://github.com/web3privacy
twitter: https://twitter.com/web3privacy
matrix: https://matrix.web3privacy.info
bluesky: https://bsky.app/profile/web3privacy.info
mirror: https://mirror.xyz/0x0f1F3DAf416B74DB3DE55Eb4D7513a80F4841073/
youtube: https://youtube.com/@Web3PrivacyNow/
forum: https://forum.web3privacy.info
explorer: https://explorer.web3privacy.info
telegram: https://t.me/web3privacynow
header:
menu:
- name: Home

393
src/core.json Normal file
View file

@ -0,0 +1,393 @@
{
"name": "Web3Privacy Now",
"links": {
"ocs": "https://docs.web3privacy.info/",
"manifesto": "https://docs.web3privacy.info/manifesto",
"github": "https://github.com/web3privacy",
"twitter": "https://twitter.com/web3privacy",
"matrix": "https://matrix.web3privacy.info",
"bluesky": "https://bsky.app/profile/web3privacy.info",
"mirror": "https://mirror.xyz/0x0f1F3DAf416B74DB3DE55Eb4D7513a80F4841073/",
"youtube": "https://youtube.com/@Web3PrivacyNow/",
"forum": "https://forum.web3privacy.info",
"explorer": "https://explorer.web3privacy.info",
"telegram": "https://t.me/web3privacynow"
},
"core-team": [
{
"name": "Tree"
},
{
"name": "Mykola"
},
{
"name": "PG"
},
{
"name": "Coinmandeer"
}
],
"projects": [
{
"id": "privacy-explorer",
"name": "Privacy Explorer",
"links": {
"docs": "https://docs.web3privacy.info/projects/privacy-explorer"
}
},
{
"id": "privacy-tech-awards",
"name": "Privacy Tech Awards",
"links": {
"docs": "https://docs.web3privacy.info/projects/privacy-tech-awards"
}
},
{
"id": "annual-report",
"name": "Privacy Annual Report",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/annual-report"
}
},
{
"id": "pagency",
"name": "Pagency Framework for private use-case ideation",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/pagency"
}
},
{
"id": "hiring",
"name": "Privacy Projects Hiring",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/hiring"
}
},
{
"id": "privacy-guides",
"name": "Privacy Guides",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/privacy-guides"
}
},
{
"id": "usecase-db",
"name": "Privacy Use-Cases DB",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/usecase-db"
}
},
{
"id": "zk-solutions",
"name": "ZK Solutions DB",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/zk-solutions"
}
},
{
"id": "hackathon-pack",
"name": "Hackathon Curation Pack",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/hackathon-pack"
}
},
{
"id": "privacy-ecosystem-report",
"name": "Ethereum Privacy Ecosystem: report",
"type": "research",
"links": {
"docs": "https://docs.web3privacy.info/research/Ethereum%20Privacy%20Ecosystem"
}
}
],
"events": [
{
"id": "w3ps1",
"type": "summit",
"date": "2023-06-05",
"city": "Prague",
"country": "cz",
"place": "[X10](https://www.divadlox10.cz/)",
"confirmed": true,
"coincidence": "[ETHPrague](https://ethprague.com/)",
"lead": "Tree",
"slots": 16,
"visitors": 180,
"links": {
"web": "https://prague.web3privacy.info/",
"git": "https://github.com/web3privacy/w3ps1"
}
},
{
"id": "w3ps2",
"type": "summit",
"date": "2023-10-05",
"city": "Rome",
"country": "it",
"place": "[Villaggio Globale](https://maps.app.goo.gl/S7kUruNvbpjgHuSh9)",
"confirmed": true,
"coincidence": "[ETHRome](https://ethrome.org/)",
"lead": "PG",
"slots": 10,
"visitors": 139,
"links": {
"web": "https://lu.ma/web3privacynow_rome"
}
},
{
"id": "w3pm-prg1",
"type": "meetup",
"date": "2023-11-14",
"city": "Prague",
"country": "cz",
"place": "[Dílna](https://kafevdilne.cz/)",
"confirmed": true,
"coincidence": "[DCxPrague](https://dcxprague.org/)",
"lead": "Tree",
"slots": 3,
"visitors": 15,
"links": {
"web": "https://lu.ma/w3pm-prg1"
}
},
{
"id": "w3pm-ath1",
"type": "meetup",
"date": "2024/Q1",
"city": "Athens",
"country": "gr",
"coincidence": "",
"lead": "Mykola",
"optional": true,
"slots": 3
},
{
"id": "w3pm-lib1",
"type": "meetup",
"date": "2024/Mar",
"city": "Liberec",
"country": "cz",
"coincidence": "[ETHBohemia](https://ethbohemia.ethevents.club/)",
"lead": "Tree",
"optional": true,
"slots": 3
},
{
"id": "w3pm-buc1",
"type": "meetup",
"date": "2024-03-28",
"city": "Bucharest",
"country": "ro",
"coincidence": "[ETHBucharest](https://www.ethbucharest.xyz/)",
"optional": true,
"slots": 3,
"lead": "Tree",
"helpers": [
"Alina"
],
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-bucharest1"
}
},
{
"id": "w3pm-ams1",
"type": "meetup",
"date": "2024-04-11",
"city": "Amsterdam",
"country": "nl",
"lead": "PG",
"helpers": [
"Mykola",
"Tree",
"Alina"
],
"coincidence": "[ETHDam](https://www.ethdam.com/)",
"slots": 3,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-ams1"
}
},
{
"id": "w3pm-tal1",
"type": "meetup",
"date": "2024/Apr",
"city": "Tallinn",
"country": "ee",
"coincidence": "[ETHTallinn](https://www.ethtallinn.org/)",
"slots": 3,
"optional": true
},
{
"id": "w3pm-por1",
"type": "meetup",
"date": "2024/May",
"city": "Porto",
"country": "pt",
"coincidence": "[ETHPorto](https://ethporto.org/)",
"slots": 3,
"optional": true
},
{
"id": "w3pm-ber1",
"type": "meetup",
"date": "2024-05-22",
"city": "Berlin",
"country": "de",
"place": "[c-base](https://c-base.org/)",
"coincidence": "ETHBerlin",
"lead": "Tree",
"slots": 3,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-berlin1"
}
},
{
"id": "w3ps3",
"type": "summit",
"date": "2024-05-30",
"city": "Prague",
"country": "cz",
"coincidence": "ETHPrague",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 16,
"links": {
"rsvp": "https://lu.ma/w3pn-summit-prague2"
}
},
{
"id": "w3ph1",
"type": "hackathon",
"date": "2024-06-19",
"days": 7,
"city": "Bled",
"country": "si",
"place": "[Subwork](https://subwork.xyz/)",
"confirmed": true,
"coincidence": "W3PN Hackathon",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 10,
"links": {
"rsvp": "https://lu.ma/w3pn-bled-hackathon1"
}
},
{
"id": "w3pm-lju1",
"type": "meetup",
"date": "2024-06-21",
"city": "Ljubljana",
"country": "si",
"coincidence": "W3PN Hackathon",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 5,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-ljubljana1"
}
},
{
"id": "w3pm-bcn2",
"type": "meetup",
"date": "2024/Jul",
"city": "Barcelona",
"country": "es",
"coincidence": "ETHBarcelona",
"slots": 3,
"optional": true
},
{
"id": "w3pm-bru1",
"type": "meetup",
"date": "2024-07-12",
"city": "Brussels",
"country": "be",
"coincidence": "[EthCC](https://www.ethcc.io/)",
"slots": 3,
"lead": "Mykola",
"helpers": [
"Tree"
],
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-bru1"
}
},
{
"id": "w3pm-waw1",
"type": "meetup",
"date": "2024/Sep",
"city": "Warsaw",
"country": "pl",
"coincidence": "ETHWarsaw",
"lead": "Tree",
"slots": 3,
"optional": true
},
{
"id": "w3pm-rom2",
"type": "meetup",
"date": "2024-10-04",
"city": "Rome",
"country": "it",
"coincidence": "ETHRome",
"lead": "PG",
"slots": 5,
"helpers": [
"Mykola",
"Alina"
],
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-rome1"
}
},
{
"id": "w3ps4",
"type": "summit",
"date": "2024-10-24",
"city": "Brno",
"country": "cz",
"coincidence": "ETHBrno",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 16,
"links": {
"rsvp": "https://lu.ma/w3pn-summit-brno1"
}
},
{
"id": "w3pm-dc1",
"type": "meetup",
"date": "2024-11-20",
"city": "SE Asia",
"country": "xx",
"coincidence": "[Devcon](https://devcon.org/)",
"slots": 5,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-devcon7"
}
}
]
}

View file

@ -1,283 +0,0 @@
[
{
"id": "w3ps1",
"type": "summit",
"date": "2023-06-05",
"city": "Prague",
"country": "cz",
"place": "[X10](https://www.divadlox10.cz/)",
"confirmed": true,
"coincidence": "[ETHPrague](https://ethprague.com/)",
"lead": "Tree",
"slots": 16,
"visitors": 180,
"links": {
"web": "https://prague.web3privacy.info/",
"git": "https://github.com/web3privacy/w3ps1"
}
},
{
"id": "w3ps2",
"type": "summit",
"date": "2023-10-05",
"city": "Rome",
"country": "it",
"place": "[Villaggio Globale](https://maps.app.goo.gl/S7kUruNvbpjgHuSh9)",
"confirmed": true,
"coincidence": "[ETHRome](https://ethrome.org/)",
"lead": "PG",
"slots": 10,
"visitors": 139,
"links": {
"web": "https://lu.ma/web3privacynow_rome"
}
},
{
"id": "w3pm-prg1",
"type": "meetup",
"date": "2023-11-14",
"city": "Prague",
"country": "cz",
"place": "[Dílna](https://kafevdilne.cz/)",
"confirmed": true,
"coincidence": "[DCxPrague](https://dcxprague.org/)",
"lead": "Tree",
"slots": 3,
"visitors": 15,
"links": {
"web": "https://lu.ma/w3pm-prg1"
}
},
{
"id": "w3pm-ath1",
"type": "meetup",
"date": "2024/Q1",
"city": "Athens",
"country": "gr",
"coincidence": "",
"lead": "Mykola",
"optional": true,
"slots": 3
},
{
"id": "w3pm-lib1",
"type": "meetup",
"date": "2024/Mar",
"city": "Liberec",
"country": "cz",
"coincidence": "[ETHBohemia](https://ethbohemia.ethevents.club/)",
"lead": "Tree",
"optional": true,
"slots": 3
},
{
"id": "w3pm-buc1",
"type": "meetup",
"date": "2024-03-28",
"city": "Bucharest",
"country": "ro",
"coincidence": "[ETHBucharest](https://www.ethbucharest.xyz/)",
"optional": true,
"slots": 3,
"lead": "Tree",
"helpers": [
"Alina"
],
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-bucharest1"
}
},
{
"id": "w3pm-ams1",
"type": "meetup",
"date": "2024-04-11",
"city": "Amsterdam",
"country": "nl",
"lead": "PG",
"helpers": [
"Mykola",
"Tree",
"Alina"
],
"coincidence": "[ETHDam](https://www.ethdam.com/)",
"slots": 3,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-ams1"
}
},
{
"id": "w3pm-tal1",
"type": "meetup",
"date": "2024/Apr",
"city": "Tallinn",
"country": "ee",
"coincidence": "[ETHTallinn](https://www.ethtallinn.org/)",
"slots": 3,
"optional": true
},
{
"id": "w3pm-por1",
"type": "meetup",
"date": "2024/May",
"city": "Porto",
"country": "pt",
"coincidence": "[ETHPorto](https://ethporto.org/)",
"slots": 3,
"optional": true
},
{
"id": "w3pm-ber1",
"type": "meetup",
"date": "2024-05-22",
"city": "Berlin",
"country": "de",
"place": "[c-base](https://c-base.org/)",
"coincidence": "ETHBerlin",
"lead": "Tree",
"slots": 3,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-berlin1"
}
},
{
"id": "w3ps3",
"type": "summit",
"date": "2024-05-30",
"city": "Prague",
"country": "cz",
"coincidence": "ETHPrague",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 16,
"links": {
"rsvp": "https://lu.ma/w3pn-summit-prague2"
}
},
{
"id": "w3ph1",
"type": "hackathon",
"date": "2024-06-19",
"days": 7,
"city": "Bled",
"country": "si",
"place": "[Subwork](https://subwork.xyz/)",
"confirmed": true,
"coincidence": "W3PN Hackathon",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 10,
"links": {
"rsvp": "https://lu.ma/w3pn-bled-hackathon1"
}
},
{
"id": "w3pm-lju1",
"type": "meetup",
"date": "2024-06-21",
"city": "Ljubljana",
"country": "si",
"coincidence": "W3PN Hackathon",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 5,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-ljubljana1"
}
},
{
"id": "w3pm-bcn2",
"type": "meetup",
"date": "2024/Jul",
"city": "Barcelona",
"country": "es",
"coincidence": "ETHBarcelona",
"slots": 3,
"optional": true
},
{
"id": "w3pm-bru1",
"type": "meetup",
"date": "2024-07-12",
"city": "Brussels",
"country": "be",
"coincidence": "[EthCC](https://www.ethcc.io/)",
"slots": 3,
"lead": "Mykola",
"helpers": [
"Tree"
],
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-bru1"
}
},
{
"id": "w3pm-waw1",
"type": "meetup",
"date": "2024/Sep",
"city": "Warsaw",
"country": "pl",
"coincidence": "ETHWarsaw",
"lead": "Tree",
"slots": 3,
"optional": true
},
{
"id": "w3pm-rom2",
"type": "meetup",
"date": "2024-10-04",
"city": "Rome",
"country": "it",
"coincidence": "ETHRome",
"lead": "PG",
"slots": 5,
"helpers": [
"Mykola",
"Alina"
],
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-rome1"
}
},
{
"id": "w3ps4",
"type": "summit",
"date": "2024-10-24",
"city": "Brno",
"country": "cz",
"coincidence": "ETHBrno",
"lead": "Tree",
"helpers": [
"PG",
"Mykola",
"Coinmandeer"
],
"slots": 16,
"links": {
"rsvp": "https://lu.ma/w3pn-summit-brno1"
}
},
{
"id": "w3pm-dc1",
"type": "meetup",
"date": "2024-11-20",
"city": "SE Asia",
"country": "xx",
"coincidence": "[Devcon](https://devcon.org/)",
"slots": 5,
"links": {
"rsvp": "https://lu.ma/w3pn-meetup-devcon7"
}
}
]

View file

@ -1,5 +1,6 @@
---
import * as config from '../config.yaml';
import core from '../core.json';
import '../styles/base.css';
const {banner, title, description} = Astro.props;
@ -41,7 +42,7 @@ import cfonts from 'cfonts';
<div class="w-full">
{config.header.menu.map((menuItem) => (
<div class="uppercase w-full">
<a href={menuItem.url || config.links} class="inline-block hover:underline px-4 py-2" class:list={[menuItem.url?.match(/^http/) ? "external" : "", Astro.url.pathname === menuItem.url ? "text-white" : ""]}>{menuItem.name}</a>
<a href={menuItem.url || core.links} class="inline-block hover:underline px-4 py-2" class:list={[menuItem.url?.match(/^http/) ? "external" : "", Astro.url.pathname === menuItem.url ? "text-white" : ""]}>{menuItem.name}</a>
</div>
))}
</div>
@ -57,7 +58,7 @@ import cfonts from 'cfonts';
<div class="hidden lg:flex grow gap-0 xl:gap-2 justify-center">
{config.header.menu.map((menuItem) => (
<div class="uppercase hover:text-[#c2c2c2]" class:list={[menuItem.link ? "xexternal" : "", Astro.url.pathname === menuItem.url ? "text-white" : ""]}>
<a href={config.links[menuItem.link] || menuItem.url} class="inline-block hover:underline px-4 py-2">
<a href={core.links[menuItem.link] || menuItem.url} class="inline-block hover:underline px-4 py-2">
{menuItem.name}
</a>
@ -66,7 +67,7 @@ import cfonts from 'cfonts';
</div>
<div class="flex grow lg:grow-0 gap-3 lg:gap-6 justify-end pt-1 lg:pt-2.5">
{config.header.rightMenu.map((key) => (
<a href={config.links[key]} class="block icon xsmall sm:small opacity-50 hover:opacity-100" class:list={[key]} target="_blank"></a>
<a href={core.links[key]} class="block icon xsmall sm:small opacity-50 hover:opacity-100" class:list={[key]} target="_blank"></a>
))}
</div>
</header>
@ -104,7 +105,7 @@ import cfonts from 'cfonts';
{config.footer.menu.map((item) => (
<div class="flex gap-4 items-center menuItem lg:mb-0 mb-2">
<div class="icon small opacity-50" class:list={[item.ico]}></div>
<div class="text-white hover:underline"><a href={item.url || config.links[item.link]}>{item.title}</a></div>
<div class="text-white hover:underline"><a href={item.url || core.links[item.link]}>{item.title}</a></div>
</div>
))}
</div>

View file

@ -2,6 +2,7 @@
import BaseLayout from '../layouts/base.astro';
import * as config from '../config.yaml';
import core from '../core.json';
import AboutFooter from '../components/AboutFooter.astro';
---
@ -14,7 +15,7 @@ import AboutFooter from '../components/AboutFooter.astro';
<h1>Our mission</h1>
<div set:html={config.landing.mission}></div>
<div class="mt-8">
<a class="button inverted" href={config.links.manifesto}><button>Read manifesto</button></a>
<a class="button inverted" href={core.links.manifesto}><button>Read manifesto</button></a>
</div>
</div>
<div>

View file

@ -1,10 +1,12 @@
---
import BaseLayout from '../layouts/base.astro';
import events from '../events.json';
import core from '../core.json';
import EventItem from '../components/EventItem.astro';
import { isFuture } from 'date-fns';
const events = core.events;
function eventsFilter (year, future=true) {
return function (x) {
if (!x.date.match(new RegExp(`^${year}`))) {

View file

@ -3,13 +3,15 @@
import BaseLayout from '../layouts/base.astro';
import AboutFooter from '../components/AboutFooter.astro';
import * as config from '../config.yaml';
import events from '../events.json';
import core from '../core.json';
import articles from '../articles.json';
import talks from '../talks.json';
import explorer from '../explorer.json';
import { isRenderTemplateResult } from 'astro/runtime/server/render/astro/render-template.js';
import { isPast, format } from 'date-fns';
const events = core.events;
let eventsPast = 0
let eventsUpcoming = 0
for (const ev of events) {
@ -44,14 +46,6 @@ for (const ev of events) {
</div>
</div>
</div>
<div class="bg-talks" data-url="/research">
<div class="title">Research</div>
<div class="numbers">
<div>
<div class="big">3 reserch projects →</div>
</div>
</div>
</div>
<div class="bg-projects" data-url="https://explorer.web3privacy.info">
<div class="title">Explorer</div>
<div class="numbers">
@ -65,6 +59,14 @@ for (const ev of events) {
</div>
</div>
</div>
<div class="bg-talks" data-url="/research">
<div class="title">Research</div>
<div class="numbers">
<div>
<div class="big">{core.projects.filter(x => x.type && x.type === "research").length} research projects →</div>
</div>
</div>
</div>
</div>
</div>

4
utils/core.js Normal file
View file

@ -0,0 +1,4 @@
const response = await fetch("https://data.web3privacy.info/")
const data = await response.json()
await Deno.writeTextFile("./src/core.json", JSON.stringify(data, null, 2))
console.log(`File ./src/core.json saved`)

View file

@ -1,6 +0,0 @@
import YAML from 'npm:yaml'
const response = await fetch("https://data.web3privacy.info/")
const data = await response.json()
await Deno.writeTextFile("./src/events.json", JSON.stringify(data.events, null, 2))
console.log(`File ./src/events.json saved`)