Update participants

This commit is contained in:
Dennis Reimann
2025-01-18 14:13:32 +01:00
parent 938a2ce9d6
commit f4bb3bd737
60 changed files with 116 additions and 68 deletions

View File

@@ -5,7 +5,7 @@
"nostr": "npub17fqtu2mgf7zueq2kdusgzwr2lqwhgfl2scjsez77ddag2qx8vxaq3vnr8y",
"github": "MarkusTurm",
"text": "Bester Mann. Toxic ☣️ aber fair. Sorgt für die Bitcoin Mass-Adoption \"one [Currywurstbude](http://www.curry-alm.info/) at a time\" 🌭",
"image": "/img/team/markus.jpg",
"image": "/img/participants/markus.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -22,7 +22,7 @@
"github": "dergigi",
"url": "https://dergigi.com",
"text": "Der Gigi leiht dir seine Taschenlampe 🔦 solltest du dich auf deinem Weg im [Kaninchenbau](https://21lessons.com/) mal verlaufen 🕳🐇",
"image": "/img/team/gigi.jpg",
"image": "/img/participants/gigi.jpg",
"v4v": {
"address": "02e12fea95f576a680ec1938b7ed98ef0855eadeced493566877d404e404bfbf52"
}
@@ -33,7 +33,7 @@
"nostr": "npub1gxdaxg7prcvgcs4pvlr8vac9a93t6uhph0wfuvpjm28q087n5y9qzx69d4",
"url": "http://fabthefox.com",
"text": "The Fox 🦊 verbreitet mit seinem Verlag Aprycot das Bitcoin-Wissen und ist der Wirt an der [Media-Theke](https://aprycot.media/thek/) 📙",
"image": "/img/team/fab.jpg",
"image": "/img/participants/fab.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -49,7 +49,7 @@
"github": "dennisreimann",
"url": "https://d11n.net",
"text": "Mag Open Source und [BTCPay Server](https://btcpayserver.org/) 💚 und schreibt lieber Software als Texte über sich selbst 👨🏻‍💻",
"image": "/img/team/dennis.jpg",
"image": "/img/participants/dennis.jpg",
"v4v": {
"address": "03b5ca2ceef3572eb4b8acfbc7755dab0dce24ed790e6945339cfcbe631e838600"
}
@@ -59,7 +59,7 @@
"twitter": "danielwingen",
"nostr": "npub1xv4z0eswam7k2zfytsm09mfaxv8a2dugtk566hvp45keysmeezgsqu47m5",
"text": "Kennt den [Value Of Bitcoin](https://valueofbitcoin.com/) 🧊 und ist daher nicht nur Sound Money Maximalist, sondern auch Fiat Minimalist 💸",
"image": "/img/team/daniel.jpg",
"image": "/img/participants/daniel.jpg",
"v4v": {
"address": "0201d14101401add234ebe3bc0e3020a39726daadf82bc3fa6b9871c4f5b17ab3f"
}
@@ -69,7 +69,7 @@
"twitter": "PatrickZGW",
"github": "PatrickZGW",
"text": "Gewinnt als Argumentations-Bazooka jedes Diskussionduell und ist Gastgeber des [Zeit, Geld & Wirtschaft](https://wavve.link/zgw-podcast) Podcasts ⌚₿\uD83D\uDCC8",
"image": "/img/team/patrick.jpg"
"image": "/img/participants/patrick.jpg"
},
"egge": {
"name": "Egge",
@@ -77,7 +77,7 @@
"nostr": "npub1gvyhrc9pe745xnqyn9309jgg5yqeunfv2fyfhnjvzlj6dkzvqdcsj38j8a",
"github": "Egge7",
"text": "Die [Mempool-Wetterfee](https://t.me/BlockReportDisc) der die Nodes vertrauen 🌈",
"image": "/img/team/egge.jpg",
"image": "/img/participants/egge.jpg",
"v4v": {
"address": "02283e063b3121177fe8ed0c88806fe05b38cf5e192ff8c89e3bdc9b4df05dde21"
}
@@ -88,7 +88,7 @@
"nostr": "npub1edej30zsgmmla78cmd8q7k4x8ff22ny8w8pvzqln6q0h2h9udneq32fwey",
"url": "https://btc21.de",
"text": "Der Tulpenhändler deines Vertrauens 🌷 hat auch immer die neueste [BTC21](https://btc21.de) Ausgabe auf dem Tresen 📰",
"image": "/img/team/joko.png",
"image": "/img/participants/joko.png",
"v4v": {
"address": "03f51df0183b2083d678d867d7441ba7e8dbf1bfdd23729d702b81a8b128e3e876"
}
@@ -100,7 +100,7 @@
"nostr": "npub1flac02t5hw6jljk8x7mec22uq37ert8d3y3mpwzcma726g5pz4lsmfzlk6",
"url": "https://ideasarelikeflames.com/",
"text": "Verbindet Bitcoin und [Bikini](https://bitcoin-turm.de/bturm26/) 👙 und berichtet als Türkei-Korrespondent über Geld in der ganzen Welt 🇹🇷",
"image": "/img/team/kemal.jpg",
"image": "/img/participants/kemal.jpg",
"v4v": {
"address": "02e01367e1d7818a7e9a0e8a52badd5c32615e07568dbe0497b6a47f9bef89d6af"
}
@@ -109,7 +109,7 @@
"name": "Lassmiranda",
"nostr": "npub1pzptxv5nwqnr8mvz88ll6sq3hwq2c3yv439pr9puguzvwn5qz8jsj3ax2p",
"text": "Dennsiewillja! Rundum coole Socke 🧦 Wenn er nicht grade bei [Moe](https://www.youtube.com/watch?v=PGvwVo3rR8U) anruft, managed er unseren [YouTube-Kanal](https://www.youtube.com/c/EinundzwanzigPodcast) 📺",
"image": "/img/team/lassmiranda.jpg",
"image": "/img/participants/lassmiranda.jpg",
"v4v": {
"address": "02926b19109c70bc8dafa980fd65a1bff673d3a52603b816aa80d27f7961dfa945",
"customKey": "696969",
@@ -121,7 +121,7 @@
"twitter": "fulmolightning",
"url": "https://fulmo.org/",
"text": "[Potzblitz!](https://www.youtube.com/c/FulmoLightning/videos) ⚡️ Ein fulmonantes Organisationstalent und Lightning Network-Urgestein 🦸‍♂️",
"image": "/img/team/jeff.jpg"
"image": "/img/participants/jeff.jpg"
},
"moritz": {
"name": "Moritz",
@@ -129,7 +129,7 @@
"github": "cryptoadvance",
"url": "https://specter.solutions",
"text": "Ein Gespenst geht um die Welt 👻 und Moritz trägt es im [Specter-Koffer](https://specter.solutions/#enterprise) immer bei sich 🧳",
"image": "/img/team/moritz.jpg"
"image": "/img/participants/moritz.jpg"
},
"ole": {
"name": "Ole",
@@ -137,7 +137,7 @@
"nostr": "npub17xc6v7ynma3cw0gq372q6y78zmekyvpkwqpuzuqm8zpydg5m4pkq8v2sts",
"url": "https://medium.com/@dercheapi",
"text": "Kinderzimmerökonom und Junior-Shitposter 💁‍♂️ Senkt unsere Boomer-Quote und findet die [Easter-Eggs](/podcast/der-weg-31-bitcoin-ist-ein-easter-egg/) 🥚",
"image": "/img/team/ole.jpg",
"image": "/img/participants/ole.jpg",
"v4v": {
"address": "03686128db3100e8a66caa3a50943aa72b80c00b3f8700ec01f3bf2e3657d69d54"
}
@@ -149,7 +149,7 @@
"nostr": "npub1nxzp3zn90r44z07aeajc7wyah4fju49c9d3g45mxvmm64rmnrdusffch7m",
"url": "https://bitcoin-mentoring.me",
"text": "Der Quoten-Schweizer! 🇨🇭🧀 Sagt jedem zentral gesteuerten Geldinstitut den Kampf an und hilft dir jeden Scammer zu scammen",
"image": "/img/team/cercatrova.jpg",
"image": "/img/participants/cercatrova.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -161,7 +161,7 @@
"twitter": "tanksen_f",
"nostr": "npub1umpg95dp5x7uwf2trd5n9hejc5t29al3qdk3nxehh8snz2dr4unqcjw9r5",
"text": "Unser Wegbegleiter, Tippspiel-Buchmacher, Afrika-Korrespondent und Fußball-Aficionado ⚽",
"image": "/img/team/tanksen.jpg",
"image": "/img/participants/tanksen.jpg",
"v4v": {
"address": "03d07c6075d640e680d54bd5201df087bc1fc56cbc084ab3aed54c3d96a486a919"
}
@@ -170,7 +170,7 @@
"name": "Gambler",
"twitter": "gmblr247",
"nostr": "npub10t8npnmqhpwx9w8k232kess7gqtdlr6kqjemdzf8jnughwqd0gwsez0924",
"image": "/img/team/gmblr247.jpg",
"image": "/img/participants/gmblr247.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -184,7 +184,7 @@
"name": "Ben",
"twitter": "webdiverblue",
"nostr": "npub1nkvn9xl8pzklk24777uvzlxvsuzn9hvhuuqjlmfce9h2xxkvutusxl5a52",
"image": "/img/team/ben.jpg",
"image": "/img/participants/ben.jpg",
"v4v": {
"address": "02b1278809d2853516d30b9af8d7bb3b1845d1beeed18ee22a9ccaddfe7f30a794"
}
@@ -201,7 +201,7 @@
"name": "zerofeerouting",
"twitter": "zerofeerouting",
"nostr": "npub1mc6arvz2ll8m26f75wj4d2w89ygq229t8h7m6cpfu0lqqa4l5hasp49pnw",
"image": "/img/team/zerofeerouting.jpg",
"image": "/img/participants/zerofeerouting.jpg",
"v4v": {
"address": "038fe1bd966b5cb0545963490c631eaa1924e2c4c0ea4e7dcb5d4582a1e7f2f1a5"
}
@@ -210,7 +210,7 @@
"name": "Quillie",
"twitter": "quilloughbee",
"nostr": "npub1dskk3wspds53g9larr48cp4hxlkpg0ma2mtclh2y5key3pr9yhkqjvjuc2",
"image": "/img/team/quillie.jpg",
"image": "/img/participants/quillie.jpg",
"v4v": {
"address": "02324936a19ff162f5a5809db9e4d26037f21ff5b076728b9ba483ea21f8ec5d15"
}
@@ -218,6 +218,7 @@
"d0enakalle": {
"name": "D0enakalle",
"nostr": "npub1d0enakaludyvruzdndcgl4glkcqyfpvp9tdtf8cawzkskekhcu2sq9xlas",
"image": "/img/participants/d0enakalle.png",
"v4v": {
"address": "0342643d329bea96befc58e65579c333a9f20eee48eaefa8c76d9bdf68a18d6220"
}
@@ -225,6 +226,7 @@
"anti": {
"name": "Anti",
"nostr": "npub1yu25lwrnht0knsl2swsd5mn966s4p54l3aejplpnzsjg6aryt3jq9t9xxs",
"image": "/img/participants/anti.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -234,6 +236,7 @@
"stacksats": {
"name": "StackSats",
"nostr": "npub1hycynfhz23ardfmf9kgwfw4gpyqj2fsh24r2zuehg4x7lx4kn5cqsqv4y3",
"image": "/img/participants/stacksats.jpg",
"v4v": {
"address": "02bc3fae0be2045433dad90090aba2fb0083e92f33f67eb962b60cb82db5fedae1"
}
@@ -242,7 +245,7 @@
"name": "Paddepadde",
"twitter": "paddepadde",
"nostr": "npub1gvqkjccl9urg93svaw60jqkk3ux8r3ycl5t3rlvc9uzjeu0agfuss8x8qy",
"image": "/img/team/paddepadde.jpg",
"image": "/img/participants/paddepadde.jpg",
"v4v": {
"address": "0384d37ce01a3950be609156dcbd3ebcad6a8107b11d796890521fde06508dfc4d"
}
@@ -251,7 +254,7 @@
"name": "Chris",
"twitter": "coinjoined",
"nostr": "npub1r8343wqpra05l3jnc4jud4xz7vlnyeslf7gfsty7ahpf92rhfmpsmqwym8",
"image": "/img/team/chris.jpg",
"image": "/img/participants/chris.jpg",
"v4v": {
"address": "03aa66e2a8ff6da4e9f431bbd89585ef564835a0d977b40955a92a68235e4f09e1"
}
@@ -260,7 +263,7 @@
"name": "Fichte",
"twitter": "fichte42",
"nostr": "npub1pzmcx6c5z77r6zf9rf7xlj3kp9mt8wk29snuphdzu7ezzl97kqrsacns7v",
"image": "/img/team/fichte42.jpg",
"image": "/img/participants/fichte42.jpg",
"v4v": {
"address": "022bd2b6d8798587b54b3a12a9051aed7ecd3caaa24cb8155b4d0e3ea4ab031c57"
}
@@ -269,7 +272,7 @@
"name": "El Bitcoin Ambassador",
"twitter": "elbitcoinamb",
"nostr": "npub184842f0yqe7ee9kra6ufsmddmxs6q2cl5jutp3qns2a62t99na6s4n7t00",
"image": "/img/team/elbitcoinamb.jpg",
"image": "/img/participants/elbitcoinamb.jpg",
"v4v": {
"address": "02926b19109c70bc8dafa980fd65a1bff673d3a52603b816aa80d27f7961dfa945",
"customKey": "696969",
@@ -279,7 +282,7 @@
"benmitfleck": {
"name": "BenMitFleck",
"twitter": "BenMitFleck",
"image": "/img/team/benmitfleck.jpg",
"image": "/img/participants/benmitfleck.jpg",
"v4v": {
"address": "02926b19109c70bc8dafa980fd65a1bff673d3a52603b816aa80d27f7961dfa945",
"customKey": "696969",
@@ -289,17 +292,23 @@
"tobo": {
"name": "Tobo",
"nostr": "npub1rnm4dq7s9d8vp2jdyynl73wnxhlzaadgsj6hj3m46cyt4nsqdgtqxsu0lw",
"image": "/img/participants/tobo.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "QgZTULTtllSKL3W3E6mY"
}
},
"hausi": {
"name": "Hausi",
"twitter": "hightower391",
"image": "/img/participants/hausi.jpg"
},
"sirius": {
"name": "Sirius",
"twitter": "SiriusLightning",
"nostr": "npub1v4lgwjv7qfn3t7qjscpsgz9vqvspf6hecdp2ckgp0dz89uqn5slsgrhw3p",
"image": "/img/team/sirius.jpg",
"image": "/img/participants/sirius.jpg",
"v4v": {
"address": "02926b19109c70bc8dafa980fd65a1bff673d3a52603b816aa80d27f7961dfa945",
"customKey": "696969",
@@ -309,7 +318,7 @@
"flashman": {
"name": "Flashman",
"twitter": "FlashmanBTC",
"image": "/img/team/flashman.jpg",
"image": "/img/participants/flashman.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -320,7 +329,7 @@
"name": "Octopus Olaf",
"twitter": "octopus_olaf",
"nostr": "npub1p758nncqsme5zskvpplddsvgq52mfgp8vsenp8zh24xc3ua42ajqa79qea",
"image": "/img/team/octopusolaf.jpg",
"image": "/img/participants/octopusolaf.jpg",
"v4v": {
"address": "02b36bd758105b7b7c87d5d4a7601f3bf5b5c7f6c0a0fc6d38a0eed1ad87be3136"
}
@@ -328,7 +337,7 @@
"holgerhatgarkeinenode": {
"name": "HolgerHatGarKeineNode",
"nostr": "npub1pt0kw36ue3w2g4haxq3wgm6a2fhtptmzsjlc2j2vphtcgle72qesgpjyc6",
"image": "/img/team/holgerhatgarkeinenode.jpg",
"image": "/img/participants/holgerhatgarkeinenode.jpg",
"url": "https://portal.einundzwanzig.space",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
@@ -339,7 +348,7 @@
"loddi": {
"name": "Loddi",
"twitter": "18loddi",
"image": "/img/team/loddi.jpg",
"image": "/img/participants/loddi.jpg",
"url": "https://open.spotify.com/show/3W7s0euoJl6Z6CD4wf45b9",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
@@ -349,6 +358,8 @@
},
"johannes": {
"name": "Johannes",
"url": "https://www.youtube.com/@bitcoin-durchgespielt",
"image": "/img/participants/johannes.jpg",
"nostr": "npub1c0qfrcjzgf9mwa8cgh809ac9vvxn2ujquvzdjjrze0ejv9xyqzcqqe6n3q",
"v4v": {
"address": "030fd4a722cd139c2d11285cfaf9d513f59be56645af3a0fdd7b7125976b709a03"
@@ -358,7 +369,7 @@
"name": "Lawrence",
"twitter": "LRothbardian",
"nostr": "npub14klfpkrqert8xhqhsvyer7n6jgyumldffejchlqu8gyfpjlsca4s5fg0c3",
"image": "/img/team/lawrence.jpg",
"image": "/img/participants/lawrence.jpg",
"url": "https://shopinbit.com/",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
@@ -369,7 +380,7 @@
"spok": {
"name": "spok",
"url": "https://fairtalk.tv",
"image": "/img/team/spok.png",
"image": "/img/participants/spok.png",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -379,7 +390,7 @@
"4plus17": {
"name": "4plus17",
"url": "https://bitcoiner.bio/4plus17",
"image": "/img/team/4plus17.jpg",
"image": "/img/participants/4plus17.jpg",
"twitter": "4plus17",
"nostr": "npub1m0nafh8kxzu09fgk47268u6vvepqna8a47drzc9y36s4t4u97jzsu07232",
"v4v": {
@@ -391,7 +402,7 @@
"wantclue": {
"name": "WantClue",
"url": "https://www.wantclue.de",
"image": "/img/team/wantclue.jpg",
"image": "/img/participants/wantclue.jpg",
"twitter": "ClueWant",
"nostr": "npub1vwf2mytkyk22x2gcmr9d7ktprakh6llwpzxqlke8rlv5j0qyx2esf2lxtw",
"v4v": {
@@ -403,7 +414,7 @@
"actionslave": {
"name": "actionslave",
"nostr": "npub1zjgyjhcdpfgux7c6qmrp8yhm6yvs8p9h32urr84du3vhsnj70vlsre4e8l",
"image": "/img/team/actionslave.jpg",
"image": "/img/participants/actionslave.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
@@ -416,7 +427,7 @@
"kid": {
"name": "Kid",
"nostr": "npub1v4kfwysl44e8wrhp62ma8yek3kskn4r2jmxvx5js7wqpq7dc54ls5ejwyx",
"image": "/img/team/kid.jpg",
"image": "/img/participants/kid.jpg",
"v4v": {
"address": "025f4a49593dbd8b455c220bdbd8d5fc770f75264b9b2abf6d7dc91f2669efd3ae"
}
@@ -424,23 +435,59 @@
"too bit to fail": {
"name": "Too Bit to Fail",
"nostr": "npub1pzcj8yfs3kx2thtjpz3agr2w54m52kv9a2933smqyt6n6k2ql3aq2d0wlx",
"image": "/img/team/toobittofail.jpg",
"image": "/img/participants/toobittofail.jpg",
"v4v": {
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "rVstXVOghc9Jb1a1QoFz"
}
},
"aliases": [
"TooBitToFail"
]
},
"justanothernode": {
"name": "Just Another Node",
"nostr": "npub1xhtqzpaqqynfapmwkn92anx8am3953xv4gkpncmyuwmdqdl42c5srpaydc",
"image": "/img/participants/justanothernode.jpg",
"aliases": [
"Jan"
]
},
"manu": {
"name": "Manu",
"nostr": "npub1rnvr3w3n24eysawq3upwssv3c5vg6sy5zj6wapv7asetj7l2enhs8usa5v",
"image": "/img/participants/manu.jpg",
"v4v": {
"address": "03c4360e8cd8f78974c3d5c3f6dfa2fb3e02df9e66b5555a7fdbdc77cd19f723d7"
}
},
"netdiver": {
"name": "NetDiver",
"nostr": "npub1z77juddgcul5la7jq578nsurpxh99633ccanngf863m4gh6gv2msm009sr",
"image": "/img/participants/netdiver.png"
},
"max": {
"name": "Max",
"url": "https://towardsliberty.com/",
"nostr": "npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt",
"image": "/img/participants/max.jpg"
},
"alex": {
"name": "Alex",
"twitter": "Justdoitalex",
"nostr": "npub14r770s5wrqpm8jmzur5arnm9aum9x0wasaxwczael54xhjggl7ws5lygc6",
"image": "/img/participants/alex.jpg"
},
"bumi": {
"name": "Bumi",
"url": "https://getalby.com/",
"nostr": "npub1xv8mzscll8vvy5rsdw7dcqtd2j268a6yupr6gzqh86f2ulhy9kkqmclk3x",
"image": "/img/participants/bumi.jpg"
},
"snicklink": {
"name": "Snicklink",
"twitter": "snicklink",
"image": "/img/participants/snicklink.jpg",
"v4v": {
"address": "02324936a19ff162f5a5809db9e4d26037f21ff5b076728b9ba483ea21f8ec5d15",
"customKey": "696969",

View File

@@ -54,10 +54,10 @@ const truncate = (str, wordCount) => {
return [head, tail]
}
// team
const teamWithAliases = team => {
// participants
const participantsWithAliases = participants => {
const withAliases = {}
Object.entries(team).forEach(([id, member]) => {
Object.entries(participants).forEach(([id, member]) => {
withAliases[id] = member
const aliases = (member.aliases || []).concat(member.name.toLowerCase())
aliases.forEach(alias => {
@@ -76,7 +76,7 @@ module.exports = {
slugify,
stripHTML,
truncate,
teamWithAliases,
participantsWithAliases,
participantToId,
toMeetupMapInfo
}

View File

@@ -28,7 +28,7 @@
"build:styles": "postcss src/css/main.css --output dist/css/main.css",
"optimize": "run-p optimize:* && run-s rev",
"optimize:styles": "csso dist/css/main.css --output dist/css/main.css",
"rev": "node-file-rev --manifest=generated/rev.json --root=dist dist/css/* dist/js/* dist/img/*.svg dist/img/cover/*.png dist/img/ln/*.svg dist/img/team/*.jpg dist/img/team/*.png",
"rev": "node-file-rev --manifest=generated/rev.json --root=dist dist/css/* dist/js/* dist/img/*.svg dist/img/cover/*.png dist/img/ln/*.svg dist/img/participants/*.jpg dist/img/participants/*.png",
"sitemap": "node tasks/generate_sitemap.js",
"prod": "cross-env NODE_ENV=production run-s build optimize build:pages sitemap"
},

View File

@@ -98,10 +98,10 @@ mixin participants(ps, link)
.participants
for name in ps
- const id = participantToId(name)
- const member = team[id]
- const member = participants[id]
if member
if link
a(href=`/team/${slugify(id)}` title=member.name)
a(href=`/p/${slugify(id)}` title=member.name)
img.avatar(src=assetPath(member.image || "/img/avatar.svg") alt=member.name)
else
img.avatar(src=assetPath(member.image || "/img/avatar.svg") alt=member.name)

View File

@@ -13,8 +13,8 @@ block main
:markdown-it(html linkify typographer)
## Gründungsgeschichte
Gestartet wurde EINUNDZWANZIG im August 2019 als Podcast von [Gigi](/team/gigi) und [Markus](/team/markus).
[Fab](/team/fab), [Dennis](/team/dennis) und [Daniel](/team/daniel) ergänzten das Team
Gestartet wurde EINUNDZWANZIG im August 2019 als Podcast von [Gigi](/p/gigi) und [Markus](/p/markus).
[Fab](/p/fab), [Dennis](/p/dennis) und [Daniel](/p/daniel) ergänzten das p
und EINUNDZWANZIG entwickelte sich zu einer wichtigen Anlaufstelle für Bitcoin im deutschsprachigen Raum.
Es musste eine Gesellschaftsform her, bei der nicht das Kapital, sondern die Gemeinschaft und der Ethos
von Bitcoin zählt. Wir haben uns daher für einen Verein entschieden — ein wenig mehr zu den Überlegungen
@@ -26,8 +26,8 @@ block main
- Gründungsdatum: 21. April 2021
- Zweck: Vorbereitung der Gesellschaft auf die Hyperbitcoinization
- Kontoführung: Bitcoin-only via Multisig und Lightning Node
- Präsidium: [Gambler](/team/gmblr247) und [Paddepadde](/team/paddepadde)
- Vorstand: [Chris](/team/chris), [The Ben](/team/holgerhatgarkeinenode), [Markus](/team/markus), [Gambler](/team/gmblr247) und [Paddepadde](/team/paddepadde)
- Präsidium: [Gambler](/p/gmblr247) und [Paddepadde](/p/paddepadde)
- Vorstand: [Chris](/p/chris), [The Ben](/p/holgerhatgarkeinenode), [Markus](/p/markus), [Gambler](/p/gmblr247) und [Paddepadde](/p/paddepadde)
## Statuten

View File

@@ -26,6 +26,7 @@
/podcast/verschiedenes-233-stacking-until-midnight/ /podcast/news-233-stacking-until-midnight/
/podcast/nostrtalk-11-sei-dein-eigener-held/ /podcast/filterfrei-1-sei-dein-eigener-held/
/team/MarkusTurm /team/markus
/team/fabthefoxx /team/fab
/team/gambler /team/gmblr247
/p/MarkusTurm /p/markus
/p/fabthefoxx /p/fab
/p/gambler /p/gmblr247
/team/* /p/:splat

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -1,8 +1,8 @@
const { writeFileSync } = require('fs')
const { join, resolve } = require('path')
const { replacements, slugify, stripHTML, teamWithAliases, participantToId } = require('../helpers')
const { replacements, slugify, stripHTML, participantsWithAliases, participantToId } = require('../helpers')
const { masterFeedUrl, publicFeedUrl, nodeId } = require('../content/meta.json')
const teamRaw = require('../content/team.json')
const participantsRaw = require('../content/participants.json')
const request = require('sync-request')
const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser')
const xmlFormat = require('xml-formatter')
@@ -13,7 +13,7 @@ const write = (name, data) => writeFileSync(join(dir, name), data)
const writeJSON = (name, data) =>
write(`generated/${name}.json`, JSON.stringify(data, null, 2))
const team = teamWithAliases(teamRaw)
const participants = participantsWithAliases(participantsRaw)
const commonOpts = {
attributeNamePrefix: '',
@@ -166,7 +166,7 @@ const parseEpisode = e => {
const value = episode.participants.reduce((result, name) => {
const id = participantToId(name)
const v4v = team[id] && team[id].v4v
const v4v = participants[id] && participants[id].v4v
if (v4v) {
result.push({ name, ...v4v })
} else if (debug) {
@@ -195,7 +195,7 @@ const parseEpisode = e => {
const people = episode.participants.reduce((result, name) => {
const id = participantToId(name)
const person = team[id]
const person = participants[id]
if (person) {
result.push(person)
}

View File

@@ -1,7 +1,7 @@
const { mkdirSync, writeFileSync } = require('fs')
const { dirname, resolve } = require('path')
const { NDKUser } = require('@nostr-dev-kit/ndk')
const team = require('../content/team.json')
const participants = require('../content/participants.json')
const { npub } = require('../content/meta.json')
const einundzwanzig = new NDKUser({ npub: npub.einundzwanzig })
@@ -19,7 +19,7 @@ const relays = {
]
}
Object.entries(team).forEach(([key, { nostr: npub }]) => {
Object.entries(participants).forEach(([key, { nostr: npub }]) => {
if (!npub) return
const id = key.replace(/[\s]/g, '_')
names[id] = new NDKUser({ npub }).pubkey

View File

@@ -1,13 +1,13 @@
const pug = require('pug')
const { mkdirSync, writeFileSync } = require('fs')
const { dirname, resolve } = require('path')
const { slugify, teamWithAliases, participantToId } = require('../helpers')
const { slugify, participantsWithAliases, participantToId } = require('../helpers')
const config = require('../pug.config')
const site = require('../generated/site-data.json')
const episodes = require('../generated/episodes.json')
const spendenregister = require('../generated/spendenregister.json')
const spendenuebersicht = require('../content/spendenuebersicht.json').reverse()
const teamRaw = require('../content/team.json')
const participantsRaw = require('../content/participants.json')
const shops = require('../content/shops.json')
const soundboard = require('../content/soundboard.json')
const adventskalender = require('../content/adventskalender-2022.json')
@@ -23,7 +23,7 @@ const categories = {
'verschiedenes': 'Verschiedenes'
}
const team = teamWithAliases(teamRaw)
const participants = participantsWithAliases(participantsRaw)
const changedFile = process.argv.length > 2 && process.argv[2]
@@ -44,8 +44,8 @@ const renderPage = (template, out, data = {}) => {
writeFileSync(dst, rendered)
}
renderPage('index', 'index', { navCurrent: 'index', currentEpisode: episodes[0], team })
renderPage('podcast', 'podcast', { navCurrent: 'podcast', episodes: [...episodes], team })
renderPage('index', 'index', { navCurrent: 'index', currentEpisode: episodes[0], participants })
renderPage('podcast', 'podcast', { navCurrent: 'podcast', episodes: [...episodes], participants })
renderPage('gesundes-geld', 'gesundes-geld', { meetups: site.meetups, upcomingMeetups: site.upcomingMeetups })
renderPage('meetups', 'meetups', { navCurrent: 'meetups', meetups: site.meetups, upcomingMeetups: site.upcomingMeetups })
renderPage('spenden', 'spenden', { navCurrent: 'spenden', spendenregister, spendenuebersicht })
@@ -57,11 +57,11 @@ renderPage('kontakt', 'kontakt', { navCurrent: 'kontakt' })
renderPage('datenschutz', 'datenschutz', { navCurrent: 'datenschutz' })
renderPage('adventskalender', 'adventskalender', { adventskalender })
episodes.forEach(episode => renderPage('episode', `podcast/${episode.slug}`, { navCurrent: 'podcast', episode, team }))
Object.keys(categories).forEach(category => renderPage('category', `podcast/${slugify(categories[category])}`, { navCurrent: 'podcast', category, categoryName: categories[category], episodes: episodes.filter(e => e.category === category), team }))
Object.keys(teamRaw).forEach(id => {
const member = teamRaw[id]
episodes.forEach(episode => renderPage('episode', `podcast/${episode.slug}`, { navCurrent: 'podcast', episode, participants }))
Object.keys(categories).forEach(category => renderPage('category', `podcast/${slugify(categories[category])}`, { navCurrent: 'podcast', category, categoryName: categories[category], episodes: episodes.filter(e => e.category === category), participants }))
Object.keys(participantsRaw).forEach(id => {
const member = participantsRaw[id]
const aliases = (member.aliases || []).map(m => m.toLowerCase()).concat(member.name.toLowerCase())
const eps = episodes.filter(e => e.participants.find(p => [id, ...aliases].includes(participantToId(p))))
renderPage('member', `team/${slugify(id)}`, { navCurrent: 'podcast', member, episodes: eps, team })
renderPage('member', `p/${slugify(id)}`, { navCurrent: 'podcast', member, episodes: eps, participants })
})