diff --git a/package.json b/package.json index da9fa6f..3365c2c 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/components/AboutFooter.astro b/src/components/AboutFooter.astro index 7483412..9b62e81 100644 --- a/src/components/AboutFooter.astro +++ b/src/components/AboutFooter.astro @@ -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';

Follow us

{config.landing.follow.map((item) => ( - + {item.name} {item.text} @@ -21,7 +22,7 @@ import contributors from '../contributors.json';

Coordination

{config.landing.coord.map((item) => ( - + {item.name} {item.text} diff --git a/src/config.yaml b/src/config.yaml index 9590cdd..2d5f882 100644 --- a/src/config.yaml +++ b/src/config.yaml @@ -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 diff --git a/src/core.json b/src/core.json new file mode 100644 index 0000000..bba88e2 --- /dev/null +++ b/src/core.json @@ -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" + } + } + ] +} \ No newline at end of file diff --git a/src/events.json b/src/events.json deleted file mode 100644 index f4e65fc..0000000 --- a/src/events.json +++ /dev/null @@ -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" - } - } -] \ No newline at end of file diff --git a/src/layouts/base.astro b/src/layouts/base.astro index 159bb7c..1153c8d 100644 --- a/src/layouts/base.astro +++ b/src/layouts/base.astro @@ -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'; @@ -57,7 +58,7 @@ import cfonts from 'cfonts'; diff --git a/src/pages/about.astro b/src/pages/about.astro index 896f143..4814c11 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -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';

Our mission

diff --git a/src/pages/events.astro b/src/pages/events.astro index 97d8bac..279a5ba 100644 --- a/src/pages/events.astro +++ b/src/pages/events.astro @@ -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}`))) { diff --git a/src/pages/index.astro b/src/pages/index.astro index d363f87..e7630c2 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -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) {
-
-
Research
-
-
-
3 reserch projects →
-
-
-
Explorer
@@ -65,6 +59,14 @@ for (const ev of events) {
+
+
Research
+
+
+
{core.projects.filter(x => x.type && x.type === "research").length} research projects →
+
+
+
diff --git a/utils/core.js b/utils/core.js new file mode 100644 index 0000000..7de5298 --- /dev/null +++ b/utils/core.js @@ -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`) \ No newline at end of file diff --git a/utils/events.js b/utils/events.js deleted file mode 100644 index 7b29842..0000000 --- a/utils/events.js +++ /dev/null @@ -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`) \ No newline at end of file