Porovnat revize

...

162 Commity

Autor SHA1 Zpráva Datum
tree 63c4c8134c Update contributors
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-29 21:27:38 +01:00
tree 5c86dc1fcc Update contributors
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-28 09:54:52 +01:00
tree 80dd0f9763 Update woodpecker (2)
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
ci/woodpecker/tag/woodpecker Pipeline was successful Podrobnosti
2022-11-24 23:39:24 +01:00
tree f1947300a7 Update woodpecker
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
ci/woodpecker/tag/woodpecker Pipeline was successful Podrobnosti
2022-11-24 23:36:32 +01:00
tree 5ed49deab1 Add video-preview
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
ci/woodpecker/tag/woodpecker Pipeline was successful Podrobnosti
2022-11-24 01:02:45 +01:00
tree 00c17974f3 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-17 13:45:27 +01:00
tree fca0d9f068 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-17 13:24:10 +01:00
tree 79a11ba98e Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-16 00:01:00 +01:00
tree 55ab6a0a2c Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-15 23:04:41 +01:00
Adam Sobotka fc8b4dc838 grayscale
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-12 08:46:58 +01:00
Adam Sobotka 59d3c29aa0 invert looks okay
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-12 08:34:46 +01:00
Adam Sobotka 8fe6f6ce0b venue update
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-12 08:33:45 +01:00
tree 65d2388f95 Add factorydao to sponsors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-12 05:51:16 +01:00
tree 6a0e7609d2 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-12 05:32:15 +01:00
tree 297dd262f7 Update hacker manual and more
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-12 04:47:38 +01:00
Adam Sobotka c7207988dc show running and recent events
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-11 22:02:52 +01:00
tree 2b5954d9a5 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-11 01:52:26 +01:00
tree 4f8f46bb27 Move prizes & bounties up
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-11 01:30:12 +01:00
tree d6075eb29c Update
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-11 01:24:00 +01:00
tree e4f81224a4 Aktualizovat „static/hacker-manual.md“
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-11 01:16:52 +01:00
terka f06994923f Aktualizovat „static/hacker-manual.md“
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 19:34:21 +01:00
terka 7cf42eb9f0 Aktualizovat „static/hacker-manual.md“
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 19:29:53 +01:00
tree 403efb82dc Typo
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 13:27:52 +01:00
Adam Sobotka 4a3b3acaf7 fix date to utc+1
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 12:21:22 +01:00
Adam Sobotka a09f7904ef Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 08:36:46 +01:00
Adam Sobotka 1b287ba682 bounty 2022-11-10 08:34:37 +01:00
tree c9c4cd89b9 Applications closed
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 05:53:53 +01:00
tree 6c82c76ced Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 03:53:51 +01:00
tree 78a166e42d Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 03:32:59 +01:00
tree 7fdd2443f2 Show stage for catering and experiences
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 03:11:54 +01:00
tree f7aa1574c9 Update hacker manual
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 03:03:25 +01:00
terka 25cb86ce2c Aktualizovat „static/hacker-manual.md“
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 01:30:59 +01:00
tree 9720b64d2e Add cover
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-10 00:32:44 +01:00
tree 14ebb713e3 Disable playwright (2)
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 23:44:47 +01:00
tree df9e3d7b8f Disable playwright
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-09 23:43:20 +01:00
tree 7f662b2ab9 We have only one venue
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-09 23:33:36 +01:00
Adam Sobotka 110c944d7d add highlight to experiences as well
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 22:56:26 +01:00
Adam Sobotka 1961cd31f4 update UX things
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 22:54:59 +01:00
Adam Sobotka 03578de1db Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 22:04:20 +01:00
Adam Sobotka 9abf68f586 nav update 2022-11-09 22:04:17 +01:00
tree 009c84be9a Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 21:34:18 +01:00
tree 8a8045b5dd Update
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 19:24:50 +01:00
tree 2fc9670fb8 Update
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 19:16:04 +01:00
Adam Sobotka f2ef5be996 sort?
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 17:56:17 +01:00
Adam Sobotka daebcb790d Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 17:40:24 +01:00
Adam Sobotka f0206ab56e shouldwork 2022-11-09 17:40:22 +01:00
tree 3e0c6679ab Update data.yaml
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 17:40:12 +01:00
tree 343bb639a2 Fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 17:38:44 +01:00
tree e2d206d245 Merge
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-09 17:37:34 +01:00
tree e077eb7cbb Update schedule 2022-11-09 17:34:39 +01:00
Adam Sobotka eb2a6d9d78 ispast
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-09 17:22:39 +01:00
Adam Sobotka dd712f54d4 Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-09 16:58:53 +01:00
Adam Sobotka eb4bb555a6 update 2022-11-09 16:58:51 +01:00
tree 47e4a5fb0e Pretalx speaker ids
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-09 16:57:06 +01:00
tree e130734d7f Schedule transformation
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-11-09 16:43:44 +01:00
Adam Sobotka 03a0f8ed9c Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-09 16:01:08 +01:00
Adam Sobotka 6732f79112 events 2022-11-09 16:01:06 +01:00
tree b40713931f Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-08 17:18:18 +01:00
tree dab4624e8d Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-07 23:01:41 +01:00
Adam Sobotka 9c93131b15 worldcoin
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-07 09:22:18 +01:00
Adam Sobotka 6514e4e1e8 lol, okay
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-06 10:20:08 +01:00
Adam Sobotka abd2c842e4 damn you ssg
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-06 09:26:51 +01:00
Adam Sobotka fbf2cdf03c jesus
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-06 09:22:27 +01:00
Adam Sobotka cb7bb0dc33 Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-06 09:17:21 +01:00
Adam Sobotka efe0755d20 sponsors update 2022-11-06 09:17:19 +01:00
tree 49369494fa Fix og & twitter meta
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-02 23:03:52 +01:00
tree ce3de00a87 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-11-02 12:33:15 +01:00
tree 3f48b3c9fe Force hacker manual to reload
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-31 06:46:15 +01:00
tree fbe43da8b0 Discord -> matrix fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-31 06:37:12 +01:00
tree 1a685b64c4 Add Code of Conduct page
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-31 02:35:01 +01:00
tree d3b322d7b2 Add new sections to hacker manual
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-31 02:22:15 +01:00
tree 054efb9f20 Update hacker manual - add SBT
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-31 00:35:35 +01:00
tree 09b3ec8fa0 Add dev deployment
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-31 00:05:19 +01:00
Adam Sobotka bde429694e head
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-30 08:58:14 +01:00
Adam Sobotka b5f03f73cd Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-29 17:58:53 +02:00
Adam Sobotka 296488d3e2 update 2022-10-29 17:58:43 +02:00
tree 2cc36ca979 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-29 15:51:44 +02:00
tree 662d915475 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-29 14:53:38 +02:00
tree 9c8b77ccc6 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-29 14:50:36 +02:00
Adam Sobotka 51a11e4335 Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-29 09:47:45 +02:00
Adam Sobotka 359c2851bf hacker manual 2022-10-29 09:47:30 +02:00
tree 88d78e2122 Fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-29 04:26:11 +02:00
tree 4ab1d757d5 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-29 04:25:38 +02:00
Adam Sobotka 4126d0cedb fix link to nonexistent page
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-28 22:43:03 +02:00
Adam Sobotka 07916e7826 jesus fucking hero image
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-28 22:40:41 +02:00
Adam Sobotka bbf796673e remote fix
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-28 19:00:13 +02:00
Adam Sobotka 077006f776 design fixes
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-28 18:32:45 +02:00
Adam Sobotka ed0f0370d1 v1
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-28 17:46:01 +02:00
Adam Sobotka 30added2c0 schema update
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-28 17:06:54 +02:00
Adam Sobotka df1bafbcaa mmwut
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-28 11:59:53 +02:00
Adam Sobotka 88b64d52dc events dummy file
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-28 11:17:00 +02:00
Adam Sobotka 94c4780e1a events structure
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-28 10:58:51 +02:00
Adam Sobotka 213bec0e10 link margin fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 23:15:07 +02:00
Adam Sobotka 8a12e9861a Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 22:54:44 +02:00
Adam Sobotka cf0ac38771 hacker manual 2022-10-27 22:54:38 +02:00
tree f841772edb Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 18:26:09 +02:00
Adam Sobotka 7d4b6dff01 manual design fixes
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 15:27:26 +02:00
tree 9984e26704 Update Hacker manual #3
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 14:56:50 +02:00
Adam Sobotka dfee2189de geez
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 14:22:01 +02:00
Adam Sobotka 3a3571aacf schedule mock
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-27 14:16:58 +02:00
Adam Sobotka 479011b8a8 fix local load on manual
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 12:54:09 +02:00
Adam Sobotka cfa68b3f20 black pages matters
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 12:47:34 +02:00
Adam Sobotka dbd759e858 revert data upload
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-27 11:54:22 +02:00
Adam Sobotka 9db7d84bc2 idk
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-27 11:45:35 +02:00
Adam Sobotka 8a3d1e5c27 lol
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-27 11:32:57 +02:00
Adam Sobotka 0708b19cc2 wth pecker
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-27 11:20:09 +02:00
Adam Sobotka 348fba5692 upload on every build
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-27 10:45:53 +02:00
Adam Sobotka 937ca5d30c disable localhost fetch
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-26 17:27:10 +02:00
Adam Sobotka 79dfaae20d black book on black background doesn't really shine
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-26 11:37:56 +02:00
Adam Sobotka 824c7654c2 contributors flashing fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-26 10:23:49 +02:00
Adam Sobotka fb2426bdbc manula update
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-25 17:24:40 +02:00
tree 7fd2014f7b Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-25 17:18:37 +02:00
Adam Sobotka 17cee95450 change OG
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-25 12:42:39 +02:00
Adam Sobotka cc2f621078 css fixes
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-25 09:50:04 +02:00
Adam Sobotka 6760fab59d small design fixes
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-24 19:49:22 +02:00
Adam Sobotka 60e5b8cf2e manual redesign + hidden venue
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-24 19:23:49 +02:00
Adam Sobotka 56abf8e83f manual mobile fixes
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-23 23:08:36 +02:00
Adam Sobotka afe283c036 h5 and copy update
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-23 19:35:14 +02:00
Adam Sobotka f962ace3db data fetch refatoring and markdown from arweave
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-23 11:55:29 +02:00
Adam Sobotka d2703bebae arweave data version 1
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-23 11:16:05 +02:00
Adam Sobotka 9ec1becacb remove snarkdown
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-22 17:57:48 +02:00
Adam Sobotka 29218c6bdf enhanced snarkdown for anchors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-22 17:02:54 +02:00
Adam Sobotka 061d612034 manual for review
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-22 12:12:37 +02:00
Adam Sobotka e10e366148 design changes in manual
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-22 11:32:57 +02:00
Adam Sobotka f283716c3a hacker manual content update
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 18:43:11 +02:00
Adam Sobotka ceca0a9f48 swr pattern for hacker manual
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 15:20:04 +02:00
Adam Sobotka 0fde958608 data.json
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 15:05:04 +02:00
Adam Sobotka 126f6d6484 fix loading
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 14:45:50 +02:00
Adam Sobotka 5ac232ad60
small fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 14:04:41 +02:00
Adam Sobotka e3ae228007 data refetch onmount
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 11:22:05 +02:00
Adam Sobotka 228a82372e Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 10:50:44 +02:00
Adam Sobotka 6916c624f3 small changes 2022-10-21 10:49:25 +02:00
tree f047cfc14f Add static/data.json to gitignore
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-21 09:54:56 +02:00
Adam Sobotka 41c82e1cf0 trying precompress
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-20 19:58:41 +02:00
tree 5351450d2c Generate data.json also to ./static
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-20 15:20:53 +02:00
tree 3f0633aa81 Versioning
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-20 15:14:21 +02:00
Adam Sobotka 47043ad59b manual v0
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-20 11:24:33 +02:00
tree 4f0427a5b0 Fix generation date
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-19 17:39:09 +02:00
Adam Sobotka e396cb734e fix tests
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-19 15:57:20 +02:00
tree 9a105b61ee Mobile responsivity fixes
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-19 10:15:04 +02:00
tree 0778b2d5ac Contributors
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-19 09:10:27 +02:00
Adam Sobotka 686bdfe26c local fonts
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-18 22:57:27 +02:00
Adam Sobotka 0ff67464e5 test if cache works
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-18 22:25:45 +02:00
Adam Sobotka 59305860dd fix tests
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-18 22:19:57 +02:00
Adam Sobotka 78b03c9d11 run test on deploy
ci/woodpecker/push/woodpecker Pipeline failed Podrobnosti
2022-10-18 19:15:28 +02:00
Adam Sobotka 6c68a2e1f2 basic e2e tests
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-18 18:45:50 +02:00
Adam Sobotka dce1b08397 routing refuck
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-18 14:56:51 +02:00
Adam Sobotka 432d5d0332 permaroute fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-18 11:32:49 +02:00
Adam Sobotka cdcba31d06 mobile fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 17:49:19 +02:00
Adam Sobotka edf7b4cbbf pic
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 17:39:26 +02:00
Adam Sobotka 5bc0620e30 contributors sections
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 17:29:17 +02:00
tree 59a377850d Update footer - docs should point to 2022 and 'remove build with sveltekit'
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 11:30:06 +02:00
tree ca4898d03e Reorder team
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 11:26:19 +02:00
tree 5eff1b87e0 Update team bios, remote todo
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 11:20:55 +02:00
tree 26ba4ca034 Deploy to IPFS only tagged versions
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 10:56:07 +02:00
tree 7cefea1ecf Update front page
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 10:48:24 +02:00
tree 1a532c8e9f Add Advisors to data.yaml
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 10:14:19 +02:00
tree fe07af1df2 Update contributors
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 09:31:08 +02:00
Adam Sobotka 0801efbeab footer fix
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 08:50:12 +02:00
Adam Sobotka 03c2fb5b01 Merge branch 'main' of gwei.cz:ethbrno/eb2-website
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
2022-10-17 08:18:09 +02:00
Adam Sobotka f2c3abe502 logo fix 2022-10-17 08:18:07 +02:00
tree 546ceb05de Add IPFS and ENS info to README.md
ci/woodpecker/push/woodpecker Pipeline was successful Podrobnosti
ci/woodpecker/tag/woodpecker Pipeline was successful Podrobnosti
2022-10-16 01:28:40 +02:00
97 změnil soubory, kde provedl 10194 přidání a 6352 odebrání

3
.gitignore vendorováno
Zobrazit soubor

@ -7,4 +7,7 @@ node_modules
.env.*
!.env.example
bun.lockb
.gitsigners
src/lib/data.json
src/lib/events.json
static/data.json

Zobrazit soubor

@ -1,20 +1,30 @@
pipeline:
build:
build_and_test:
image: node
commands:
- node --version
- npm ci
- npm run build
#- npm run test
secrets: [AR]
deploy:
image: rclone/rclone
commands:
- "rclone sync build/ :sftp: --sftp-host frontier.gwei.cz --sftp-user eb2-website-dev --sftp-port 2022 --sftp-pass $RCLONE_PASS -v"
- "rclone sync build/ :sftp:production/ --sftp-host frontier.gwei.cz --sftp-user eb2-website-dev --sftp-port 2022 --sftp-pass $RCLONE_PASS -v"
secrets: [RCLONE_PASS]
when:
branch: [main]
deploy_dev:
image: rclone/rclone
commands:
- "rclone sync build/ :sftp:dev/ --sftp-host frontier.gwei.cz --sftp-user eb2-website-dev --sftp-port 2022 --sftp-pass $RCLONE_PASS -v"
secrets: [RCLONE_PASS]
when:
branch: [dev]
deploy_ipfs:
image: node
environment:
@ -24,4 +34,5 @@ pipeline:
- npx -y --loglevel=error github:burningtree/ipfs-cluster-deploy ./build ethbrno-web
secrets: [IPFS_CLUSTER_PASS]
when:
tag: v*
branch: [main]

Zobrazit soubor

@ -3,7 +3,13 @@
Website is created using [SvelteKit](https://kit.svelte.dev/) and deployed as a static application to these addresses:
* [ethbrno.cz](https://ethbrno.cz) (self-hosted @ [gwei.cz](https://gwei.cz))
* [mirror.ethbrno.cz](https://mirror.ethbrno.cz/) (mirror @ [Netlify](https://www.netlify.com/))
* IPFS network - the url is changing (example: [bafybeiddx4e2yyur3kjyppcvcg2nb7yxrxs2b2y7lfe4pgekgwpjwtsh7y.ipfs.gwei.cz](https://bafybeiddx4e2yyur3kjyppcvcg2nb7yxrxs2b2y7lfe4pgekgwpjwtsh7y.ipfs.gwei.cz))
The [IPFS](https://ipfs.io/) addresses of the major versions are stored directly in the `ethbrno.eth` [ENS](https://ens.domains/) record. You can access the site using these gateways:
* [ethbrno.eth.link](https://ethbrno.eth.link)
* [ethbrno.eth.limo](https://ethbrno.eth.limo)
Site is configured to prerender all content and refresh the data from Arweave. Publishing script is named upload-data and require your own Arweave wallet (whole JSON string) as an AR parameter in the environment, like `AR={"kty":"RSA","n":....`. IPFS publishing is not prepared out of the box, but it basically takes output of `/build` and send it to the ipfs pinning service like Pinata. We are using self hosted server for this.
## Authors
* vorcigernix
* [vorcigernix](https://github.com/vorcigernix) & [tree](https://github.com/burningtree)

1
data/code-of-conduct.md Symbolický odkaz
Zobrazit soubor

@ -0,0 +1 @@
../static/code-of-conduct.md

Zobrazit soubor

@ -1,9 +1,40 @@
# ---- CONTRIBUTORS ----
contributorTypes:
all:
title: All
role: null
speakers:
title: Speakers
role: speaker
mentors:
title: Mentors
role: mentor
judges:
title: Judges
role: judge
advisors:
title: Advisors
role: advisor
volunteers:
title: Volunteers
role: volunteer
team:
title: Core Team
role: team
contributors:
# ---- SPEAKERS ----
- id: silur
name: Abraham Endre
nickname: Silur
link: https://github.com/Silur
bio: Hackoholic Cryptonaut - Early Ethereum dev and blockchain pioneer
roles: [ speaker ]
pretalxId: 45
- id: rachel-oleary
name: Rachel-Rose O'Leary
twitter: lunar_mining
@ -12,12 +43,20 @@ contributors:
desc: |
Rachel-Rose OLeary is a core dev at lunarpunk layer 1, DarkFi. She is also co-editor of the philosophy journal Agorism in the 21st Century. As a writer she has published in egirlcapital, CoinDesk, Defiant, Wired and elsewhere under anonymous accounts. She believes privacy is necessary for communities to define their own destinies.
- id: artem-vorotnikov
name: Artem Vorotnikov
twitter: vorot93
bio: Ethereum Core Developer, creator of Akula
- id: nick-almond
name: Nick Almond
nickname: DrNick
twitter: DrNickA
bio: Building the next generation of DAOs with FactoryDAO
roles: [ speaker ]
- id: juraj-bednar
name: Juraj Bednar
twitter: jurbed
bio: Hacktrophy, Hackyourself.io
roles: [ speaker ]
remote: true
pretalxId: 47
- id: pavol-luptak
name: Pavol Luptak
@ -26,102 +65,317 @@ contributors:
bio: Nethemba, Hacktrophy, liberation.travel
roles: [ speaker ]
remote: true
pretalxId: 5
- id: dcbuilder
name: dcbuilder.eth
twitter: DCbuild3r
bio: WorldCoin, devpill.me
roles: [ speaker ]
roles: [ judge, advisor, speaker ]
remote: true
pretalxId: 53
- id: juraj-bednar
name: Juraj Bednar
twitter: jurbed
bio: Hacktrophy, Hackyourself.io
- id: artem-vorotnikov
name: Artem Vorotnikov
twitter: vorot93
bio: Ethereum Core Developer, creator of Akula
roles: [ speaker ]
remote: true
- id: owen-barnes
name: Owen Barnes
nickname: temporalwave
twitter: temporalwave
bio: independent freedom adviser
bio: Independent freedom adviser
roles: [ speaker, mentor ]
pretalxId: 41
- id: william-mitsuda
name: Willian Mitsuda
twitter: wmitsuda
bio: creator of Otterscan
roles: [ speaker ]
remote: true
- id: qedk
name: QEDK
twitter: qedk_
bio: engineering Polygon, Moonshot Collective
bio: Creator of Otterscan
roles: [ speaker ]
remote: true
pretalxId: 10
- id: vojtech-simetka
name: Vojtěch Šimetka
twitter: vojtechsimetka
bio: Blockchain for Humanity, Swarm, Giveth
roles: [ speaker, mentor, judge ]
- id: qedk
name: QEDK
twitter: qedk_
bio: Engineering @ Polygon, EthIndia alum, ex-Moonshot Collective
roles: [ speaker, mentor ]
pretalxId: 15
- id: radek-svarz
name: Radek Švarz
twitter: radk
bio: dCZK, Apus.finance, BeerFi dev meetup
roles: [ speaker ]
pretalxId: 2
- id: lauri-peltonen
name: Lauri Peltonen
twitter: lauripelto
bio: Ethereum & StarkNet @ Equilibrium
roles: [ speaker, mentor, judge ]
pretalxId: 4
- id: jakub-jedlinsky
name: Jakub Jedlinský
twitter: Jakub_Jedlinsky
bio: Macroeconomist and analyst - Altlift.cz, lecturer at KMEV VŠE
roles: [ speaker ]
pretalxId: 21
- id: steffen-kux
name: Steffen Kux
twitter: steffenkux
bio: Co-founder, researcher, and developer at corpus.ventures
roles: [ speaker ]
pretalxId: 17
- id: max-hampshire
name: Max Hampshire
nickname: Mx
twitter: _wjth
bio: Developer Relations for Nym, previously a smart contract developer and researcher
roles: [ speaker ]
pretalxId: 11
- id: danish-shabbir
name: Danish Shabbir
nickname: fuzuli
twitter: fullyfuzuli
bio: Privacy researcher and a fiction writer
roles: [ speaker, judge ]
pretalxId: 12
- id: jan-zibner
name: Jan Zibner
link: https://www.artiffine.com/team/jan-zibner
bio: Lawyer specialising in intellectual property law and digital trends @ Artiffine
roles: [ speaker ]
pretalxId: 22
- id: bigq
name: bigq
twitter: big_q__
bio: Building new ZK primitives @ Sismo, vyper lover on my spare time
remote: true
roles: [ speaker ]
pretalxId: 51
- id: chris-blec
name: Chris Blec
twitter: ChrisBlec
bio: 'The intersection of Bitcoin, DeFi and Liberty || MakerDAO delegate'
remote: true
roles: [ speaker ]
pretalxId: 38
- id: six
name: six
link: https://cryptoctf.org/
bio: CCTF founder
roles: [ speaker, judge ]
pretalxId: 6
- id: nikete
name: nikete
twitter: nikete
bio: Curiosity driven. Open science, individual privacy, collective cognition
roles: [ mentor, speaker ]
pretalxId: 27
- id: mykola-siusko
name: Mykola Siusko
twitter: nicksvyaznoy
bio: Web3 fixer | Curing surveillance capitalism
roles: [ speaker ]
pretalxId: 28
- id: roman-mazur
name: Roman Mazur
twitter: romanmazur
bio: CEO & Co-founder @ Wido
roles: [ speaker, judge ]
pretalxId: 37
- id: kurt-opsahl
name: Kurt Opsahl
twitter: kurtopsahl
bio: Deputy Executive Director and General Counsel of the Electronic Frontier Foundation (EFF)
roles: [ speaker ]
remote: true
pretalxId: 3
- id: robert-de-groot
name: Robert de Groot
twitter: robdotrego
bio: Dutch privacy advocate - ecosystem manager @ Swarm, Board member @ Open Signum
roles: [ speaker ]
remote: true
pretalxId: 29
- id: anirudha-bose
name: Anirudha Bose
twitter: onybose
bio: Wallet Engineer at Brave
roles: [ speaker ]
pretalxId: 33
- id: felix-leupold
name: Felix Leupold
twitter: fleupold_
bio: Software Engineer. Technical Lead @ CoWSwap
roles: [ speaker ]
remote: true
pretalxId: 39
- id: luca
name: Luca
bio: Blockchain protocol developer currently working at Kiln
link: https://github.com/0xpanoramix
roles: [ speaker ]
remote: true
pretalxId: 40
# ---- JUDGES ----
- id: ashhanai
name: ashhanai
bio: builder @ PWN DAO
twitter: ashhanai
roles: [ judge ]
# ---- ADVISORS ----
- id: mario-havel
name: Mario Havel
twitter: TMIYChao
bio: Ethereum Foundation, Bordel Hackerspace
roles: [ advisor ]
remote: true
- id: josef-j
name: Josef J
twitter: JosefJ_
bio: ETHPrague, PWN Finance (previously Ethereum Foundation & Devcon)
roles: [ advisor ]
remote: true
- id: anett
name: Anett Rolikova
twitter: AnettRolikova
bio: Nethermind, previously Ethereum Magicians
roles: [ advisor, judge, speaker ]
pretalxId: 48
# ---- VOLUNTEERS ----
- id: gabari
name: Bryce
nickname: gabari
twitter: gabari___
bio: Sponsor & Speaker seeker | Former head of communication for a top 3 DAO, Member of Developer DAO
roles: [ volunteer ]
- id: hazae41
name: Hugo
nickname: Haz Æ 41
twitter: hazae41
bio: Sponsor & Speakers seeker | Software Engineer specialised in Privacy & Decentralized systems, member of Developer DAO
roles: [ volunteer ]
- id: victor
name: Victor
twitter: Heliatr0p
bio: Sponsors & Speakers seeker | Software Engineer
roles: [ volunteer ]
- id: juan-abia
name: Juan Alberto Abia Alvarez
twitter: juanabia99
bio: General help | Software engineer with too many side hobbies
roles: [ volunteer ]
- id: ethan-clime
name: Ethan Clime
link: https://t.me/ethanclime
bio: Stage manager | Former DApp CEO and product manager
roles: [ volunteer ]
- id: caner-budak
name: Caner Budak
twitter: caner_eth
bio: General help | Research & Data Analyst in Web3 ecoystem. Former Chairman of ITU Blockchain
roles: [ volunteer ]
- id: ksenia
name: Ksenia
twitter: Fara38643010
bio: Registration | Japanese lang. specialist + CZ・ENG・RUS / Artist / Crypto enthusiast / Vibe manager
roles: [ volunteer ]
# ---- TEAM ----
- id: tree
name: Tree
twitter: treecz
bio: Gwei.cz and BohemianDAO founder, UTXO.22 steward
bio: Vision, content | Gwei.cz and BohemianDAO founder, Ethereum enthusiast
roles: [ team ]
pretalxId: 1
- id: tereza
name: Tereza
twitter: terkastarostova
bio: Holky v Kryptu co-founder, chairman of UTXO Foundation
bio: Production, sponsors | Holky v Kryptu co-founder, chairman of UTXO Foundation
roles: [ team ]
pretalxId: 31
- id: exez
name: Exez
twitter: OndraPulc
bio: TODO
roles: [ team ]
- id: hedvika
name: Hedvika
twitter: HedvikaPa
nickname: headwitch
bio: TODO
roles: [ team ]
- id: jacob
name: Jacob
twitter: jacobjelen
bio: TODO
roles: [ team ]
- id: damsky
name: Damsky
twitter: helloitsdamsky
bio: TODO
bio: Visual identity, design
roles: [ team ]
- id: adam
name: Adam
nickname: vorcigernix
twitter: vorcigernix
bio: Zitrone founder, member of Developer DAO and Forefront
bio: Website, community calls | Zitrone founder, member of Developer DAO and Forefront
roles: [ team ]
pretalxId: 18
- id: hedvika
name: Hedvika
twitter: HedvikaPa
nickname: headwitch
bio: Mentor seeking, experiences curation
roles: [ team ]
- id: clairee
name: Clairee
twitter: De_luneClaire
bio: TODO
bio: Social networks
roles: [ team ]
- id: jacob
name: Jacob
twitter: jacobjelen
bio: Networking | Donat.Network, Product Designer & Technologist
roles: [ team ]
pretalxId: 24
- id: dominika
name: Dominika
twitter: DominikaV5
bio: TODO
bio: Volunteers
roles: [ team ]
# ---- SPONSORS ----
@ -133,6 +387,11 @@ sponsors:
tier: ecdsa
url: https://ethereum.foundation/
- id: metamask
name: MetaMask Snaps
tier: 3des
url: https://metamask.io/snaps/
- id: mitonc
name: MitonC
tier: 3des
@ -152,3 +411,13 @@ sponsors:
name: Devfolio
tier: community
url: https://devfolio.co/
- id: worldcoin
name: Worldcoin
tier: community
url: https://worldcoin.org/
- id: factorydao
name: FactoryDAO
tier: community
url: https://www.factorydao.xyz/

1
data/hacker-manual.md Symbolický odkaz
Zobrazit soubor

@ -0,0 +1 @@
../static/hacker-manual.md

13337
package-lock.json vygenerováno

Rozdílový obsah nebyl zobrazen, protože je příliš veliký Načíst rozdílové porovnání

Zobrazit soubor

@ -1,37 +1,40 @@
{
"name": "eb2-website",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite dev",
"build": "npm run make-data && vite build",
"preview": "vite preview",
"test": "playwright test",
"lint": "prettier --plugin-search-dir . --check . && eslint .",
"format": "prettier --plugin-search-dir . --write .",
"make-data": "node ./scripts/make-data.js",
"ipfs-deploy": "npx -y --loglevel=error github:burningtree/ipfs-cluster-deploy ./build ethbrno-web"
},
"devDependencies": {
"@playwright/test": "^1.25.0",
"@sveltejs/adapter-auto": "next",
"@sveltejs/adapter-static": "next",
"@sveltejs/kit": "next",
"autoprefixer": "^10.4.12",
"eslint": "^8.16.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-svelte3": "^4.0.0",
"js-yaml": "^4.1.0",
"postcss": "^8.4.17",
"prettier": "^2.6.2",
"prettier-plugin-svelte": "^2.7.0",
"svelte": "^3.44.0",
"svelte-preprocess": "^4.10.7",
"tailwindcss": "^3.1.8",
"vite": "^3.1.0"
},
"type": "module",
"dependencies": {
"moment": "^2.29.4"
}
"name": "eb2-website",
"version": "v2022-10-16",
"private": true,
"scripts": {
"dev": "vite dev",
"build": "npm run make-data && npm run schedule && vite build",
"preview": "vite preview",
"test": "playwright test",
"lint": "prettier --plugin-search-dir . --check . && eslint .",
"format": "prettier --plugin-search-dir . --write .",
"make-data": "node ./scripts/make-data.js",
"schedule": "node ./scripts/schedule.js",
"upload-data": "node ./scripts/upload-data.js",
"ipfs-deploy": "npx -y --loglevel=error github:burningtree/ipfs-cluster-deploy ./build ethbrno-web"
},
"devDependencies": {
"@sveltejs/adapter-auto": "next",
"@sveltejs/adapter-static": "next",
"@sveltejs/kit": "next",
"arweave": "^1.11.6",
"autoprefixer": "^10.4.12",
"dotenv": "^16.0.3",
"eslint": "^8.16.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-svelte3": "^4.0.0",
"js-yaml": "^4.1.0",
"postcss": "^8.4.17",
"prettier": "^2.6.2",
"prettier-plugin-svelte": "^2.7.0",
"svelte": "^3.44.0",
"svelte-preprocess": "^4.10.7",
"tailwindcss": "^3.2.1",
"vite": "^3.1.0"
},
"type": "module",
"dependencies": {
"marked": "^4.1.1"
}
}

Zobrazit soubor

@ -1,5 +1,9 @@
/** @type {import('@playwright/test').PlaywrightTestConfig} */
const config = {
use: {
browserName: 'chromium',
headless: true,
},
webServer: {
command: 'npm run build && npm run preview',
port: 4173

Zobrazit soubor

@ -3,17 +3,31 @@ import fs from 'fs'
const DATA_FILE = './data/data.yaml'
const DATA_OUTPUT = './src/lib/data.json'
const DATA_STATIC_OUTPUT = './static/data.json'
const PKG_FILE = './package.json'
const VERSION_PATTERN = /^v\d{4}-\d{2}-\d{2}$/
function gen() {
// load data
const data = yaml.load(fs.readFileSync(DATA_FILE))
const pkg = JSON.parse(fs.readFileSync(PKG_FILE))
if (!pkg.version.match(VERSION_PATTERN)) {
console.error(`Version not match pattern [${VERSION_PATTERN}]: ${pkg.version}`)
process.exit(1)
}
// add generation time
data.time = new Date
data.version = pkg.version
// write to json
fs.writeFileSync(DATA_OUTPUT, JSON.stringify(data, null, 2))
console.log(`Writed: ${DATA_OUTPUT}`)
// write to json (static)
fs.writeFileSync(DATA_STATIC_OUTPUT, JSON.stringify(data, null, 2))
console.log(`Writed: ${DATA_STATIC_OUTPUT}`)
}
gen()

48
scripts/schedule.js Normal file
Zobrazit soubor

@ -0,0 +1,48 @@
import fs from 'fs'
const SCHEDULE_URL = 'https://cfp.ethbrno.cz/ethbrno2/schedule/export/schedule.json'
const OUTPUT = './src/lib/events.json'
function duration (str) {
const spl = str.split(':')
return (Number(spl[0]) * 60) + Number(spl[1])
}
async function run () {
const resp = await fetch(SCHEDULE_URL)
const data = await resp.json()
const rooms = []
const out = []
for (const day of data.schedule.conference.days) {
for (const roomKey of Object.keys(day.rooms)) {
for (const item of day.rooms[roomKey]) {
const dur =
out.push({
id: item.id,
name: item.title,
description: item.abstract,
speakers: item.persons.map(p => {
return {
id: p.id,
name: p.public_name
}
}),
datetime: item.date,
duration: duration(item.duration),
stage: roomKey,
eventType: item.type,
track: item.track
})
}
}
}
console.log(`Writing output: ${OUTPUT}`)
fs.writeFileSync(OUTPUT, JSON.stringify(out, null, 2))
}
run()

58
scripts/upload-data.js Normal file
Zobrazit soubor

@ -0,0 +1,58 @@
import Arweave from "arweave";
import dotenv from 'dotenv';
import fs from 'fs';
dotenv.config();
const arweave = Arweave.init({
host: "arweave.net", // Hostname or IP address for a Arweave host
port: 443, // Port
protocol: "https", // Network protocol http or https
timeout: 20000, // Network request timeouts in milliseconds
logging: false, // Enable network request logging
});
const datajson = fs.readFileSync('./static/data.json', 'utf8');
const datamarkdown = fs.readFileSync('./static/hacker-manual.md', 'utf8');
const { AR_KEY } = process.env;
if (!datajson || !datamarkdown || !AR_KEY) { console.error("datafiles or AR_KEY missing"); }
let uploadJSON = await arweave.createTransaction({
data: datajson
}, AR_KEY);
uploadJSON.addTag('Content-Type', 'application/json');
uploadJSON.addTag("AppName", "ETHBrno");
uploadJSON.addTag("DataTag", "json");
await arweave.transactions.sign(uploadJSON, AR_KEY);
//console.log(uploadJSON);
let uploader = await arweave.transactions.getUploader(uploadJSON);
while (!uploader.isComplete) {
await uploader.uploadChunk();
console.log(`${uploader.pctComplete}% complete, ${uploader.uploadedChunks}/${uploader.totalChunks}`);
}
console.log("Data JSON uploaded in transaction:", uploadJSON.id);
let uploadMD = await arweave.createTransaction({
data: datamarkdown
}, AR_KEY);
uploadMD.addTag('Content-Type', 'text/plain');
uploadMD.addTag('charset', 'UTF-8');
uploadMD.addTag("AppName", "ETHBrno");
uploadMD.addTag("DataTag", "markdown");
await arweave.transactions.sign(uploadMD, AR_KEY);
//console.log(uploadJSON);
let uploader2 = await arweave.transactions.getUploader(uploadMD);
while (!uploader2.isComplete) {
await uploader2.uploadChunk();
console.log(`${uploader2.pctComplete}% complete, ${uploader2.uploadedChunks}/${uploader2.totalChunks}`);
}
console.log("Content markdown uploaded in transaction:", uploadMD.id);

Zobrazit soubor

@ -2,9 +2,89 @@
@tailwind components;
@tailwind utilities;
@layer components {
.header {
@apply text-4xl mt-12 mb-4 font-bold text-white scroll-mt-28;
}
.head2 {
@apply text-3xl mt-12 mb-4 font-bold text-white scroll-mt-28;
}
.head3 {
@apply text-2xl mt-12 mb-4 scroll-mt-28;
}
.head4 {
@apply text-lg mt-12 mb-4 font-bold;
}
.head5 {
@apply font-bold mt-12 mb-8;
}
.list {
@apply my-3 leading-relaxed hover:text-white list-disc list-inside;
}
.sublist {
@apply my-3 leading-relaxed hover:text-white ml-4 md:ml-8 list-[circle];
}
.active {
@apply underline;
}
.paragraph {
@apply leading-relaxed mb-4;
}
.href
{
@apply underline;
}
.md-separator {
width: 100%;
height: 1px;
border-top: 1px solid white;
margin: 4em 0 2em 0;
opacity: 0.5;
}
}
@font-face {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('/fonts/roboto-mono-v22-latin-300.woff2'), url('https://fonts.gstatic.com/s/robotomono/v22/L0x5DF4xlVMF-BfR8bXMIjhLq38.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('/fonts/roboto-mono-v22-latin-regular.woff2'), url('https://fonts.gstatic.com/s/robotomono/v22/L0x5DF4xlVMF-BfR8bXMIjhLq38.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('/fonts/roboto-mono-v22-latin-700.woff2'), url('https://fonts.gstatic.com/s/robotomono/v22/L0x5DF4xlVMF-BfR8bXMIjhLq38.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
body {
font-family: 'Roboto Mono', monospace;
background: white;
scrollbar-width: none;
scrollbar-color: black;
}
.serif {
@ -22,12 +102,6 @@ body {
clip-path: polygon(85% 0%, 100% 20%, 100% 100%, 0% 100%, 0% 0%);
}
@layer components {
.active {
@apply underline;
}
}
.external::after {
padding-left: 10px;
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13.5' height='13.5' aria-hidden='true' viewBox='0 0 24 24' class='iconExternalLink_nPIU'%3E%3Cpath fill='currentColor' d='M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z'%3E%3C/path%3E%3C/svg%3E");
@ -42,4 +116,79 @@ body {
height: 1rem;
margin-left: 3px;
content: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' %3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418' /%3E%3C/svg%3E");
}
.anim {
background: linear-gradient(-45deg, rgba(200, 178, 245, 0.8), rgba(238, 203, 192, 0.8), rgba(135, 169, 240, 0.8), rgba(202, 179, 245, 0.8), rgba(238, 203, 192, 0.8), rgba(184, 251, 246, 0.8));
background-size: 400% 400%;
animation: gradient-animation 30s ease infinite;
}
@keyframes gradient-animation {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
.fadein{
animation: pulsein 1s cubic-bezier(0.4, 0, 0.6, 1) 1;
}
@keyframes pulsein {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.icon {
display: inline-block;
width: 1em;
height: 1em;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
margin-left: 1rem;
}
.icon.map {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-map'%3E%3Cpolygon points='1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6'%3E%3C/polygon%3E%3Cline x1='8' y1='2' x2='8' y2='18'%3E%3C/line%3E%3Cline x1='16' y1='6' x2='16' y2='22'%3E%3C/line%3E%3C/svg%3E");
}
.icon.book {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-book'%3E%3Cpath d='M4 19.5A2.5 2.5 0 0 1 6.5 17H20'%3E%3C/path%3E%3Cpath d='M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z'%3E%3C/path%3E%3C/svg%3E");
}
.icon.users {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-users'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='9' cy='7' r='4'%3E%3C/circle%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87'%3E%3C/path%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'%3E%3C/path%3E%3C/svg%3E");
}
.icon.coffee {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-coffee'%3E%3Cpath d='M18 8h1a4 4 0 0 1 0 8h-1'%3E%3C/path%3E%3Cpath d='M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z'%3E%3C/path%3E%3Cline x1='6' y1='1' x2='6' y2='4'%3E%3C/line%3E%3Cline x1='10' y1='1' x2='10' y2='4'%3E%3C/line%3E%3Cline x1='14' y1='1' x2='14' y2='4'%3E%3C/line%3E%3C/svg%3E");
}
.markdown a {
text-decoration: underline;
}
.markdown a:hover {
text-decoration: none;
}
.markdown li {
display: list-item;
}
.markdown ul {
display: block;
list-style-type: disc;
margin-top: 1em;
margin-bottom: 1 em;
margin-left: 0;
margin-right: 0;
padding-left: 40px;
}

Zobrazit soubor

@ -3,33 +3,32 @@
<head>
<meta charset="utf-8" />
%sveltekit.head%
<link rel="icon" href="%sveltekit.assets%/icons/favicon-32x32.png" />
<meta name="description" content="November 11 - 13, 2022, Impact Hub / Clubco, Brno, Czech Republic - Lunarpunk hackathon focused on privacy and security. We believe that privacy is a fundamental human right. And good privacy needs good security foundations." />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@300;400;700&display=swap" rel="stylesheet">
<!-- Facebook Meta Tags -->
<meta property="og:url" content="https://ethbrno.cz/">
<meta property="og:type" content="website">
<meta property="og:title" content="ETHBrno² 2022">
<meta property="og:description" content="November 11 - 13, 2022, Impact Hub / Clubco, Brno, Czech Republic - Lunarpunk hackathon focused on privacy and security. We believe that privacy is a fundamental human right. And good privacy needs good security foundations.">
<meta property="og:image" content="https://ethbrno.pages.dev/ogbrno.png">
<meta property="og:image" content="https://ethbrno.cz/ogbrno.png">
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta property="twitter:domain" content="ethbrno.cz">
<meta property="twitter:url" content="https://ethbrno.pages.dev/">
<meta property="twitter:url" content="https://ethbrno.cz/">
<meta name="twitter:title" content="ETHBrno² 2022">
<meta name="twitter:description" content="November 11 - 13, 2022, Impact Hub / Clubco, Brno, Czech Republic - Lunarpunk hackathon focused on privacy and security. We believe that privacy is a fundamental human right. And good privacy needs good security foundations.">
<meta name="twitter:image" content="https://dev.ethbrno.cz/ogbrno.png">
<meta name="twitter:image" content="https://ethbrno.cz/ogbrno.png">
<!-- Plausible -->
<script defer data-domain="ethbrno.cz" src="https://x.gwei.cz/js/script.js"></script>
<meta name="viewport" content="width=device-width" />
%sveltekit.head%
</head>
<body>

Zobrazit soubor

@ -1,9 +1,18 @@
<script>
import logo from '$lib/assets/logo_black.svg';
import cityscape from '$lib/assets/cityscape2.png';
import moment from 'moment';
import cityscape from '$lib/assets/cityscape2.png';
import { time } from '$lib/data.json';
export let data;
const options = {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
timeZone: 'Europe/Prague'
};
</script>
<footer class="bg-black mx-auto">
@ -19,15 +28,18 @@
</div>
<div class="md:inline-flex gap-10 sm:ml-auto sm:mt-0 mt-10 justify-center sm:justify-start">
<div>
<div class="flex justify-center">
<a class="text-black" href="/code-of-conduct/">Code of Conduct </a>
</div>
<div class="flex justify-center">
<a
class="text-black external"
href="https://docs.ethbrno.cz"
href="https://docs.ethbrno.cz/events/2022"
rel="noopener noreferrer"
>Documentation
</a>
</div>
<div>
<div class="flex justify-center">
<a
class="text-black external"
href="https://twitter.com/ethbrno"
@ -35,19 +47,19 @@
>Twitter
</a>
</div>
<div>
/join
<a
class="text-black external"
href="https://matrix.ethbrno.cz"
rel="noopener noreferrer"
<div class="flex justify-center">
/join
<a class="text-black external" href="https://matrix.ethbrno.cz" rel="noopener noreferrer"
>#ethbrno:gwei.cz
</a>
</div>
</div>
</div>
<div class="text-black text-center my-16 text-sm opacity-50 leading-7">
Built with <a href="https://kit.svelte.dev/" target="_blank" class="external">SvelteKit</a>
- <a href="https://git.gwei.cz/ethbrno/eb2-website" target="_blank" class="external">Source code</a> - Generated @ {moment(new Date(data.time)).format("YYYY-MM-DD HH:mm:SS")} (UTC+2)</div>
<a href="https://git.gwei.cz/ethbrno/eb2-website" target="_blank" class="external"
>Source code</a
>
- Generated @ {new Date(time).toLocaleString('en-GB', options)} (UTC+2)
</div>
</div>
</footer>

Zobrazit soubor

@ -10,7 +10,11 @@
<nav class="flex flex-wrap items-center justify-center py-6 bg-white mx-auto sticky top-0 z-50">
<div class="container flex flex-wrap items-center justify-between xl:max-w-screen-xl px-3">
<div class="w-full relative flex justify-between xl:w-auto xl:static xl:block xl:justify-start">
<a class="text-sm leading-relaxed flex items-center justify-center" href="/" on:click={() => (open = false)}>
<a
class="text-sm leading-relaxed flex items-center justify-center"
href="/"
on:click={() => (open = false)}
>
<img src={logo} alt="logo" class="w-[145px] h-[54px] md:mr-14 ml-4 md:ml-0" />
</a>
<button
@ -22,15 +26,8 @@
</button>
</div>
<div
class={open ? 'block w-full' : 'xl:flex flex-grow items-center hidden'}
id="navbar"
>
<div class={open ? 'block w-full' : 'xl:flex flex-grow items-center hidden'} id="navbar">
<div class="text-sm pt-10 xl:pt-0 pl-4 xl:pl-0">
<strong>November 11 - 13, 2022</strong><br />
Brno, Czech Republic
</div>
<div class="flex flex-grow items-center">
<ul
class="flex flex-col xl:flex-row xl:flex-grow-0 xl:mt-0 list-none xl:ml-auto text-base flex-grow my-8 xl:my-0"
@ -38,35 +35,55 @@
<li>
<a
href="/"
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75" on:click={() => (open = false)}
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75"
on:click={() => (open = false)}
class:active={$page.url.pathname === '/'}>Home</a
>
</li>
<li>
<a
href="/manual"
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75"
on:click={() => (open = false)}
class:active={$page.url.pathname === '/manual/'}>Hacker Manual</a
>
</li>
<li>
<a
href="/schedule"
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75"
on:click={() => (open = false)}
class:active={$page.url.pathname === '/schedule/'}>Schedule</a
>
</li>
<li>
<a
href="/venues"
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75" on:click={() => (open = false)}
class:active={$page.url.pathname === '/venues/'}>Venues</a
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75"
on:click={() => (open = false)}
class:active={$page.url.pathname === '/venues/'}>Venue</a
>
</li>
<li>
<a
href="/contributors"
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75" on:click={() => (open = false)}
class:active={$page.url.pathname === '/contributors/'}
>Contributors</a
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75"
on:click={() => (open = false)}
class:active={$page.url.pathname.match(/^\/contributors\//)}>Contributors</a
>
</li>
<li>
<li class="pl-0 xl:pl-5">
<a
href="https://matrix.ethbrno.cz"
rel="noopener noreferrer"
target="_blank"
on:click={() => (open = false)}
class="px-5 py-2 flex items-center leading-snug text-black hover:opacity-75 external">Chat</a
class="px-5 py-2 flex items-center bg-black text-white leading-snug hover:opacity-75 external"
>Chat</a
>
</li>
<li class="pl-0 xl:pl-5">
<!--li class="pl-0 xl:pl-5">
<a
href="https://join.ethbrno.cz"
rel="noopener noreferrer"
@ -75,7 +92,7 @@
class="px-5 py-2 flex items-center bg-black text-white leading-snug hover:opacity-75 external"
>Join</a
>
</li>
</li-->
</ul>
</div>
</div>

30
src/lib/dateprng.js Normal file
Zobrazit soubor

@ -0,0 +1,30 @@
function roundToNearestMinute(date = new Date()) {
const timefraction = 1000 * 10;
return Math.round(date.getTime() / timefraction) * timefraction;
}
const getDateIntArr = () => roundToNearestMinute().toString().split("").reverse().map(d => parseInt(d));
class MyRandom {
constructor() {
this.seed = getDateIntArr();
}
generate() {
const dateIntArr = getDateIntArr();
this.seed = dateIntArr.map((d, index) => {
let newVal = d + this.seed[index];
if (newVal > 9) {
newVal = newVal % 10;
}
return 0.5 - (newVal / 10);
});
this.seed.push(this.seed.shift());
//console.log(this.seed);
//console.log(roundToNearestMinute(), Date.now())
return this.seed;
}
};
export const prng = new MyRandom().generate();

28
src/lib/graphdata.js Normal file
Zobrazit soubor

@ -0,0 +1,28 @@
export const graphdata = async (tag) => {
const docrequest = await fetch('https://arweave.net/graphql', {
method: 'POST',
headers: {
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type': 'application/json',
'Accept': 'application/json',
'Connection': 'keep-alive',
'DNT': '1',
'Origin': 'https://arweave.net'
},
body: JSON.stringify({
'query': 'query getData($tag: String!) {\n transactions(\n tags: [\n { name: "AppName", values: "ETHBrno" }\n { name: "DataTag", values: [$tag] }\n ]\n first: 1\n ) {\n edges {\n node {\n id \n }\n }\n }\n}\n',
'variables': {
'tag': tag
}
})
}).then(r => r.json());
const {
data: {
transactions: { edges }
}
} = docrequest;
if (edges.length < 0) return null;
const response = await fetch(`https://arweave.net/${edges[0].node.id}`);
return (tag === "json" ? await response.json() : await response.text());
};

1151
src/lib/schedule.json Normal file

Rozdílový obsah nebyl zobrazen, protože je příliš veliký Načíst rozdílové porovnání

Zobrazit soubor

@ -1,11 +1,2 @@
/** @type {import('./$types').PageLoad} */
export const prerender = true;
import data from '$lib/data.json';
export async function load() {
return {
...data,
title: 'ETHBrno² 2022'
}
}

Zobrazit soubor

@ -2,10 +2,8 @@
import '../app.css';
import Navigation from '$lib/Navigation.svelte';
import Footer from '$lib/Footer.svelte';
export let data;
</script>
<Navigation open={false} />
<slot />
<Footer data={data} />
<Footer />

Zobrazit soubor

@ -1,19 +1,12 @@
<script>
export let data;
import { sponsors } from '$lib/data.json';
const tiers = [
{
id: 'schnorr',
name: 'Schnorr'
},
{
id: 'ecdsa',
name: 'ECDSA'
},
{
id: 'aes',
name: 'AES',
},
{
id: '3des',
name: '3DES'
@ -22,54 +15,62 @@
id: 'community',
name: 'Community'
}
]
];
</script>
<svelte:head>
<title>ETHBrno² 2022</title>
</svelte:head>
<section class="text-gray-400 bg-black border-b">
<div class="w-full mx-auto flex md:flex-row md:h-5/6 flex-col items-center">
<div class="md:w-5/12 md:mb-0 mb-10 md:flex hidden justify-center h-[800px]">
<img src="cam2.png" class="object-cover object-center" alt="cam" />
<div class="md:w-5/12 md:mb-0 mb-4 md:flex justify-center md:h-[800px] bg-white md:bg-black">
<img src="cam2.png" class="object-cover object-center invert -ml-20 md:ml-0 md:invert-0 -mt-20 md:mt-0" alt="cam" />
</div>
<div
class="md:w-5/12 xl:pr-16 md:pr-4 pt-4 flex flex-col md:items-start md:text-left mx-auto items-center text-center text-white transition-transform"
class="md:w-5/12 xl:pr-16 md:pr-4 pt-4 flex flex-col md:items-start md:text-left mx-auto items-center text-center text-white transition-transform px-4 md:px-0"
>
<img src="logo.svg" class="md:-ml-4 p-2 md:p-0 w-[343px] h-[127px] md:w-[150px] " alt="logo" />
<p class="text-3xl my-2">privacy {`&`} security edition</p>
<p class="text-xl">NOVEMBER 11-13, 2022</p>
<p class="text-xl">Brno, Czech republic</p>
<img src="logo.svg" class="md:-ml-4 p-2 md:p-0 w-[250px] md:w-[343px] " alt="logo" />
<p class="text-xl md:text-3xl my-2">privacy {`&`} security edition</p>
<p class="text-base md:text-xl">NOVEMBER 11-13, 2022</p>
<p class="text-base md:text-xl">Brno, Czech republic</p>
<div class="h-[1px] bg-white w-full my-2 opacity-20" />
<p class="mb-8 py-4 leading-relaxed opacity-30 text-lg font-light">
<p class="mb-8 py-4 leading-relaxed opacity-30 text-sm md:text-lg font-light" data-testid="tags">
#freedom #anonymity #non-kyc #encryption #selfsovereignty #p2p #opensource #web3
#smartcontracts #audits #vulnerabilities #analytics #wallets #scams #darkforest #mev
#zeroknowledgeproofs
#zeroknowledgeproofs #cypherpunk #lunarpunk #hackathon
</p>
</div>
</div>
</section>
<section class="text-black bg-white body-font border-b">
<div class="container mx-auto flex px-5 py-24 md:flex-row flex-col items-center">
<div class="container mx-auto flex px-5 py-12 md:py-24 md:flex-row flex-col items-center">
<div
class="xl:flex-grow md:w-1/2 xl:pl-32 md:pl-16 xl:pr-32 md:pr-16 flex flex-col md:items-start md:text-left mb-16 md:mb-0 items-center text-center"
>
<h1 class="md:text-5xl text-3xl font-bold mb-4">About</h1>
<p class="mb-8 leading-relaxed">
ETHBrno² is an annual independent {`&`} open community hackathon (former conference) for supporters
of decentralised finance, smart contracts and Web3 happening in Brno, Czech Republic. ETHBrno²
is the second, and we believe the best yet, edition.
<a href="https://docs.ethbrno.cz" target="_blank">ETHBrno²</a> is an annual independent {`&`}
open community hackathon for supporters of decentralised finance, smart contracts and Web3 happening
in
<a href="https://en.wikipedia.org/wiki/Brno" target="_blank" class="external"
>Brno, Czech Republic</a
>. ETHBrno² is the second, and we believe the best yet, edition.
</p>
<p class="mb-8 leading-relaxed">
ETHBrno² events are organized by Gwei.cz community with the help of the UTXO Foundation.
This year we are focusing on <strong>privacy and security</strong> topics.
</p>
<p class="mb-8 leading-relaxed">This year we are focusing on privacy and security topics.</p>
<p class="mb-8 leading-relaxed">
You can read more in the article <a
href="https://mirror.xyz/ethbrno.eth/6BH9cUVuD85hy5O0L5cOOOE7niSA9Yo5eWsXVzKOlO4"
target="_blank"
class="external">"Announcing ETHBrno²" on Mirror</a
>.
</p>
<div class="flex justify-center">
<!--div class="flex justify-center flex-wrap">
<a
href="https://join.ethbrno.cz/"
class="inline-flex text-white bg-black border-0 py-2 px-6 focus:outline-none hover:bg-gray-900 text-lg external"
@ -82,16 +83,16 @@
class="ml-4 inline-flex border-0 py-2 px-6 focus:outline-none hover:bg-gray-100 text-lg underline external"
>Sponsor</a
>
</div>
</div-->
</div>
<div class="xl:max-w-lg xl:w-full md:w-1/2 w-full">
<div class="xl:max-w-lg xl:w-full md:w-1/2 w-[300px]">
<img class="object-cover object-center" alt="hero" src="key.png" />
</div>
</div>
</section>
<section class="text-white bg-black body-font">
<div class="container mx-auto flex px-5 py-24 md:flex-row flex-col items-center">
<div class="xl:max-w-lg xl:w-full md:w-1/2 w-full md:mb-0 mb-10 flex justify-center">
<div class="container mx-auto flex px-5 py-12 md:py-24 md:flex-row flex-col-reverse items-center">
<div class="xl:max-w-lg xl:w-full md:w-1/2 w-[150px] mt-10 md:mb-10 flex justify-center">
<img class="object-cover object-center" alt="hero" src="lock.png" />
</div>
<div
@ -117,13 +118,20 @@
let's create them together.
</p>
<p class="leading-relaxed">Don't Trust. Verify. - Run a node - Protect privacy</p>
<p class="mt-8 leading-relaxed">
<a
href="https://docs.ethbrno.cz/events/2022/hackathon"
class="inline-flex text-black bg-white border-0 py-2 px-6 focus:outline-none hover:bg-gray-600 text-lg external"
>Read more about hackathon</a
>
</p>
</div>
</div>
</section>
<section class="text-white bg-black body-font">
<div class="container mx-auto flex px-5 py-24 md:flex-row flex-col items-center">
<div
class="flex-grow xl:pl-32 md:pl-16 xl:pr-32 md:pr-16 flex flex-col md:items-start md:text-left items-center text-center"
class="flex-grow w-full px-4 md:px-0 xl:pl-32 md:pl-16 xl:pr-32 md:pr-16 flex flex-col md:items-start md:text-left items-center text-center"
>
<h1 class="md:text-5xl text-3xl mb-8 font-bold text-white">Sponsors</h1>
{#each tiers as tier, tierNumber}
@ -133,16 +141,15 @@
<p class="whitespace-nowrap ml-4 opacity-30">Tier {tierNumber}</p>
</div>
<div
class="flex flex-col md:flex-row items-center justify-center w-full md:m-6 border-l border-white/30"
class="flex flex-col md:flex-row items-center justify-center w-full gap-20 border-l border-white/30"
>
{#each data.sponsors.filter(x => x.tier.includes(tier.id)) as sponsor}
<a
href={sponsor.url}
rel="noopener noreferrer"
target="_blank"
alt="link to"
>
<img class="w-60 m-6" src="/photos/sponsors/{sponsor.id}.png" alt="{sponsor.name} Logo" />
{#each sponsors.filter((x) => x.tier.includes(tier.id)) as sponsor}
<a href={sponsor.url} rel="noopener noreferrer" target="_blank" alt="link to">
<img
class="w-auto m-6 max-h-24 object-contain grayscale hover:grayscale-0"
src="/photos/sponsors/{sponsor.id}.png"
alt="{sponsor.name} Logo"
/>
</a>
{/each}
</div>

Zobrazit soubor

@ -0,0 +1,11 @@
/** @type {import('./$types').PageLoad} */
import { base } from '$app/paths';
import { marked } from 'marked';
marked.setOptions({ gfm: true });
export async function load({ fetch }) {
const response = await fetch(`${base}/code-of-conduct.md`).then((r) => r.text());
const compiledResponse = await marked.parse(response);
return { content: compiledResponse };
}

Zobrazit soubor

@ -0,0 +1,23 @@
<script>
import { onMount } from 'svelte';
export let data = {
content: ''
};
</script>
<svelte:head>
<title>Code of Conduct | ETHBrno²</title>
</svelte:head>
<section class="text-white bg-black body-font">
<div class="container mx-auto flex flex-col xl:max-w-screen-xl px-8 md:px-3 ">
<h1 class="pt-12 pb-6 xl:pt-20 xl:pb-10 text-4xl">Code of Conduct</h1>
<article class="mb-12">
<div
class="[&_hr]:md-separator [&_p]:paragraph [&_a]:href [&_h1]:header [&_h2]:head2 [&_ul]:list [&_li]:sublist [&_h3]:head3 [&_h4]:head4 [&_h5]:head5 [&_img[src*='#left']]:hidden md:[&_img[src*='#left']]:flex md:[&_img[src*='#left']]:float-left [&_img[src*='#left']]:mt-12 [&_img[src*='#left']]:mr-5"
>
{@html data.content}
</div>
</article>
</div>
</section>

Zobrazit soubor

@ -1,75 +0,0 @@
<script>
export let data;
const categories = [
{
role: 'speaker',
title: 'Speakers'
},
{
role: 'mentor',
title: 'Mentors',
},
{
role: 'judge',
title: 'Judges',
},
{
role: 'team',
title: 'Core team'
}
]
</script>
<svelte:head>
<title>Contributors: {data.title}</title>
</svelte:head>
<section class="text-gray-400 body-font bg-black py-12">
{#each categories as cat}
<div class=" px-5 py-12 mx-auto">
<div class="flex flex-col text-center w-full mb-12">
<h1 class="sm:text-4xl text-3xl font-medium title-font mb-2 text-white">{cat.title}</h1>
</div>
<div class="flex flex-wrap justify-center">
{#each Object.values(data.contributors).filter(x => x.roles.includes(cat.role)) as item}
{#if item.name !== undefined}
<div class="bg-black bg-opacity-40 p-6 h-full w-full md:w-1/3 lg:w-1/4">
<a href="https://twitter.com/{item.twitter}" target="_blank">
<img
class="h-40 md:h-60 w-full object-cover object-center mb-6 grayscale hover:grayscale-0"
loading="lazy"
src={`/photos/contributors/${item.id}.jpg`}
alt={item.desc}
/>
</a>
<h3
class="tracking-widest text-gray-400 text-xs font-medium title-font flex flex-row divide-x"
>
{#each item.roles as role}
<span class="underline">{role}</span>
{/each}
</h3>
<div class="flex flex-row mb-2 {item.remote ? 'contributor-remote' : ''}">
<a
class="text-lg text-white font-medium title-font"
href={`https://twitter.com/${item.twitter}`}
target="_blank"
>
{item.name}
{#if item.nickname}
({item.nickname})
{/if}
</a>
</div>
<p class="leading-relaxed text-sm">{item.bio}</p>
</div>
{/if}
{/each}
</div>
</div>
{/each}
</section>

Zobrazit soubor

@ -0,0 +1,19 @@
/** @type {import('./$types').PageLoad} */
import { error } from '@sveltejs/kit';
import { contributorTypes, contributors } from '$lib/data.json';
export const prerender = true;
export async function load({ params }) {
let type = params.type.replace(/\//, "");
if (!type.trim()) {
type = 'all'
}
const typeConfig = contributorTypes[type]
if (!typeConfig) {
throw error(404, 'Not found');
}
return { type, typeConfig, contributors, contributorTypes }
}

Zobrazit soubor

@ -0,0 +1,90 @@
<script>
import { onMount } from 'svelte';
import { browser, dev, prerendering } from '$app/environment';
import { graphdata } from '$lib/graphdata';
import { prng } from '$lib/dateprng.js';
export let data;
function wrapContributor(c) {
if (c.twitter) {
c.link = 'https://twitter.com/' + c.twitter;
}
return c;
}
//disabling data reload because of random
// onMount(async () => {
// if (dev) return;
// const result = await graphdata('json');
// if (result) data.contributors = result.contributors;
// });
let innercount = 0;
$: filteredContributors = data.contributors
.filter((c) => data.type === 'all' || c.roles.includes(data.typeConfig.role))
.sort((a, b) => {
return 0.5 - Math.random();
})
.map(wrapContributor);
</script>
<svelte:head>
<title>Contributors{data.type !== 'all' ? `: ${data.typeConfig.title}` : ''} | ETHBrno²</title>
</svelte:head>
<section
class="text-white body-font bg-black px-2 py-6 md:py-12 flex justify-center flex-row overflow-x-scroll flex-wrap text-sm md:text-base"
>
{#each Object.entries(data.contributorTypes) as [ctKey, ct]}
<a
href="/contributors/{ctKey === 'all' ? '' : ctKey}"
class="px-3 py-2 md:px-5 md:py-2 border m-2 {ctKey === data.type
? 'text-black bg-white'
: 'hover:outline-none hover:bg-gray-600'}">{ct.title}</a
>
{/each}
</section>
<section class="text-gray-400 body-font bg-black py-6 md:py-12">
<div class=" px-5 mx-auto">
<div class="flex flex-wrap justify-center" data-testid="list">
{#if filteredContributors.length > 0}
{#each filteredContributors as item}
<div class="bg-black bg-opacity-40 p-6 h-full w-full md:w-1/3 lg:w-1/4 fadein">
<a href={item.link} target="_blank">
<img
class="h-40 md:h-60 w-full object-cover object-center mb-6 grayscale hover:grayscale-0"
loading="lazy"
src={`/photos/contributors/${item.id}.jpg`}
alt={item.desc}
/>
</a>
<h3
class="tracking-widest text-gray-400 text-xs font-medium title-font flex flex-row gap-2"
>
{#each item.roles as role}
<span class="underline">{role}</span>
{/each}
</h3>
<div class="flex flex-row mb-2">
<a
class="text-lg flex justify-center text-white font-medium title-font"
href={item.link}
target="_blank"
>
{item.name}
{#if item.nickname}
({item.nickname})
{/if}
{#if item.remote}
<span class="ordinal text-xs ml-2">remote</span>
{/if}
</a>
</div>
<p class="leading-relaxed text-sm">{item.bio}</p>
</div>
{/each}
{:else}
<div class="p-6">Nobody's here yet.</div>
{/if}
</div>
</div>
</section>

Zobrazit soubor

@ -0,0 +1,11 @@
/** @type {import('./$types').PageLoad} */
import { base } from '$app/paths';
import { marked } from 'marked';
marked.setOptions({ gfm: true });
export async function load({ fetch }) {
const response = await fetch(`${base}/hacker-manual.md?${Date.now()}`).then((r) => r.text());
const compiledResponse = await marked.parse(response);
return { content: compiledResponse };
}

Zobrazit soubor

@ -0,0 +1,33 @@
<script>
import { onMount } from 'svelte';
import { graphdata } from '$lib/graphdata';
import { browser, dev, prerendering } from '$app/environment';
export let data = {
content: ''
};
//abandoning this, not going to send 500kb on client just to render markdown
/* onMount(async () => {
if (dev) return;
const result = await graphdata('markdown');
if (result) data.content = await compile(result);
//console.log(data.content);
}); */
</script>
<svelte:head>
<title>Hacker Manual | ETHBrno²</title>
</svelte:head>
<section class="text-white bg-black body-font">
<div class="container mx-auto flex flex-col xl:max-w-screen-xl px-8 md:px-3 ">
<h1 class="pt-12 pb-6 xl:pt-20 xl:pb-10 text-4xl">Hacker Manual</h1>
<article class="mb-12 grayscale">
<div
class="[&_hr]:md-separator [&_p]:paragraph [&_a]:href [&_h1]:header [&_h2]:head2 [&_ul]:list [&_li]:sublist [&_h3]:head3 [&_h4]:head4 [&_h5]:head5 [&_img[src*='#left']]:hidden md:[&_img[src*='#left']]:flex md:[&_img[src*='#left']]:float-left [&_img[src*='#left']]:mt-12 [&_img[src*='#left']]:mr-5"
>
{@html data.content}
</div>
</article>
</div>
</section>

Zobrazit soubor

@ -0,0 +1,13 @@
/** @type {import('./$types').PageLoad} */
import events from '$lib/events.json';
import { contributorTypes, contributors } from '$lib/data.json';
export const prerender = true;
export async function load() {
events.sort(function (a, b) {
return new Date(a.datetime) - new Date(b.datetime);
});
//console.log(sortedEvents)
return { events, contributors };
}

Zobrazit soubor

@ -0,0 +1,179 @@
<script>
import { marked } from 'marked';
export let data;
let checked = true;
const today = new Date().getDay();
let selectedDay = today === 5 || today === 6 || today === 0 ? today : 5;
//let selectedDay = 6;
$: filteredEvents = data.events?.filter((c) => {
let evtDate = new Date(c.datetime).getDay();
return evtDate === selectedDay;
});
function addMinutes(numOfMinutes, dateOrig = new Date()) {
const dateInstance = new Date(dateOrig);
dateInstance.setMinutes(dateOrig.getMinutes() + numOfMinutes);
return dateInstance;
}
function getTiming(date, duration) {
const dateObj = new Date(date);
const endObj = addMinutes(duration, dateObj);
//console.log(dateObj, endObj);
const minutes = [
String(dateObj.getMinutes()).padStart(2, '0'),
String(endObj.getMinutes()).padStart(2, '0')
];
return `${dateObj.getUTCHours() + 1}:${minutes[0]} - ${endObj.getUTCHours() + 1}:${minutes[1]}`;
}
function contributorsData(arr) {
return arr.map((contributor) => {
const item = data.contributors.find((c) => c.pretalxId === contributor.id);
return {
id: item ? item.id : null,
name: item ? item.name : contributor.name
};
});
}
function isPast(date, duration) {
const _date = new Date(date);
const endTime = addMinutes(duration + 30, _date);
return new Date() > endTime;
}
//console.log(filteredEvents);
</script>
<svelte:head>
<title>Schedule | ETHBrno²</title>
</svelte:head>
<section
class="text-white body-font bg-black px-2 py-6 md:py-12 flex justify-center flex-row overflow-x-scroll flex-wrap text-sm md:text-base"
>
<button
on:click={() => (selectedDay = 5)}
class="px-3 py-2 md:px-5 md:py-2 border m-2 {selectedDay === 5
? 'text-black bg-white'
: 'hover:outline-none hover:bg-gray-600'}">Friday</button
>
<button
on:click={() => (selectedDay = 6)}
class="px-3 py-2 md:px-5 md:py-2 border m-2 {selectedDay === 6
? 'text-black bg-white'
: 'hover:outline-none hover:bg-gray-600'}">Saturday</button
>
<button
on:click={() => (selectedDay = 0)}
class="px-3 py-2 md:px-5 md:py-2 border m-2 {selectedDay === 0
? 'text-black bg-white'
: 'hover:outline-none hover:bg-gray-600'}">Sunday</button
>
</section>
<section
class="text-white body-font bg-black px-2 py-6 md:py-12 flex justify-center flex-row overflow-x-scroll flex-wrap text-sm md:text-base"
>
<label for="Toggle1" class="inline-flex items-center space-x-4 cursor-pointer text-gray-100">
<span>Hide</span>
<span class="relative">
<input id="Toggle1" type="checkbox" class="hidden peer" bind:checked />
<div class="w-10 h-6 rounded-full shadow-inner bg-gray-400 peer-checked:bg-gray-100" />
<div
class="absolute inset-y-0 left-0 w-4 h-4 m-1 rounded-full shadow peer-checked:right-0 peer-checked:left-auto bg-gray-800"
/>
</span>
<span>Show past events</span>
</label>
</section>
<section class="text-white bg-black body-font overflow-hidden">
<div class="container px-5 pb-24 mx-auto">
{#each filteredEvents as evt}
<div
class="py-8 divide-y-2 divide-gray-800 {isPast(evt.datetime, evt.duration) &&
!checked &&
'hidden'}"
>
<div class=" flex flex-wrap md:flex-nowrap">
{#if evt.eventType === 'Catering' || evt.eventType === 'Experiences'}
<div
class="md:w-64 md:mb-0 mb-2 flex-shrink-0 flex flex-col border-l-4 border-white md:pl-2"
>
<span class="font-bold title-font px-2 ">{getTiming(evt.datetime, evt.duration)}</span
>
<a href="/venues" class="mt-1 text-white text-sm mb-1 hover:underline px-2"
>🞋 {evt.stage}</a
>
</div>
{:else}
<div
class="md:w-64 md:mb-0 mb-2 flex-shrink-0 flex flex-col border-l-4 border-gray-900 md:pl-2"
>
<span class="font-semibold title-font text-white px-2"
>{getTiming(evt.datetime, evt.duration)}</span
>
<a href="/venues" class="mt-1 text-white text-sm mb-1 hover:underline px-2"
>🞋 {evt.stage}</a
>
<span class="mt-1 text-gray-500 text-sm uppercase px-2">{evt.eventType}</span>
</div>
{/if}
<div class="md:flex-grow">
<h2 class="text-2xl font-medium text-white title-font mb-2">
{evt.name}
</h2>
{#if evt.description && !['TBD', 'TBA', 'TODO'].includes(evt.description)}
<p class="leading-relaxed markdown">
{@html marked(evt.description)}
</p>
{/if}
{#if evt.speakers && evt.speakers.length > 0}
<div class="col-start-2 row-start-1 row-end-3 mt-4 lg:mt-0 xl:mt-4">
<dt class="sr-only">Speakers</dt>
<dd class="flex justify-start -space-x-1.5 gap-6">
{#each contributorsData(evt.speakers || []) as speaker}
<div class="flex gap-4">
{#if speaker.id}
<img
src={`/photos/contributors/${speaker.id}.jpg`}
alt={speaker.name}
class="w-6 h-6 rounded-full bg-slate-100 ring-2 ring-white grayscale"
loading="lazy"
/>
{/if}
<p>{speaker.name}</p>
</div>
{/each}
</dd>
</div>
{/if}
</div>
</div>
</div>
{/each}
</div>
</section>
<section
class="text-white body-font bg-black px-2 py-6 md:py-12 flex justify-center flex-row overflow-x-scroll flex-wrap text-sm md:text-base"
>
<div class="flex items-center p-6 space-x-4 text-gray-100">
<div class="flex items-center self-stretch justify-center">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-10 h-10"
>
<path
fill-rule="evenodd"
d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z"
clip-rule="evenodd"
/>
</svg>
</div>
<span>Time is displayed in CET (UTC+1)</span>
</div>
</section>

Zobrazit soubor

@ -3,10 +3,12 @@
</script>
<svelte:head>
<title>Venues: {data.title}</title>
<title>Venue | ETHBrno²</title>
</svelte:head>
<section class="text-white bg-black body-font">
<div class="container mx-auto flex py-24 md:flex-row flex-col items-center xl:max-w-screen-xl">
<section class="text-white bg-black body-font hidden">
<div
class="container mx-auto flex py-12 md:py-24 md:flex-row flex-col items-center xl:max-w-screen-xl md:px-0 px-4"
>
<div
class="xl:flex-grow xl:pr-24 md:pr-16 flex flex-col lg:items-start lg:text-left mb-16 md:mb-0 items-center text-center"
>
@ -39,13 +41,6 @@
>
OpenStreetMap
</a>
<a
href="https://goo.gl/maps/8bKsGHhVSYrF8ZmE8"
target="_blank"
class="inline-flex text-black bg-white border-0 py-2 px-6 focus:outline-none hover:bg-gray-600 text-lg external"
>
Google Maps
</a>
</div>
</div>
<div class="xl:max-w-lg xl:w-full w-5/6 flex md:justify-end">
@ -59,53 +54,18 @@
</div>
</div>
</section>
<section class="text-white bg-black body-font">
<div class="container mx-auto flex py-24 md:flex-row flex-col items-center xl:max-w-screen-xl">
<div class="xl:max-w-lg xl:w-full md:w-1/2 w-5/6 md:mb-0 mt-10 md:mt-0">
<section class="text-white bg-black body-font ">
<div
class="container mx-auto flex py-12 md:py-24 md:flex-row flex-col-reverse items-center xl:max-w-screen-xl md:px-0 px-4"
>
<div class="mx-auto w-5/6 md:mb-0 mt-10 md:mt-0">
<img
class="object-cover object-center grayscale hover:grayscale-0"
class="object-cover object-center invert"
decoding="async"
loading="lazy"
src="/venues/cc1.png"
src="/venues/floorplan.svg"
alt="venue"
/>
</div>
<div
class="xl:flex-grow md:w-1/2 xl:pl-24 md:pl-16 flex flex-col md:items-start md:text-left items-center text-center"
>
<h1 class="title-font sm:text-4xl text-3xl mb-4 font-medium text-white">Clubco Brno</h1>
<p class="leading-relaxed text-white">Opening hours:</p>
<p class="leading-relaxed mb-5 text-white">
Fri Nov 11: 14:30 - 22:00, Sat Nov 10: 9:00 - 22:00, Sun Nov 13: 9:00 - 17:00
</p>
<p class="relative mb-4">
Additional venue, only 5 minutes walk (400m) from the main venue (Impact Hub).
</p>
{' '}
<p class="relative mb-4">
It will be an additional space for hackers that offers another style, with private meeting
rooms and open workspaces. It also includes an event space where additional workshops and
lectures will be held.
</p>
<div class="relative mb-4">
This location will NOT be open 24/7, you will need to move to the Impact Hub for the night.
</div>
<div class="flex flex-wrap justify-center gap-4">
<a
href="https://www.openstreetmap.org/node/8848071783"
target="_blank"
class="inline-flex text-black bg-white border-0 py-2 px-6 focus:outline-none hover:bg-gray-600 text-lg external"
>
OpenStreetMap
</a>
<a
href="https://g.page/clubco-brno"
target="_blank"
class="inline-flex text-black bg-white border-0 py-2 px-6 focus:outline-none hover:bg-gray-600 text-lg external"
>
Google Maps
</a>
</div>
</div>
</div>
</section>

4
static/200.html Normal file
Zobrazit soubor

@ -0,0 +1,4 @@
<h1>We need JavaScript</h1>
<p>You reached part of the web that use javascript to fetch the data from external sources. When we had a choice between
making javascript mandatory and using a centralized infrastructure, we picked prior. Apologies for any
inconvenience.</p>

35
static/code-of-conduct.md Normal file
Zobrazit soubor

@ -0,0 +1,35 @@
We are a collective and we want to bring people in the community together to exchange ideas, make new friends, and build things as an inclusive, welcoming, and safe community.
Therefore, any harmful or discriminating behavior by anyone (volunteers, organizers, project leads, contributors, hackers, or absolutely anyone involved in our community) will not be tolerated and results in the offending person(s) being excluded from the group.
Members should be judged by their actions, not criteria such as degrees, age, race, nationality, sex, sexual orientation, gender, gender identity or expression, disability, physical appearance, religion (or lack thereof), or position. We are a diverse community. Leave your egos at the door.
## Be Open
We welcome one and all. We especially love to adopt newbies in the community. We foster decentralized, open communities, society, and technology, so we should be open to everyone and everything. We all bring different backgrounds and experiences. Great things can happen when we show up with an open mind and curiosities to explore. If you don't have an open mind, this group is not for you.
## Be Respectful
Be exceptionally kind to others. Respect their work, time, and perspectives. Do not insult or troll others, unless it is for banter (covered in a later point). We all spend our time, resources, and energy to be part of this group. Respect each other, the projects, and the process.
## Be Daring
Dare to create something nobody did before. If you get stuck, ask for help - people will help you when you ask. This is a community. We create things together.
## What We Create
Promote Decentralization. Build what matters to you. You can organize events, build applications, or foster public discourse. You can create art and beauty on a computer. Most importantly, create, hack, and build together.
## Contributions in Other Ways
Banter and memeing is encouraged as you see fit.
## Personal Responsibility
Everyone in this community is responsible for their own tasks. If you have a project, it is your responsibility to manage it. We are not here to spoon feed you or do your work for you. Ain't nobody got time for that. But we are a community and here to support. Always reach out if you are having issues with completing a task.
## Unacceptable Behavior & Harassment
Unacceptable behavior includes: intimidation, harassment, abuse, discrimination, derogatory or demeaning words or actions by any participant in our community online or in person. If you have disagreements with someone, communicate directly with each other and work on a solution.
Harassment includes: harmful or prejudicial verbal or written comments related to gender, sexual orientation, race, religion, disability; inappropriate use of nudity and/or sexual images (including presentation slides); inappropriate depictions of violence (including presentation slides); deliberate intimidation, stalking or following; harassing photography or recording; sustained disruption of talks or other events; inappropriate physical contact, and unwelcomed sexual attention.
## Notify Us
If you are subject to or witness unacceptable behavior, or have any other concerns, you can always notify a project lead, event organizer, or member of the core group. Anytime. We will do everything to help and support you. If you can't find anyone in person, reach out via email: [utxo@utxo.foundation](mailto:utxo@utxo.foundation)
---
*Text taken from our friends at ETHBerlin - thank you!*

Zobrazit soubor

@ -1,44 +0,0 @@
{
"contributors": [
{
"id": "rachel-oleary",
"name": "Rachel-Rose O'Leary",
"twitter": "lunar_mining",
"bio": "DarkFi core dev, writer",
"roles": [
"speaker"
],
"desc": "Rachel-Rose OLeary is a core dev at lunarpunk layer 1, DarkFi. She is also co-editor of the philosophy journal Agorism in the 21st Century. As a writer she has published in egirlcapital, CoinDesk, Defiant, Wired and elsewhere under anonymous accounts. She believes privacy is necessary for communities to define their own destinies.\n"
},
{
"id": "artem-vorotnikov",
"name": "Artem Vorotnikov",
"twitter": "vorot93",
"bio": "Ethereum Core Developer, creator of Akula",
"roles": [
"speaker"
],
"remote": true
},
{
"id": "pavol-luptak",
"name": "Pavol Luptak",
"nickname": "wilder",
"twitter": "wilderco",
"bio": "Nethemba, Hacktrophy, liberation.travel",
"roles": [
"speaker"
],
"remote": true
},
{
"id": "tree",
"name": "Tree",
"twitter": "treecz",
"bio": "Zakladatel Gwei.cz a BohemianDAO, organizátor UTXO.22",
"roles": [
"team"
]
}
]
}

binární
static/ethbrno-cover.png Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 71 KiB

Binární soubor nebyl zobrazen.

Binární soubor nebyl zobrazen.

Binární soubor nebyl zobrazen.

Binární soubor nebyl zobrazen.

Binární soubor nebyl zobrazen.

Binární soubor nebyl zobrazen.

288
static/hacker-manual.md Normal file
Zobrazit soubor

@ -0,0 +1,288 @@
## TL;DR
* Join the conversation on Matrix - [#ethbrno:gwei.cz](https://matrix.to/#/#ethbrno:gwei.cz)
* [Mint your unique SBT token](#hackathon-identity---soulbound-token-sbt)
* Get test ETH on Goerli or Sepolia - [faucet.ethbrno.cz](https://faucet.ethbrno.cz/)
* Submit your project before Sunday 11am - [devfolio.ethbrno.cz](https://ethbrno.devfolio.co/) ([read more](#submissions))
* Take part in quadratic voting - [vote.ethbrno.cz](https://vote.ethbrno.cz/)
## Overview
* Travel and Accommodation
* [Travelling to Brno](#travelling-to-brno)
* [Brno Public transport](#brno-public-transport)
* [Accomodation](#accomodation)
* [Map and tips from locals](#map-and-tips-from-locals)
* [Catering](#catering)
* Hackathon
* [Schedule overview](#schedule-overview)
* [Hackathon identity - Soulbound Token (SBT)](#hackathon-identity---soulbound-token-sbt)
* [Hacking Rules](#hacking-rules)
* [Prizes and bounties](#prizes-and-bounties)
* [Finding a Team / Project Idea](#finding-a-team--project-idea)
* [Mentoring](#mentoring)
* [Submissions](#submissions)
* Experiences
* [Massages](#massages)
* [Sound-healing](#sound-healing)
* [Board games](#board-games)
* [Side-events](#side-events)
* [Afterparty](#afterparty)
---
### Travelling to Brno
The best way to go to Brno from Vienna, Prague, Budapest, Bratislava or other bigger cities is by train. You can choose from more carriers and price levels, but all trains are safe, usualy equipped with wifi and plugs, usualy serving some snacks and coffee. You can find your connectin on [this link](https://idos.idnes.cz/en/vlakyautobusymhdvse/spojeni/). For example [here](https://idos.idnes.cz/en/vlakyautobusymhdvse/spojeni/vysledky/?date=04.11.2022&time=06:00&f=V%C3%ADde%C5%88%20leti%C5%A1t%C4%9B;%20Austria&fc=100003&t=Brno%20hl.n.&tc=100003) are some train connections from Vienna airport to Brno main station on Friday 4th.
We recommend you to use private carrier [RegioJet](https://regiojet.com/) which provides bus connection as well.
---
### Brno Public transport
It is safe to use public transport in Brno even in the night. Public transport in Brno and the rest of the South Moravian Region is provided by JMK (the South Moravian Integrated Public Transport System).
Tickets are valid for any form of public transport, so you only need to pay attention to how long you are traveling (tickets are valid for specific amounts of time) and which zones you are travelling through. If youre travelling through the city, a ticket for zones 100 and 101 is probably all youll need.
You can buy tickets from any of the yellow ticket vending machines located at various stops throughout the city, or you can purchase them at information centres, stations, and newsagents. If you have a Czech phone number, you can buy tickets by sending a text message or using a mobile app. You can also pay contactless in the vehicles.
---
### Accomodation
We do not provide or subsidize accomodation. Main venue is 24/7 though, so feel free to enjoy the hackathon in its purest form. If you don't feel like it, we do have following recommended facilities:
#### Budget - Most Unique Hostel in Brno – 10-Z Bunker Hostel.
Address: Husova 12, Brno, Czech Republic
[Book](https://www.booking.com/hotel/cz/10-z-nuclear-fallout-shelter-under-spilberk-castle.cs.html?aid=910275&label=gog235jc-1FCAsoOkIyMTAtei1udWNsZWFyLWZhbGxvdXQtc2hlbHRlci11bmRlci1zcGlsYmVyay1jYXN0bGVICVgDaDqIAQGYAQm4AQfIAQzYAQHoAQH4AQaIAgGoAgO4AsGI6poGwAIB0gIkZWI2ZmY5ZmEtMTEzNi00YWI4LWIxN2ItNDlkY2E3MTAyZWRh2AIF4AIB&sid=456cddd34fabe31e28baf019d5e20a72&all_sr_blocks=177983219_224237506_0_1_0;checkin=2022-11-11;checkout=2022-11-13;dest_id=-542184;dest_type=city;dist=0;group_adults=1;group_children=0;hapos=1;highlighted_blocks=177983219_224237506_0_1_0;hpos=1;matching_block_id=177983219_224237506_0_1_0;no_rooms=1;req_adults=1;req_children=0;room1=A;sb_price_type=total;sr_order=popularity;sr_pri_blocks=177983219_224237506_0_1_0__5000;srepoch=1666876502;srpvid=db945d2a46ee02b1;type=total;ucfs=1&#hotelTmpl)
price: 25eur incl. breakfast
If youre looking for a fairly unique accommodation site which youll surely remember forever, then the 10-Z Bunker Hostel is the way to go. Housed in an actual nuclear shelter from the Cold War era, this hostel is not for the faint-hearted, but can provide a quirky and memorable experience to those up to it.
The dorm rooms are decorated in period style and once you arrive to the accommodation, youll also get a complimentary tour of the place, which is also home to a history museum. Breakfast is free for all guests.
#### Budget & 5mins from the venue - Schrott Bed&Beer (20eur)
Address: Křenová 10, Brno, 602 00, Czech Republic
[Book](https://www.booking.com/hotel/cz/schrott-bed-amp-beer.html?aid=910275&sid=456cddd34fabe31e28baf019d5e20a72&all_sr_blocks=630944704_246076413_1_0_0&checkin=2022-11-11&checkout=2022-11-13&dest_id=-542184&dest_type=city&group_adults=1&group_children=0&hapos=3&highlighted_blocks=630944704_246076413_1_0_0&hpos=3&lang=en-us&matching_block_id=630944704_246076413_1_0_0&no_rooms=1&req_adults=1&req_children=0&room1=A&sb_price_type=total&soz=1&sr_order=price&sr_pri_blocks=630944704_246076413_1_0_0__4000&srepoch=1666876026&srpvid=cc935c34723c0061&type=total&ucfs=1&lang_click=other&cdl=cs&lang_changed=1)
price: 20eur
If youre looking for a clean, cheap accommodation that is very close to the venue, this is the option. As a bonus, it has a unique, steam-punk/retro bar with good selection of beers on site :)
#### Mid-range, 6mins from the venue, suitable for teams - Euro Apartments Krenova
Address: Krenova 75, Brno, 602 00, Czech Republic
[Book](https://www.booking.com/hotel/cz/euro-apartments-krenova-75-brno.html?aid=910275&sid=456cddd34fabe31e28baf019d5e20a72&all_sr_blocks=342399124_360281629_2_0_0&checkin=2022-11-11&checkout=2022-11-13&dest_id=-542184&dest_type=city&dist=0&group_adults=2&group_children=0&hapos=2&highlighted_blocks=342399124_360281629_2_0_0&hpos=2&lang=en-us&matching_block_id=342399124_360281629_2_0_0&no_rooms=1&req_adults=2&req_children=0&room1=A%2CA&sb_price_type=total&soz=1&sr_order=popularity&sr_pri_blocks=342399124_360281629_2_0_0__17850&srepoch=1666877159&srpvid=f7175e72048c0156&type=total&ucfs=1&lang_click=other&cdl=cs&lang_changed=1)
price: 45eur
#### Mid-range-business - Grandhotel Brno
Address: Benesova 18, Brno, 602 00, Czech Republic
[Book](https://www.booking.com/hotel/cz/grandhotelbrno.html?aid=910275&sid=456cddd34fabe31e28baf019d5e20a72&atlas_src=sr_iw_btn&checkin=2022-11-11&checkout=2022-11-13&dest_id=-542184&dest_type=city&dist=0&group_adults=2&group_children=0&highlighted_blocks=7707602_193926392_2_2_0&lang=en-us&no_rooms=1&room1=A%2CA&sb_price_type=total&soz=1&type=total&ucfs=1&lang_click=other&cdl=cs&lang_changed=1)
price: 54eur
Centrally located in the heart of Brno with 140 year-long tradition in hospitality is close to all major sights. It features the Garden Restaurant and a lobby bar. Cozy and stylish rooms, fully equipped with modern amenities including high-speed internet and air-con.
#### Business/Lux - Best Western International Hotel Brno
Address: Husova 16, Brno, 602 00, Czech Republic
[Book](https://www.booking.com/hotel/cz/schrott-bed-amp-beer.html?aid=910275&sid=456cddd34fabe31e28baf019d5e20a72&all_sr_blocks=630944704_246076413_1_0_0&checkin=2022-11-11&checkout=2022-11-13&dest_id=-542184&dest_type=city&group_adults=1&group_children=0&hapos=3&highlighted_blocks=630944704_246076413_1_0_0&hpos=3&lang=en-us&matching_block_id=630944704_246076413_1_0_0&no_rooms=1&req_adults=1&req_children=0&room1=A&sb_price_type=total&soz=1&sr_order=price&sr_pri_blocks=630944704_246076413_1_0_0__4000&srepoch=1666876026&srpvid=cc935c34723c0061&type=total&ucfs=1&lang_click=other&cdl=cs&lang_changed=1)
price: 70eur including excellent breakfast
Centrally located right below Spilberg Castle and 100m from the Main Square. Free access to the fitness centre, stable and strong wifi in the entire hotel.
#### Business/Lux - Grandezza Hotel Luxury Palace
Address: Zeleny trh 314/2, Brno, 602 00, Czech Republic
[Book](https://www.booking.com/hotel/cz/grandezza.html?aid=910275&sid=456cddd34fabe31e28baf019d5e20a72&atlas_src=hp_iw_title&checkin=2022-11-11&checkout=2022-11-13&dist=0&group_adults=2&group_children=0&lang=en-us&no_rooms=1&room1=A%2CA&sb_price_type=total&soz=1&srepoch=1666878418&srpvid=2e79609d94de021d&type=total&lang_click=other&cdl=cs&lang_changed=1)
price: 70eur
Spacious, air-conditioned rooms overlook the town square, the Cathedral of Saints Peter and Spilberk Castle, featuring a flat-screen satellite TV and a seating area. The bathrooms include bathrobes. It is 50 m to the nearest tram stop, and Brno Train Station is 400 m away. Airport shuttle service available.
---
### Map and tips from locals
[Here](https://www.use-it.travel/cities/map/2022_brno/) you can find a map of Brno with no-nonsense usefull tips. Made by local volunteers, non-commercial, free and up-to-date.
---
### Catering<i class='icon coffee'></i>
We will take care of your meals and drinks for the entire Hackathon, conference and coffee breaks. There will be vegetarian options provided. Just come with an open mind, a knowledge-thirsty brain and enthusiasm.
---
### Schedule overview
The full agenda is available on the [Schedule](/schedule/) page.
#### Friday - Nov 11
* **13:00** - Hackathon Registration Opens
* **14:30 - 22:30** - Opening Talks and workshops
* **18:00 - 19:30** - Dinner
* **19:00 - 19:30** - Opening Ceremony
* **19:30 - 20:30** - Ideas Showcase
* **20:30 - 21:30** - Team Formation Workshop
* **23:30** - Midnight Snack
#### Saturday - Nov 12
* **09:00 - 11:00** - Breakfast
* **12:30 - 14:00** - Lunch
* **11:00 - 16:00** - Talks and workshops
* **16:00 - 23:30** - Remote talks and workshop
* **18:00 - 19:30** - Dinner
* **23:30** - Midnight Snack
#### Sunday - Nov 13
* **09:00 - 11:00** - Breakfast
* **11:00** - Project Submission Deadline
* **11:30 - 15:00** - Project Judging
* **12:00 - 16:00** - Closing Talks
* **12:30 - 14:00** - Lunch
* **15:15** - Finalist Teams Notified on Matrix
* **16:00 - 17:00** - Closing Ceremonies & Demos
* **17:00** - The final toast & beer 🍻
* **19:00** - Hackathon ends
* **21:00** - [Afterparty](#afterparty)
---
### Hackathon identity - Soulbound Token (SBT)
Upon on-site registration, each visitor will receive a card with a one-time QR code to mint their unique ETHBrno² Soulbound Token on the Optimism network.
Possession of this token will entitle all visitors to:
- participate in the quadratic voting and help choose the winning projects
- get test ETH on Goerli or Sepolia testnet (up to 200 ETH/person)
---
### Hacking Rules
- Maximum of 5 people per team
- Projects must be related to the "Privacy & Security" topic
- All code for projects must be written during the event
- You cannot steal another teams source code
- Teams may have members joining remotely
- Teams that have members joining remotely must have a member present on the venue for the judging
- The decision of judges is final in terms of determining prizes and awards
- Please respect our [Code of Conduct!](/code-of-conduct/)
---
### Prizes and bounties
ETHBrno is not a regular hackathon. Please study the following section carefully.
#### Open track - quadratic voting
You decide who wins! Every project is eligible, given they are aligned with the hackathon's theme and respecting [the rules](#hacking-rules). There will be no pitches and no judges. The open track will be judged by everyone attending using their [ETHBrno² Soulbound token](#hackathon-identity---soulbound-token-sbt) received upon registration.
- 1st place: **$2000**
- 2nd place: **$1000**
- 2nd place: **$500**
#### Meta Awards
Meta awards reward certain aspects of your project. All projects are eligible.
- **Innovation** - new and interesting applications of technology
- **Best smart-contract** - smart contract code quality and documentation
- **Design** - outstanding user interfaces, graphics and experience
The prize for each award is **$1000**.
#### Sponsor bounties
You can find sponsor bounties in [bounties repository](https://github.com/ethbrno/eb2-sponsor-bounties).
Available sponsor bounties:
- [[#1] MetaMask Snaps Bounty](https://github.com/ethbrno/eb2-sponsor-bounties/issues/1) - extend the functionality of MetaMask ($800)
- [[#2] Swarm Bounty](https://github.com/ethbrno/eb2-sponsor-bounties/issues/2) - Build an awesome (d)app using Swarm ($500)
---
### Finding a Team / Project Idea<i class='icon users'></i>
If youre missing team-mates or ideas for projects weve got you covered. You can start by writing into the **Find-a-team** chat on our [Matrix](https://matrix.to/#/#ethbrno:gwei.cz). Introduce yourself, discuss ideas, see what others are up to… There will also be a **Team-building session**, which will take place after the opening ceremony of Friday night. No need to prepare anything, just turn up. This session will be followed by a short **Brainstorm**, that you can also attend. We will take you and your team through a couple of exercises, which should lead you to at least one solid project idea. Then youll have everything to start your weekend of hacking!
---
### Mentoring<i class='icon book'></i>
Our amazing mentors are here to discuss anything related to your project. Not just code, but also ideas, concepts, design and presentation. They will generally be hanging around a **Mentor Base**, where you can come find them in person. You can also reach them on Matrix, in the **Mentor-help** chat. Its always better to ask for advice sooner rather than later, you will learn and build quicker that way.
---
### Submissions
You have to register and create your project at [ethbrno.devfolio.co](https://ethbrno.devfolio.co/) for submission before Sunday, 11am.
After the registration, your [dashboard](https://devfolio.co/ethbrno/dashboard) will become visible, that is the place where you submit and update your project.
Make sure to provide a link to your open-source repository, a video or a demo, and if applicable, the contract address(es) of your deployed application, either on a testnet of your choice or mainnet of a platform of choice. All submitted projects will be eligible for the main hackathon prize.
Don't miss the deadline! Sunday 11am!
---
### Massages
Enjoy short relaxing massages from a local blind masseuse Pavel with many years of experience with IT specialists.
- Saturday [10:00 - 16:00] in a massage room next to the Chill lounge.
----
### Sound-healing
1hr long sound bath, deep relaxation, healing and self-discovery. The tones of these instruments heal and harmonize our body, mind and spirit. During Sound Healing you may feel physical and mental relaxation, various forms of emotions may appear, you may perceive visions, colours, images, scenes. You may feel a tingling, warmth, or tingling sensation on your body. At the same time you can sleep through the whole concert.
- Saturday [15:00 - 16:00] and [17:00 - 18:00] in the Chill lounge.
---
### Board-games
Need a change of perspective or just take a break from the monitor? Switch to offline play and have fun with a board game.
- Chess, Dominoes, Checkers, Dice, Backgammon, Cards and more available in and around the Chill lounge area
- You will also have table football at your disposal :)
---
### Side-events
List of events taking place before or during the ETHBrno² hackathon:
#### Thursday - Nov 10
- [11:00 - 20:00] [DOTBrno](https://www.eventbrite.com/e/dotbrno-polkadot-conference-in-brno-czech-republic-tickets-428553835057) - Polkadot conference (Industra - Lazaretní 925/9)
#### Sunday - Nov 13
- [10:00 - 18:00] [ETHBrno² Proxy](http://proxy.ethbrno.cz/) - A sub-conference for a local Czech audience (ClubCo/Impact Hub)
- [20:00 - 00:00] [ETHBrno² Afterparty](#afterparty) (Schrott - Křenová 291)
---
### Afterparty
What's next after three days of hacking? A party to squeeze out your last energy over good drinks, music and networking.
The afterparty will take place in the industrial bar [Schrott](https://www.schrott.cz/), located a 5-minute walk from the main venue ([OSM](https://www.openstreetmap.org/node/6617843585), [Google Maps](https://goo.gl/maps/pcehq6wFLwJADppT8)). We will start at 21:00 and end sometime during the night :)
The afterparty will be open to everyone, not just hackers, so feel free to invite your friends!
---
### Nightlife in Brno
Brno has a selection of world-famous unique bars.
Check out Super Panda Circuss, Ctyri pokoje or Bar, ktery neexistuje and let it surprise you. :)
---

1
static/icons/home.svg Normal file
Zobrazit soubor

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-home"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>

Za

Šířka:  |  Výška:  |  Velikost: 324 B

binární
static/ogbrno.png

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 84 KiB

Za

Šířka:  |  Výška:  |  Velikost: 119 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 16 KiB

Za

Šířka:  |  Výška:  |  Velikost: 37 KiB

binární
static/photos/contributors/anett.jpg Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 33 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 80 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 29 KiB

binární
static/photos/contributors/bigq.jpg Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 29 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 140 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 60 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 47 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 53 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 59 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 27 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 52 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 50 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 18 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 41 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 20 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 31 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 48 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 209 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 39 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 96 KiB

binární
static/photos/contributors/luca.jpg Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 20 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 84 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 24 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 42 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 15 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 37 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 171 KiB

Za

Šířka:  |  Výška:  |  Velikost: 110 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 11 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 36 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 32 KiB

binární
static/photos/contributors/silur.jpg Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 86 KiB

binární
static/photos/contributors/six.jpg Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 16 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 38 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 55 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 1.8 KiB

binární
static/photos/sponsors/back/ef.png Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 9.6 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 3.5 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 17 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 7.9 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 1.8 KiB

Za

Šířka:  |  Výška:  |  Velikost: 4.9 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 9.6 KiB

Za

Šířka:  |  Výška:  |  Velikost: 12 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 3.5 KiB

Za

Šířka:  |  Výška:  |  Velikost: 5.9 KiB

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 224 KiB

binární
static/photos/sponsors/metamask.png Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 5.6 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 17 KiB

Za

Šířka:  |  Výška:  |  Velikost: 24 KiB

Binární soubor nebyl zobrazen.

Před

Šířka:  |  Výška:  |  Velikost: 7.9 KiB

Za

Šířka:  |  Výška:  |  Velikost: 9.5 KiB

binární
static/photos/sponsors/worldcoin.png Normal file

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 4.3 KiB

122
static/venues/floorplan.svg Normal file

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Za

Šířka:  |  Výška:  |  Velikost: 32 KiB

binární
static/video.mp4 Normal file

Binární soubor nebyl zobrazen.

Zobrazit soubor

@ -10,10 +10,11 @@ const config = {
pages: 'build',
assets: 'build',
fallback: null,
precompress: false
precompress: true
}),
trailingSlash: 'always',
},
extensions: ['.svelte'],
preprocess: [
preprocess({
postcss: true,

Zobrazit soubor

@ -1,6 +1,34 @@
import { expect, test } from '@playwright/test';
import { expect, test } from "@playwright/test";
test('index page has expected h1', async ({ page }) => {
await page.goto('/');
expect(await page.textContent('h1')).toBe('Welcome to SvelteKit');
test("index page have correct tags", async ({ page }) => {
await page.goto("/");
const tags = page.getByTestId(
"tags"
);
await expect(tags).toContainText("#freedom #anonymity #non-kyc #encryption #selfsovereignty #p2p #opensource #web3");
});
test("can clickthrough to venues and venue link exist", async ({ page }) => {
await page.goto("/");
await page.getByRole("link", { name: "Venues" }).click();
await expect(page).toHaveURL(/.*venues/);
const venue = page.getByRole("link", { name: "Impact Hub Brno" });
await expect(venue).toHaveAttribute("href", "https://www.hubbrno.cz/en/");
});
test("can navigate to contributors and Tree is contributor", async ({ page }) => {
await page.goto("/contributors");
//this should probably test some test entry from json, will fix
const tree = page.getByRole("link", { name: "Tree" });
await expect(tree).toHaveAttribute("href", "https://twitter.com/treecz");
});
test("can navigate to speakers", async ({ page }) => {
await page.goto("/contributors/speakers");
});
test("can clickthrough to team", async ({ page }) => {
await page.goto("/contributors");
await page.getByRole('link', { name: 'Core team' }).click();
await expect(page).toHaveURL(/.*team/);
});