Skip to content
This repository was archived by the owner on Jun 2, 2025. It is now read-only.

Commit 7e66e5c

Browse files
committed
archiving devcon archive
0 parents  commit 7e66e5c

File tree

5,593 files changed

+119966
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

5,593 files changed

+119966
-0
lines changed

.eslintrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"extends": [
3+
"react-app"
4+
]
5+
}

.github/workflows/ci.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Devcon CI
2+
on: [push, pull_request]
3+
4+
jobs:
5+
build:
6+
runs-on: ubuntu-latest
7+
8+
steps:
9+
- uses: actions/checkout@v2
10+
- name: Use Node.js
11+
uses: actions/setup-node@v1
12+
with:
13+
node-version: '12.x'
14+
15+
- name: Create env file
16+
run: |
17+
touch .env
18+
echo DB_CONNECTION_STRING='${{ secrets.DB_CONNECTION_STRING }}' >> .env
19+
echo ELASTIC_ENDPOINT='${{ secrets.ELASTIC_ENDPOINT }}' >> .env
20+
21+
- name: Install dependencies
22+
run: yarn
23+
24+
- name: Run Prettier // Format
25+
run: yarn format
26+
27+
- name: Run Eslint // Lint
28+
run: yarn lint
29+
30+
- name: Run Build
31+
run: yarn build
32+
33+
- name: Serve build to test against
34+
run: yarn serve &
35+
36+
- uses: microsoft/playwright-github-action@v1
37+
38+
- name: Run your tests
39+
run: npm test
40+
41+
- uses: actions/upload-artifact@v2
42+
with:
43+
name: screenshots
44+
path: screenshots

.github/workflows/news.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Fetch and commit news
2+
on:
3+
workflow_dispatch:
4+
5+
jobs:
6+
build:
7+
runs-on: ubuntu-latest
8+
9+
steps:
10+
- uses: actions/checkout@v2
11+
with:
12+
token: ${{secrets.GH_ACCESS_TOKEN}}
13+
14+
- name: Use Node.js
15+
uses: actions/setup-node@v1
16+
with:
17+
node-version: '12.x'
18+
19+
- name: Create env file
20+
run: |
21+
cd tools
22+
touch .env
23+
echo TWITTER_API_KEY=${{ secrets.TWITTER_API_KEY }} >> .env
24+
25+
- name: Fetch news
26+
run: cd tools && yarn && yarn news
27+
28+
- uses: EndBug/add-and-commit@v7
29+
with:
30+
default_author: github_actions
31+
message: 'Fetch news'

.gitignore

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
8+
# testing
9+
coverage
10+
__snapshots__
11+
12+
# Compiled binary addons (http://nodejs.org/api/addons.html)
13+
build
14+
15+
# Netlify functions
16+
/functions
17+
/server
18+
19+
# Dependency directories
20+
node_modules/
21+
jspm_packages/
22+
23+
# Typescript v1 declaration files
24+
typings/
25+
26+
# Optional npm cache directory
27+
.npm
28+
29+
# dotenv environment variable files
30+
.env*
31+
32+
# gatsby files
33+
.cache/
34+
public
35+
.next/
36+
37+
# Mac files
38+
.DS_Store
39+
40+
# Yarn
41+
yarn-error.log
42+
.pnp/
43+
.pnp.js
44+
# Yarn Integrity file
45+
.yarn-integrity
46+
47+
screenshots/
48+
49+
.sentryclirc
50+
51+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
52+
53+
# dependencies
54+
**node_modules
55+
/.pnp
56+
.pnp.js
57+
58+
# testing
59+
/coverage
60+
61+
# next.js
62+
/.next/
63+
/out/
64+
/.cache/
65+
66+
# production
67+
/build
68+
69+
# misc
70+
.DS_Store
71+
*.pem
72+
73+
# debug
74+
npm-debug.log*
75+
yarn-debug.log*
76+
yarn-error.log*
77+
78+
# local env files
79+
.env
80+
.env.local
81+
.env.development
82+
.env.development.local
83+
.env.test.local
84+
.env.production.local
85+
86+
# vercel
87+
.vercel
88+
89+
# typescript
90+
*.tsbuildinfo
91+
92+
# next-pwa
93+
**/public/precache.*.*.js
94+
**/public/sw.js
95+
**/public/workbox-*.js
96+
**/public/worker-*.js
97+
**/public/fallback-*.js
98+
**/public/precache.*.*.js.map
99+
**/public/sw.js.map
100+
**/public/workbox-*.js.map
101+
**/public/worker-*.js.map
102+
**/public/fallback-*.js
103+
**/public/fallback-development.js
104+
105+
# Sentry
106+
.sentryclirc
107+
108+
109+
**/credentials/*.json
110+
**/data/

.prettierignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.cache
2+
package.json
3+
package-lock.json
4+
public

.prettierrc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"arrowParens": "avoid",
3+
"semi": false,
4+
"singleQuote": true,
5+
"printWidth": 120
6+
}

LICENSE

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
The MIT License (MIT)
2+
3+
Copyright (c) 2015 gatsbyjs
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
22+

README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Devcon Website 🛣️
2+
3+
Devcon.org will be the primary online resource for anything related to Devcon. The annual conference for all Ethereum developers, researchers, thinkers, and makers.
4+
5+
# Archive
6+
7+
Devcon’s impact goes beyond just the physical event, and with that in mind, we’ve completely revamped the Devcon Archive. Changes include an improved UX, better discoverability of content, reduced reliance on YouTube, more decentralized content via IPFS, and community involvement in curation.
8+
9+
Through all of this, we hope Devcon can continue to be an unparalleled educational resource to learn about the past, present, and future of the ecosystem.
10+
11+
## Speaker profiles
12+
13+
If you are a speaker featured on the Devcon archive and would like to help improve the content description (or wish to edit your speaker biography) please find or add your profile to our [profiles folders](./src/content/profiles). Please include all relevant fields and use any existing profile as an example to submit a PR.
14+
15+
## Pinning
16+
17+
To help make accessibility to the content more censorship resistant and decentralized, we hope to see a lot more of the Devcon content pinned by the users utilizing the Archive. To ensure that content persists on IPFS, and is not deleted during garbage collection (process to remove stale content), data can be pinned to one or more IPFS nodes. Pinning gives you control over disk space and data retention. Users can use that control to pin any content you wish to help keep on IPFS indefinitely.
18+
19+
## Community curated playlists
20+
21+
Community participants should be provided an equal opportunity to help curate the content on the Devcon Archive. We are encouraging all interested parties to submit curated playlists that provide insight into a core subject area or craft a historical narrative that can be easily discerned by newcomers or individuals looking to dig deeper into a specific topic.
22+
23+
Here are some examples of curated playlists: [The Emergence of Smart Contract Languages](./src/content/archive/playlists/smart-contract-languages.md), [Execution Layer](./src/content/archive/playlists/execution-layer.md). You can craft your own playlists and submit a PR. If your playlist is chosen, you will be granted a unique POAP as a part of the Road to Devcon Quests.
24+
25+
Please include all relevant fields and use any existing playlist as an example to submit a PR.
26+
27+
# Development
28+
## 🚀 Quick start
29+
30+
- `yarn start` starts the site in development mode.
31+
32+
Default url at [http://localhost:8000](http://localhost:8000)!
33+
34+
\_Note: You'll also see a second link: [http://localhost:8000/\_\_\_graphql](http://localhost:8000/___graphql). This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.com/tutorial/part-five/#introducing-graphiql).\_
35+
36+
- `yarn test` launches the test runner in the interactive watch mode.
37+
- `yarn format` formats the code using prettier.
38+
- `yarn build` builds the app for production to the build folder.
39+
40+
## 🎓 Learning Gatsby
41+
42+
Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.com/). Here are some places to start:
43+
44+
- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.com/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process.
45+
46+
- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.com/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar.

browserstack/api.js

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
/*
2+
Browserstack has proven too unreliable to include in the CI pipeline, but running the script manually can still be valuable
3+
*/
4+
const browserstack = require('browserstack-local')
5+
const webdriver = require('selenium-webdriver')
6+
const build = Date.now().toString()
7+
8+
const capabilities = [
9+
{
10+
device: 'Samsung Galaxy S20',
11+
browserName: 'Android',
12+
os_version: '11.0',
13+
real_mobile: 'true',
14+
build,
15+
name: 'Samsung Galaxy S20/Android',
16+
},
17+
{
18+
device: 'Google Pixel 5',
19+
browserName: 'Android',
20+
os_version: '11.0',
21+
real_mobile: 'true',
22+
build,
23+
name: 'Google Pixel/Android',
24+
},
25+
{
26+
browserName: 'firefox',
27+
browser_version: 'latest-beta',
28+
os: 'Windows',
29+
os_version: '10',
30+
build,
31+
name: 'Windows/Firefox:latest',
32+
},
33+
{
34+
device: 'iPhone 12 Pro',
35+
browserName: 'iPhone',
36+
os_version: '14',
37+
proxy: true,
38+
real_mobile: 'true',
39+
build,
40+
name: 'IPhone 12/Safari',
41+
},
42+
{
43+
browserName: 'Safari',
44+
browser_version: 'latest',
45+
os: 'OS X',
46+
os_version: 'Big Sur',
47+
build,
48+
name: 'Big Sur/Safari',
49+
},
50+
]
51+
52+
const runTest = async (runner, capabilities) => {
53+
const driver = await new webdriver.Builder()
54+
.usingServer('http://lassejacobsen2:[email protected]/wd/hub')
55+
.withCapabilities({
56+
...capabilities,
57+
name: runner.testName,
58+
'browserstack.local': true,
59+
'browserstack.localIdentifier': 'random',
60+
})
61+
.build()
62+
63+
try {
64+
await runner(driver)
65+
66+
await driver.executeScript(
67+
'browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"passed","reason": "Test passed"}}'
68+
)
69+
} catch (e) {
70+
console.error(e, 'test error')
71+
await driver.executeScript(
72+
'browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed","reason": "Test failed"}}'
73+
)
74+
} finally {
75+
await driver.quit()
76+
}
77+
}
78+
79+
async function runTests(tests) {
80+
const browserstackLocal = new browserstack.Local()
81+
82+
await browserstackLocal.start(
83+
{
84+
key: 'mBqtLq8ffDpp1UFA5679',
85+
localIdentifier: 'random',
86+
},
87+
async () => {
88+
console.log('BS local started')
89+
90+
try {
91+
await Promise.allSettled(
92+
tests.map(async runner => {
93+
await Promise.allSettled(
94+
capabilities.map(async capability => {
95+
await runTest(runner, capability)
96+
})
97+
)
98+
})
99+
)
100+
} catch (e) {
101+
console.error(e, 'Test aborted due to errors')
102+
}
103+
104+
await browserstackLocal.stop(() => console.log('BS local stopped'))
105+
}
106+
)
107+
}
108+
109+
module.exports = runTests

browserstack/run.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const runTests = require('./api.js')
2+
const archive = require('./tests/archive/index')
3+
const archiveWatch = require('./tests/archive/watch')
4+
5+
runTests([archive, archiveWatch])

0 commit comments

Comments
 (0)