├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .git-blame-ignore-revs ├── .github └── ISSUE_TEMPLATE │ ├── -other-issue-template.md │ ├── content-bug-report.md │ ├── curriculum-request.md │ └── learning-platform-feature-request.md ├── .gitignore ├── .gitmodules ├── .markdownlint-cli2.jsonc ├── .stylelintignore ├── .stylelintrc.json ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── STYLE-GUIDE.md ├── SUMMARY.md ├── assets ├── js │ ├── app.js │ ├── highlight.js │ ├── index.js │ └── react │ │ ├── components │ │ ├── App.jsx │ │ └── curriculum │ │ │ ├── page │ │ │ ├── Goal.css │ │ │ ├── Goal.jsx │ │ │ └── PageNavigation.jsx │ │ │ └── tutorial │ │ │ ├── Tutorial.css │ │ │ ├── Tutorial.jsx │ │ │ ├── TutorialTrigger.jsx │ │ │ └── TutorialTriggerButton.jsx │ │ └── services │ │ ├── hooks.js │ │ └── util.js └── scss │ ├── app.scss │ └── common │ └── _custom.scss ├── babel.config.js ├── config ├── _default │ ├── config.toml │ ├── goals.json │ ├── languages.toml │ ├── markup.toml │ ├── menus │ │ ├── menus.en.toml │ │ └── menus.nl.toml │ └── params.toml ├── next │ └── config.toml ├── postcss.config.js └── production │ └── config.toml ├── content └── en │ ├── _index.md │ ├── about │ └── index.md │ ├── curriculum │ ├── _index.md │ ├── dev-tools │ │ ├── bacalhau │ │ │ ├── bacalhau-architecture.png │ │ │ ├── bacalhau-overview.png │ │ │ └── index.md │ │ ├── ceramic │ │ │ └── index.md │ │ ├── chainsafe │ │ │ └── forest.md │ │ ├── fleek │ │ │ ├── daemon.png │ │ │ ├── hosting.png │ │ │ └── index.md │ │ ├── network-indexer │ │ │ ├── cid-contact2.png │ │ │ ├── index.md │ │ │ ├── indexcid.png │ │ │ ├── ipfspeerid.png │ │ │ ├── ipni-commands.png │ │ │ └── ipni-index.png │ │ ├── objectives │ │ │ └── index.md │ │ ├── pinata │ │ │ └── index.md │ │ ├── polywrap │ │ │ ├── 03.png │ │ │ ├── 04.png │ │ │ └── index.md │ │ ├── spice.md │ │ ├── textile │ │ │ ├── index.md │ │ │ └── powergate.png │ │ └── web3-storage │ │ │ ├── index.md │ │ │ └── w3s.png │ ├── filecoin │ │ ├── cryptoeconomics │ │ │ ├── flow.png │ │ │ └── index.md │ │ ├── drand.md │ │ ├── how-filecoin-works │ │ │ ├── anatomy.png │ │ │ ├── index.md │ │ │ └── notary.png │ │ ├── introduction │ │ │ ├── data-storage.png │ │ │ ├── index.md │ │ │ └── intro.png │ │ ├── objectives.md │ │ ├── past-recorded-sessions.md │ │ ├── protocol │ │ │ ├── chain-components.png │ │ │ └── index.md │ │ ├── resources.md │ │ └── where-we-are-headed.md │ ├── getting-started │ │ ├── github-guide │ │ │ ├── fork-1.png │ │ │ ├── fork-10.png │ │ │ ├── fork-11.png │ │ │ ├── fork-12.png │ │ │ ├── fork-13.png │ │ │ ├── fork-13a.png │ │ │ ├── fork-14.png │ │ │ ├── fork-15.png │ │ │ ├── fork-2a.png │ │ │ ├── fork-3.png │ │ │ ├── fork-3a.png │ │ │ ├── fork-4.png │ │ │ ├── fork-6.png │ │ │ ├── fork-7a.png │ │ │ ├── fork-8.png │ │ │ ├── fork-8a.png │ │ │ ├── fork-9.png │ │ │ ├── forkfile-1.png │ │ │ ├── forkfile-2.png │ │ │ ├── forkfile-4.png │ │ │ ├── index.md │ │ │ ├── issue-1.png │ │ │ ├── issue-2.png │ │ │ ├── issue-3.png │ │ │ ├── issue-4.png │ │ │ └── issue-5.png │ │ ├── levels.png │ │ ├── objectives.md │ │ ├── os-contributing.md │ │ └── os-stewardship.md │ ├── ipfs │ │ ├── additional-learning.md │ │ ├── content-addressing │ │ │ ├── index.md │ │ │ ├── location-vs-content.png │ │ │ ├── location-vs-content2.png │ │ │ └── pinning.png │ │ ├── data-exchange │ │ │ ├── file-dag.png │ │ │ ├── graphsync-selector.png │ │ │ ├── index.md │ │ │ ├── ledger.png │ │ │ ├── want-block-flow.png │ │ │ └── want-have-flow.png │ │ ├── introduction │ │ │ ├── IPFS_dist_cent.png │ │ │ └── index.md │ │ ├── ipfs-resources │ │ │ ├── ecosystem.png │ │ │ └── index.md │ │ ├── mutable-content │ │ │ ├── index.md │ │ │ └── pinning.png │ │ ├── objectives │ │ │ ├── index.md │ │ │ └── ipfs-logo.png │ │ ├── past-recorded-sessions.md │ │ ├── subsystems-architecture │ │ │ ├── go-ipfs-subsystems.png │ │ │ ├── index.md │ │ │ ├── meme-Unixfs-cid.png │ │ │ └── root-cid.png │ │ ├── unixfs │ │ │ ├── blocks-detailed.png │ │ │ ├── blocks.png │ │ │ ├── file-structure.png │ │ │ └── index.md │ │ └── who-uses-ipfs │ │ │ └── index.md │ ├── ipld │ │ ├── content-addressing-cids │ │ │ ├── cid-anatomy.png │ │ │ ├── cids.png │ │ │ └── index.md │ │ ├── data-model-and-codecs.md │ │ ├── distributed-data-structures.md │ │ ├── introduction │ │ │ ├── index.md │ │ │ └── tree_graph.png │ │ ├── ipld-and-ipfs │ │ │ ├── index.md │ │ │ └── unixfs_addon.png │ │ ├── ipld-resources.md │ │ ├── merkle-dags │ │ │ ├── index.md │ │ │ ├── mutability.png │ │ │ ├── overview.png │ │ │ └── treevstree.png │ │ ├── objectives │ │ │ ├── index.md │ │ │ └── ipld-summary.png │ │ ├── past-recorded-sessions.md │ │ ├── schemas.md │ │ └── the-car-format │ │ │ ├── index.md │ │ │ ├── intro.png │ │ │ └── summary.png │ ├── libp2p │ │ ├── connections │ │ │ ├── index.md │ │ │ ├── peer-id.png │ │ │ └── streams.png │ │ ├── core-concepts │ │ │ ├── index.md │ │ │ ├── nat.png │ │ │ └── peering.png │ │ ├── dht │ │ │ ├── index.md │ │ │ ├── libp2p-dht-distances.png │ │ │ ├── libp2p-dht-findnode.png │ │ │ ├── libp2p-dht-flow.png │ │ │ └── libp2p-dht-store.png │ │ ├── introduction.md │ │ ├── libp2p-resources.md │ │ ├── nat-traversal │ │ │ ├── circuit-relay.png │ │ │ ├── index.md │ │ │ └── nat.png │ │ ├── objectives │ │ │ ├── index.md │ │ │ └── overview.png │ │ ├── past-recorded-sessions.md │ │ └── pubsub │ │ │ ├── floodsub.png │ │ │ └── index.md │ ├── pln │ │ ├── objectives │ │ │ ├── PLN_Logo.png │ │ │ └── index.md │ │ ├── pl-culture.md │ │ ├── pln-resources.md │ │ ├── teams-in-pl │ │ │ ├── companies.png │ │ │ ├── ecosystem.png │ │ │ ├── engres-2022.png │ │ │ ├── index.md │ │ │ ├── pln-page.png │ │ │ └── projects.png │ │ ├── what-is-pl │ │ │ ├── index.md │ │ │ ├── network.png │ │ │ ├── research-pipeline.png │ │ │ └── web3-stack.png │ │ └── where-we-headed │ │ │ ├── filecoin_logos.png │ │ │ ├── index.md │ │ │ └── pl_projects.png │ └── web3 │ │ ├── blockchains │ │ ├── blockchain1.png │ │ ├── blockchain2.png │ │ └── index.md │ │ ├── cryptography │ │ └── index.md │ │ ├── objectives │ │ ├── index.md │ │ ├── web1.png │ │ ├── web2-li.png │ │ └── web3.jpeg │ │ ├── scaling │ │ ├── avalanche.png │ │ ├── cosmos.png │ │ ├── filecoin.png │ │ ├── flow.png │ │ ├── index.md │ │ ├── near.png │ │ ├── polkadot-anatomy.png │ │ ├── polkadot.png │ │ └── solana.png │ │ ├── smart-contracts │ │ ├── beeple.png │ │ ├── blur.png │ │ ├── bored-ape.png │ │ ├── crypto-kitties.png │ │ ├── crypto-punks.png │ │ ├── dapp-visualization.png │ │ ├── defi.png │ │ ├── index.md │ │ ├── loot.png │ │ ├── nba-top-shots.png │ │ ├── nft-history.png │ │ └── opensea.png │ │ ├── storage │ │ ├── arweave.png │ │ ├── filecoin.png │ │ ├── index.md │ │ └── storj.png │ │ └── wallets │ │ ├── index.md │ │ ├── wallet-landscape.png │ │ └── wallet-types.png │ └── tutorials │ ├── fvm │ ├── deploying-first-contract │ │ ├── faucet-click-send.png │ │ ├── faucet-metamask-with-funds.png │ │ ├── faucet-select-account-in-metamask.png │ │ ├── faucet-transaction-link.png │ │ ├── index.md │ │ ├── metamask-assets-import-tokens.png │ │ ├── metamask-default-wallet.png │ │ ├── metamask-import-token.png │ │ ├── metamask-import-tokens-autofil.png │ │ ├── metamask-tokens-finished.png │ │ ├── remix-5000-tfil.png │ │ ├── remix-add-address.png │ │ ├── remix-add-number.png │ │ ├── remix-click-deploy.png │ │ ├── remix-click-transact.png │ │ ├── remix-copy-deploy-address.png │ │ ├── remix-create-workspace.png │ │ ├── remix-default-workspace.png │ │ ├── remix-deploy-button.png │ │ ├── remix-deployed-contracts-dropdown.png │ │ ├── remix-edit-contract.png │ │ ├── remix-expand-mint-method.png │ │ ├── remix-imported-contracts.png │ │ ├── remix-mint-pending.png │ │ ├── remix-new-workspace.png │ │ ├── remix-select-contract.png │ │ ├── remix-select-network-dropdown.png │ │ └── remix-transaction-pending.png │ └── what-is-fvm.md │ ├── gitpod.md │ ├── ipfs-intro │ ├── basics │ │ ├── index.md │ │ └── ipfs-webui.png │ ├── desktop-tutorial │ │ ├── dekstop3.png │ │ ├── desktop1.png │ │ ├── desktop10.png │ │ ├── desktop2.png │ │ ├── desktop4.png │ │ ├── desktop5.png │ │ ├── desktop6.png │ │ ├── desktop7.png │ │ ├── desktop8.png │ │ ├── desktop9.png │ │ └── index.md │ ├── ipfs-api.md │ └── setup.md │ ├── ipld │ └── ipld-pathing │ │ ├── data-links.png │ │ ├── docs-codecs-known.png │ │ ├── index-hash.png │ │ ├── index.md │ │ ├── ipfs-ipld-pathing2.png │ │ ├── ipld-repo.png │ │ └── link4.png │ ├── libp2p │ ├── creating-simple-node │ │ ├── diagram.png │ │ └── index.md │ └── handlers-tutorial.md │ └── metamask-intro │ ├── create-wallet │ ├── index.md │ ├── metamask-create-new-wallet.png │ └── metamask-get-started.png │ ├── switch-networks │ ├── chainlist-allow-site-to-add-a-network.png │ ├── chainlist-complete.png │ ├── chainlist-connect-with-metamask.png │ ├── chainlist-filecoin-wallaby.png │ ├── chainlist-select-test-networks.png │ ├── chainlist-switch-network.png │ └── index.md │ └── what-is-metamask │ ├── index.md │ └── metamask-homepage.png ├── cspell.json ├── data └── docs-versions.yml ├── ethguides ├── IPFS-logo.png ├── intro-ipfs-filecoin.md └── template.md ├── functions └── hi-from-lambda.js ├── i18n ├── en.toml └── nl.toml ├── layouts ├── curriculum │ ├── list.html │ └── single.html ├── index.html ├── partials │ ├── footer │ │ ├── footer.html │ │ └── script-footer.html │ ├── head │ │ ├── favicons.html │ │ └── head.html │ ├── header │ │ └── header.html │ ├── icons │ │ └── tutorials-category-icon.html │ ├── main │ │ ├── curriculum-page.html │ │ └── docs-navigation.html │ └── sidebar │ │ ├── curriculum-menu.html │ │ ├── prereq-menu.html │ │ ├── resources-menu.html │ │ ├── tutorials-menu.html │ │ └── unified-menu.html ├── prerequisites │ └── single.html ├── resources │ ├── about │ │ ├── list.html │ │ └── single.html │ └── single.html ├── shortcodes │ ├── aboutpage.html │ ├── beforepages-element.html │ ├── beforepages.html │ ├── embed.html │ ├── instructions.html │ ├── level.html │ └── prerequisites.html └── tutorials │ ├── list.html │ └── single.html ├── netlify.toml ├── package-lock.json ├── package.json ├── static ├── css │ ├── bootstrap.min.css │ ├── styles.min.css │ ├── tailwind-input.css │ └── tailwind-output.css ├── icons │ ├── arrow-down.png │ ├── arrow-right.png │ ├── bulb.png │ ├── devtools.png │ ├── goal.png │ ├── hello.png │ ├── lecture.png │ ├── prereq.png │ ├── resource.png │ ├── sf.png │ ├── shuttle.png │ ├── tutorial-book.png │ └── tutorial.png ├── images │ ├── Karla-under-4-LPW_qldyrv.jpg │ ├── ally.jpeg │ ├── diego.jpeg │ ├── joao.jpeg │ ├── lp-center-planet.jpg │ └── slide_wave.jpg ├── ipfs-404.html ├── js │ ├── ScrollTrigger.min.js │ ├── anim-1.js │ ├── anim-2.js │ ├── gsap.min.js │ ├── nav.js │ ├── split-type.js │ └── text-intro.js ├── logos │ ├── blockchain.png │ ├── filecoin.png │ ├── fvm.png │ ├── ipfs.svg │ ├── ipld.png │ ├── launchpad.png │ ├── libp2p.png │ ├── lp-logo.png │ ├── lp-primary-color.png │ ├── lp-primary-white.png │ ├── metamask.png │ └── pl.png └── tutorials │ ├── fvm.png │ ├── intro-ipfs.png │ ├── ipld.svg │ ├── libp2p.png │ └── metamask.jpeg ├── tailwind.config.js ├── templates ├── README.md ├── dev-tool-temp.md ├── tutorial-identifier.png ├── tutorial-temp.md ├── tutorials-modules.png └── weight-example.png └── theme.toml /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | assets/js/index.js 2 | assets/js/katex.js 3 | assets/js/vendor 4 | node_modules -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es6": true, 6 | "node": true 7 | }, 8 | "extends": "eslint:recommended", 9 | "globals": { 10 | "Atomics": "readonly", 11 | "SharedArrayBuffer": "readonly" 12 | }, 13 | "parserOptions": { 14 | "ecmaVersion": 2018, 15 | "sourceType": "module" 16 | }, 17 | "rules": { 18 | "no-console": 0, 19 | "quotes": ["error", "single"], 20 | "comma-dangle": [ 21 | "error", 22 | { 23 | "arrays": "always-multiline", 24 | "objects": "always-multiline", 25 | "imports": "always-multiline", 26 | "exports": "always-multiline", 27 | "functions": "ignore" 28 | } 29 | ] 30 | } 31 | } -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/.git-blame-ignore-revs -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/-other-issue-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "*Other issue template" 3 | about: 'This is for issues that are not related to ' 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the use case** 11 | 12 | 13 | **Describe the problem** 14 | 15 | 16 | **Proposed Solution** 17 | 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/content-bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Content Bug report 3 | about: Help us Improve Launchpad Curriculum 4 | title: '' 5 | labels: '' 6 | assignees: walkerlj0 7 | 8 | --- 9 | 10 | **What section and page of the Curriculum is this on** 11 | _ex:_ _IPFS: The IPFS Gateways_ 12 | 13 | **Describe the bug** 14 | _ex_ A clear and concise description of what the problem is. Is it a type, bad grammar, something that is incorrect or doesn't make sense? Is it missing media? Is it outdate content? Do you have an idea of a better way to do something? 15 | 16 | _If it is additional content or a large change, create a curriculum feature request_ 17 | 18 | **If applicable, add screenshots to help explain your problem** 19 | 20 | **Additional context** 21 | Add any other context about the problem here. 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/curriculum-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Curriculum Request 3 | about: 'Suggest an idea for the Launchpad Curriculum ' 4 | title: Major Curriculum Change or Addition - Topic 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Problem Description 11 | 12 | ### Purpose 13 | _Describe what need this projectr is filling, or what problem is sovling, and who the intended audience or end user is_ 14 | 15 | ### Proposed Solution 16 | What features, user stories, or product/ content you would like as an output 17 | 18 | **Where Can we find out more about this topic?** 19 | 20 | 21 | **Additional context** 22 | Add any other context or screenshots about the feature request here. 23 | 24 | ## Milestones (Optional) 25 | **1) Milstone Name** Text 26 | 27 | **2) Milstone Name** Text 28 | 29 | 30 | ## Acceptance Criteria 31 | _Describe the out put and criteria for this output for considering this task completed_ 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/learning-platform-feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Learning Platform Feature Request 3 | about: Features and Functionality for the Learning Platform 4 | title: 'Platform Feature – ' 5 | labels: platform-feature 6 | assignees: '' 7 | 8 | --- 9 | 10 | **User Story** 11 | As a ---- I would like to be able to ---- so that ---- 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **MVP Functionality** (Describe the minimum functionality for putting in production) 17 | 18 | **Other Specifications** 19 | A clear and concise description of any alternative solutions or features you've considered. 20 | 21 | **Additional context** 22 | Add any other context or screenshots about the feature request here. 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # HUGO # 2 | ######## 3 | node_modules 4 | public 5 | /resources 6 | .netlify 7 | .hugo_build.lock 8 | 9 | # OS GENERATED FILES # 10 | ###################### 11 | .DS_Store 12 | .DS_Store? 13 | ._* 14 | .Spotlight-V100 15 | .Trashes 16 | ehthumbs.db 17 | Thumbs.db 18 | 19 | 20 | # JetBrains # 21 | ############### 22 | /.idea/ 23 | 24 | themes 25 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "themes/hugo-debugprint"] 2 | path = themes/hugo-debugprint 3 | url = https://github.com/kaushalmodi/hugo-debugprint.git 4 | -------------------------------------------------------------------------------- /.markdownlint-cli2.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "default": true, 4 | "MD013": false, 5 | "MD024": false, 6 | "MD026": false, 7 | "MD033": false, 8 | "MD034": false 9 | }, 10 | "ignores": ["node_modules", "CHANGELOG.md", "README.md"] 11 | } -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | assets/scss/components/_syntax.scss 2 | assets/scss/vendor 3 | node_modules -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard-scss", 3 | "rules": { 4 | "no-empty-source": null, 5 | "string-quotes": "double", 6 | "scss/comment-no-empty": null, 7 | "max-line-length": null, 8 | "scss/at-extend-no-missing-placeholder": null, 9 | "scss/dollar-variable-colon-space-after": null, 10 | "scss/dollar-variable-empty-line-before": null, 11 | "color-function-notation": null, 12 | "alpha-value-notation": null, 13 | "selector-id-pattern": null, 14 | "selector-class-pattern": null, 15 | "scss/no-global-function-names": null, 16 | "number-max-precision": null, 17 | "hue-degree-notation": null, 18 | "value-no-vendor-prefix": null, 19 | "property-no-vendor-prefix": null, 20 | "at-rule-no-unknown": [ 21 | true, 22 | { 23 | "ignoreAtRules": [ 24 | "extend", 25 | "at-root", 26 | "debug", 27 | "warn", 28 | "error", 29 | "if", 30 | "else", 31 | "for", 32 | "each", 33 | "while", 34 | "mixin", 35 | "include", 36 | "content", 37 | "return", 38 | "function", 39 | "tailwind", 40 | "apply", 41 | "responsive", 42 | "variants", 43 | "screen" 44 | ] 45 | } 46 | ] 47 | } 48 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "files.associations": { 4 | "*.css": "tailwindcss" 5 | }, 6 | "css.lint.propertyIgnoredDueToDisplay": "ignore" 7 | } -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | We appreciate feedback and updates to the Launchpad curriculum! You have two options for making changes: 2 | 1. [Submit an Issue](https://github.com/protocol/launchpad/issues) on Github 3 | 2. Create a [Fork and make a Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) 4 | 5 | In order to contribute, you should take first take a look at the **[Style Guide](https://github.com/protocol/launchpad/blob/main/STYLE-GUIDE.md)** to understand the formatting and conventions that we use in the curriculum. 6 | 7 | If you are forking and making a PR, you can create a new branch from the 'main' [repository](https://github.com/protocol/launchpad/tree/main), then create a pull request, and ping the team (Lindsay, Marco, or Enol) in the #launchpad-community channel in Filecoin Slack. 8 | 9 | [Join Filecoin slack with this link](https://filecoin.io/slack) and search for the public channel `#launchpad-community` 10 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Table of contents 2 | 3 | * [README](README.md) 4 | * [About Launchpad](docs/about-launchpad.md) 5 | 6 | ## Launchpad Learning Resources 7 | 8 | * [The Protocol Labs Network](docs/protocol-labs-network/README.md) 9 | * [What is the PL Network?](docs/protocol-labs-network/what-is-pl.md) 10 | * [Teams in the PL Network](docs/protocol-labs-network/teams-in-pl.md) 11 | * [Protocol Labs Culture](docs/protocol-labs-network/pl-culture.md) 12 | * [Where We are Headed](docs/protocol-labs-network/where-we-headed.md) 13 | * [Open Source Stewardship](docs/protocol-labs-network/os-stewardship.md) 14 | * [Open Source Contribution](docs/protocol-labs-network/os-contributing.md) 15 | * [IPFS](docs/ipfs/README.md) 16 | * [IPFS Setup (Tutorial)](docs/ipfs/setup.md) 17 | * [Mutable Content](docs/ipfs/mutable-content.md) 18 | * [IPFS Public DHT](docs/ipfs/ipfs-public-dht.md) 19 | * [Who Uses IPFS](docs/ipfs/who-uses-ipfs.md) 20 | * [How IPFS Works](docs/ipfs/how-ipfs-works.md) 21 | * [Data Transfer](docs/ipfs/data-transfer.md) 22 | * [IPFS Subsystems & Architecture](docs/ipfs/subsystems-architecture.md) 23 | * [The IPFS Gateways](docs/ipfs/ipfs-gateways.md) 24 | * [The IPFS API (Tutorial)](docs/ipfs/ipfs-api.md) 25 | * [IPFS Resources](docs/ipfs/ipfs-resources.md) 26 | * [IPLD](docs/ipld/README.md) 27 | * [Content Addressing & CIDs](docs/ipld/content-addressing-and-cids.md) 28 | * [Graphs: Merkle DAGs](docs/ipld/graphs-merkle-dags.md) 29 | * [The IPLD Data Model](docs/ipld/the-ipld-data-model.md) 30 | * [IPLD & IPFS](docs/ipld/ipld-and-ipfs.md) 31 | * [Codecs](docs/ipld/codecs.md) 32 | * [IPLD Schemas](docs/ipld/ipld-schemas.md) 33 | * [Paths & Selectors](docs/ipld/paths-and-selectors.md) 34 | * [Distributed Data Structures](docs/ipld/distributed-data-structures.md) 35 | * [The CAR Format](docs/ipld/the-car-format.md) 36 | * [IPLD Resources](docs/ipld/ipld-resources.md) 37 | * [libp2p](docs/libp2p/README.md) 38 | * [Core Concepts](docs/libp2p/core-concepts.md) 39 | * [libp2p Connections and Users](docs/libp2p/libp2p-connections-users.md) 40 | * [Decentralized Messaging](docs/libp2p/decentralized-messaging.md) 41 | * [Gossipsub](docs/libp2p/gossipsub.md) 42 | * [Distributed Networking Solutions](docs/libp2p/distributed-networking-solutions.md) 43 | * [Nat Traversal and Hole Punching](docs/libp2p/nat-traversal-hole-punching.md) 44 | * [libp2p Resources](docs/libp2p/libp2p-resources.md) 45 | * [Filecoin](docs/filecoin/README.md) 46 | * [How Filecoin Works](docs/filecoin/how-filecoin-works.md) 47 | * [Filecoin Cryptoeconomics](docs/filecoin/filecoin-cryptoeconomics.md) 48 | * [The Filecoin Protocol](docs/filecoin/sealing-proving.md) 49 | * [Drand](docs/filecoin/drand.md) 50 | * [Progress & Future Work](docs/filecoin/where-we-are-headed.md) 51 | * [Filecoin Resources](docs/filecoin/filecoin-resources.md) 52 | 53 | ## Other Resources 54 | 55 | * [Pre-Requisites](docs/pre-requisites/README.md) 56 | * [Web3 & Protocol Labs](docs/pre-requisites/web3-ipfs.md) 57 | * [Building Web3](docs/pre-requisites/building-web3.md) 58 | * [Web3 Tools](docs/pre-requisites/web3-tools.md) 59 | * [Protocol Labs Toolkits & SDKs](docs/protocol-labs-toolkits-sdks/README.md) 60 | * [Textile](docs/protocol-labs-toolkits-sdks/textile.md) 61 | * [Ceramic](docs/protocol-labs-toolkits-sdks/ceramic.md) 62 | * [Fleek](docs/protocol-labs-toolkits-sdks/fleek-space-daemon.md) 63 | * [Web3.Storage](docs/protocol-labs-toolkits-sdks/web3-storage.md) 64 | * [Piñata](docs/protocol-labs-toolkits-sdks/pinata.md) 65 | * [Built On IPFS and Filecoin](docs/built-on-ipfs-filecoin/README.md) 66 | * [Additional Learning](docs/additional-learning-resources/README.md) 67 | -------------------------------------------------------------------------------- /assets/js/app.js: -------------------------------------------------------------------------------- 1 | /** Custom scripts */ 2 | function hideContentByLevel() { 3 | for(const element of document.querySelectorAll('[data-content-level]')) { 4 | const level = element.getAttribute('data-content-level') 5 | const userLevel = getContentLevel() 6 | 7 | if (userLevel && !level.includes(userLevel)) { 8 | element.style.display = "none"; 9 | } 10 | } 11 | } 12 | 13 | hideContentByLevel() 14 | -------------------------------------------------------------------------------- /assets/js/highlight.js: -------------------------------------------------------------------------------- 1 | import hljs from 'highlight.js/lib/core'; 2 | 3 | import javascript from 'highlight.js/lib/languages/javascript'; 4 | import json from 'highlight.js/lib/languages/json'; 5 | import bash from 'highlight.js/lib/languages/bash'; 6 | import xml from 'highlight.js/lib/languages/xml'; 7 | import ini from 'highlight.js/lib/languages/ini'; 8 | import yaml from 'highlight.js/lib/languages/yaml'; 9 | import markdown from 'highlight.js/lib/languages/markdown'; 10 | import python from 'highlight.js/lib/languages/python'; 11 | import go from 'highlight.js/lib/languages/go'; 12 | 13 | 14 | hljs.registerLanguage('javascript', javascript); 15 | hljs.registerLanguage('json', json); 16 | hljs.registerLanguage('bash', bash); 17 | hljs.registerLanguage('html', xml); 18 | hljs.registerLanguage('ini', ini); 19 | hljs.registerLanguage('toml', ini); 20 | hljs.registerLanguage('yaml', yaml); 21 | hljs.registerLanguage('md', markdown); 22 | hljs.registerLanguage('python', python); 23 | hljs.registerLanguage('go', go); 24 | 25 | 26 | document.addEventListener('DOMContentLoaded', () => { 27 | document.querySelectorAll('pre code:not(.language-mermaid)').forEach((block) => { 28 | hljs.highlightElement(block); 29 | }); 30 | }); -------------------------------------------------------------------------------- /assets/js/react/components/App.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import {useEffect, useState} from "react"; 3 | import Spinner from "react-bootstrap/Spinner"; 4 | 5 | export const App = ({component, fetchData, container = null}) => { 6 | 7 | const [fetchingData, setFetchingData] = useState({ 8 | loading: true, 9 | data: null, 10 | error: null, 11 | }) 12 | 13 | useEffect(() => { 14 | const fetchAsync = async () => { 15 | try { 16 | const data = await fetchData(container) 17 | 18 | setFetchingData({ 19 | loading: false, 20 | data, 21 | error: null 22 | }) 23 | } catch (e) { 24 | setFetchingData({ 25 | loading: false, 26 | data: null, 27 | error: e.message 28 | }) 29 | } 30 | } 31 | 32 | if (fetchData) { 33 | fetchAsync() 34 | } else { 35 | setFetchingData({ 36 | loading: false, 37 | data: {}, 38 | error: null 39 | }) 40 | } 41 | }, []) 42 | 43 | let renderComponent =
Error rendering component
44 | 45 | if (fetchingData.loading) { 46 | renderComponent = 47 | } 48 | 49 | if (fetchingData.data) { 50 | const Component = component 51 | renderComponent = 52 | } 53 | 54 | return
55 | {renderComponent} 56 |
57 | } 58 | 59 | export const buildAppComponent = (component, fetchData, container) => { 60 | return 61 | } 62 | -------------------------------------------------------------------------------- /assets/js/react/components/curriculum/page/Goal.css: -------------------------------------------------------------------------------- 1 | .learning-objectives { 2 | width: 100%; 3 | padding-bottom: 22px; 4 | } 5 | 6 | .learning-objectives .title { 7 | font-size: 22px; 8 | font-weight: bold; 9 | } 10 | 11 | .learning-objectives .body { 12 | background-color: #f8f8f8; 13 | border: 1px solid #EAEAEAFF; 14 | border-radius: 8px 8px 8px 8px; 15 | align-content: flex-start; 16 | padding: 10px; 17 | } 18 | 19 | [data-dark-mode] .learning-objectives .body { 20 | background-color: #3d3d3d; 21 | border: 1px solid #252525; 22 | color: white; 23 | } 24 | -------------------------------------------------------------------------------- /assets/js/react/components/curriculum/page/PageNavigation.jsx: -------------------------------------------------------------------------------- 1 | import React, {useEffect, useState} from "react" 2 | import ReactDOM from "react-dom/client"; 3 | import {useContentLevel, useCurrentPageId, useSidebarMenuElements} from "../../../services/hooks"; 4 | import Spinner from 'react-bootstrap/Spinner'; 5 | import {getDataAttribute, getDataAttributeFromContainer, renderComponent} from "../../../services/util"; 6 | import {TutorialTrigger} from "../tutorial/TutorialTrigger"; 7 | 8 | const PageNavigation = () => { 9 | 10 | const currentPageId = useCurrentPageId() 11 | const sidebarMenuElements = useSidebarMenuElements() 12 | 13 | const [contentLevel, setContentLevel] = useContentLevel() 14 | const [next, setNext] = useState(null) 15 | const [previous, setPrevious] = useState(null) 16 | 17 | useEffect(() => { 18 | let findPrevious = true 19 | let findNext = false 20 | 21 | for (let i=0; i { 45 | const link = element.querySelector('a') 46 | return link.href 47 | } 48 | 49 | const composeButton = previous => { 50 | const title = getDataAttributeFromContainer(previous, "title") 51 | 52 | const button =
53 |
54 | {title} 55 |
56 |
57 | 58 | if (getDataAttributeFromContainer(previous, "category") === "tutorial") { 59 | const id = getDataAttributeFromContainer(previous, "id") 60 | const content = document.getElementById("content-curriculum-tutorial-trigger-" + id).innerHTML 61 | 62 | return 63 | } 64 | 65 | return 66 | {button} 67 | 68 | } 69 | 70 | return <> 71 | {(previous === null && next === null) && } 72 | {(previous !== null || next !== null) &&
73 | {previous !== null && composeButton(previous)} 74 | {next !== null && composeButton(next)} 75 |
} 76 | 77 | } 78 | 79 | renderComponent(, "page-navigation") 80 | -------------------------------------------------------------------------------- /assets/js/react/components/curriculum/tutorial/Tutorial.css: -------------------------------------------------------------------------------- 1 | .dynamic-tutorial { 2 | width: 100%; 3 | height: 100%; 4 | z-index: 10000 5 | } 6 | 7 | .dynamic-tutorial .notice { 8 | display: flex; 9 | align-items: center; 10 | background-color: #f5f5f5; 11 | color: black; 12 | padding: 12px; 13 | border: 1px solid #E8E8E8FF; 14 | border-radius: 4px 4px 4px 4px; 15 | margin-top: 20px; 16 | } 17 | 18 | [data-dark-mode] .dynamic-tutorial .notice { 19 | background-color: #3d3d3d; 20 | border: 1px solid #252525; 21 | color: white; 22 | } 23 | -------------------------------------------------------------------------------- /assets/js/react/components/curriculum/tutorial/Tutorial.jsx: -------------------------------------------------------------------------------- 1 | import {hideElement, renderComponent} from "../../../services/util"; 2 | import {App} from "../../App"; 3 | import React, {useEffect, useState} from "react"; 4 | 5 | const Tutorial = () => { 6 | 7 | const [tutorialData, setTutorialData] = useState(null) 8 | 9 | const showDynamicTutorial = e => { 10 | hideElement("page-content") 11 | const data = e.detail 12 | 13 | setTutorialData(data) 14 | } 15 | 16 | useEffect(() => { 17 | return window.addEventListener('showDynamicTutorial', showDynamicTutorial) 18 | }, []) 19 | 20 | return <> 21 | {tutorialData !== null &&
22 |
23 | 24 | This tutorial can also be found in the Launchpad Tutorials section. 25 |
26 |

{tutorialData.title}

27 |
28 |
} 29 | 30 | } 31 | 32 | 33 | renderComponent(, "dynamic-tutorial") 34 | -------------------------------------------------------------------------------- /assets/js/react/components/curriculum/tutorial/TutorialTrigger.jsx: -------------------------------------------------------------------------------- 1 | import {getDataAttributeFromContainer, renderComponents} from "../../../services/util"; 2 | import React, {useEffect, useState} from "react"; 3 | import {TutorialTriggerButton} from "./TutorialTriggerButton"; 4 | 5 | export const TutorialTrigger = ({title, content, button = undefined}) => { 6 | 7 | const [activeTrigger, setActiveTrigger] = useState(false) 8 | 9 | useEffect(() => { 10 | return window.addEventListener('showDynamicTutorial', e => { 11 | const data = e.detail 12 | 13 | if (data.title === title) { 14 | setActiveTrigger(true) 15 | } else { 16 | setActiveTrigger(false) 17 | } 18 | }) 19 | }) 20 | 21 | const trigger = () => { 22 | const activeElements = document.getElementsByClassName("docs-link rounded active"); 23 | 24 | for (let i = 0; i < activeElements.length; i++) { 25 | const activeElement = activeElements[i] 26 | activeElement.classList.toggle('active') 27 | } 28 | 29 | window.dispatchEvent(new CustomEvent('showDynamicTutorial', {detail: {title, content}})) 30 | } 31 | 32 | const onClickWrapper = button => { 33 | return
{trigger(); trigger()}}> 34 | {button} 35 |
36 | } 37 | 38 | return onClickWrapper(button === undefined ? : button) 39 | } 40 | 41 | const fetchData = async (container) => { 42 | const parent = container.parentNode 43 | const tutorialId = container.id.split('-')[3] 44 | 45 | const tutorialContent = document.getElementById('content-curriculum-tutorial-trigger-' + tutorialId).innerHTML 46 | 47 | const title = getDataAttributeFromContainer(parent, "title") 48 | const content = tutorialContent 49 | 50 | return { 51 | title, 52 | content 53 | } 54 | } 55 | 56 | renderComponents(TutorialTrigger, fetchData, "curriculum-tutorial-trigger") 57 | -------------------------------------------------------------------------------- /assets/js/react/components/curriculum/tutorial/TutorialTriggerButton.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export const TutorialTriggerButton = ({title, active}) => { 4 | 5 | const className = active ? "docs-link rounded active" : "docs-link rounded" 6 | 7 | return
8 | 9 |
{title}
10 |
11 | } 12 | -------------------------------------------------------------------------------- /assets/js/react/services/hooks.js: -------------------------------------------------------------------------------- 1 | import goalsConfigs from "./config/_default/goals.json" 2 | 3 | export const useStorage = key => { 4 | const store = window.store 5 | 6 | const setValue = value => { 7 | store.set(key, value) 8 | } 9 | const getValue = () => { 10 | return store.get(key) 11 | } 12 | 13 | return [getValue(), setValue] 14 | } 15 | 16 | export const useContentLevel = () => { 17 | const [value, setValue] = useStorage("content_level"); 18 | 19 | const setContentLevel = level => { 20 | setValue(level) 21 | } 22 | const getContentLevel = () => { 23 | return value 24 | } 25 | 26 | return [getContentLevel(), setContentLevel] 27 | } 28 | 29 | export const useSidebarMenuElements = () => { 30 | const menu = document.getElementById('doks-docs-nav') 31 | return Array.from(menu.querySelectorAll('[data-id]')) 32 | } 33 | 34 | export const useCurrentPageId = () => { 35 | const currentPageTitle = document.querySelector('[data-page-id]') 36 | return currentPageTitle.getAttribute('data-page-id') 37 | } 38 | 39 | export const useGoal = (section, goalIds) => { 40 | const sectionGoals = goalsConfigs[section] 41 | 42 | if (!sectionGoals) { 43 | return null 44 | } 45 | 46 | if (!goalIds || goalIds.length === 0) { 47 | return sectionGoals 48 | } 49 | 50 | let goals = {} 51 | for (const goalId of goalIds) { 52 | const goal = sectionGoals[goalId] 53 | 54 | if (goal) { 55 | goals = { 56 | ...goals, 57 | [goalId]: goal 58 | } 59 | } 60 | } 61 | 62 | return goals 63 | } 64 | -------------------------------------------------------------------------------- /assets/js/react/services/util.js: -------------------------------------------------------------------------------- 1 | import ReactDOM from "react-dom/client"; 2 | import React from "react"; 3 | import {App, buildAppComponent} from "../components/App"; 4 | 5 | export const LEVELS = ['shallow', 'deep'] 6 | 7 | export const getDataAttribute = (id, attribute) => { 8 | const element = document.getElementById(id) 9 | return element.dataset[attribute] 10 | } 11 | 12 | export const hideElement = id => { 13 | const content = document.getElementById(id) 14 | content.style.display = "none" 15 | } 16 | 17 | export const getDataAttributeFromContainer = (container, attribute) => { 18 | return container.dataset[attribute] 19 | } 20 | 21 | export const renderComponent = (component, containerId) => { 22 | const container = document.getElementById(containerId); 23 | 24 | const root = ReactDOM.createRoot(container); 25 | root.render(component) 26 | } 27 | 28 | export const renderComponents = (component, fetchData, containerIdPrefix) => { 29 | const containers = document.querySelectorAll('[id^="' + containerIdPrefix + '"]'); 30 | 31 | for (let i = 0; i < containers.length; i++) { 32 | const container = containers[i] 33 | const root = ReactDOM.createRoot(container); 34 | root.render(buildAppComponent(component, fetchData, container)) 35 | } 36 | } 37 | 38 | export const parseList = (listAsString) => { 39 | if (!listAsString) { 40 | return [] 41 | } 42 | 43 | return listAsString.replace('[', '').replace(']', '').split(' ') 44 | } 45 | 46 | export const parseBoolean = booleanAsString => { 47 | return booleanAsString === 'true' 48 | } 49 | 50 | export const capitalize = text => { 51 | return text.charAt(0).toUpperCase() + text.substring(1, text.length) 52 | } 53 | 54 | -------------------------------------------------------------------------------- /assets/scss/app.scss: -------------------------------------------------------------------------------- 1 | /** Import Bootstrap functions */ 2 | @import "bootstrap/scss/functions"; 3 | 4 | /** Import theme variables */ 5 | @import "common/variables"; 6 | 7 | /** Import Bootstrap */ 8 | @import "bootstrap/scss/bootstrap"; 9 | 10 | /** Import highlight.js */ 11 | // @import "highlight.js/scss/github-dark-dimmed"; 12 | 13 | /** Import KaTeX */ 14 | @import "katex/dist/katex"; 15 | 16 | /** Import theme styles */ 17 | @import "common/fonts"; 18 | @import "common/global"; 19 | @import "common/dark"; 20 | @import "components/alerts"; 21 | @import "components/buttons"; 22 | @import "components/code"; 23 | @import "components/details"; 24 | @import "components/syntax"; 25 | @import "components/comments"; 26 | @import "components/forms"; 27 | @import "components/images"; 28 | @import "components/mermaid"; 29 | @import "components/search"; 30 | @import "components/tables"; 31 | @import "layouts/footer"; 32 | @import "layouts/header"; 33 | @import "layouts/pages"; 34 | @import "layouts/posts"; 35 | @import "layouts/sidebar"; 36 | 37 | /** Import custom styles */ 38 | @import "common/custom"; 39 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | [ 4 | '@babel/preset-env', 5 | { 6 | targets: { 7 | browsers: [ 8 | // Best practice: https://github.com/babel/babel/issues/7789 9 | '>=1%', 10 | 'not ie 11', 11 | 'not op_mini all' 12 | ] 13 | } 14 | } 15 | ] 16 | ] 17 | }; 18 | 19 | module.exports = function (api) { 20 | api.cache(true); 21 | const presets = [ 22 | ["@babel/preset-react"] 23 | ] 24 | const plugins = []; 25 | return { 26 | presets, 27 | plugins 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /config/_default/languages.toml: -------------------------------------------------------------------------------- 1 | [en] 2 | languageName = "English" 3 | contentDir = "content/en" 4 | weight = 10 5 | [en.params] 6 | languageISO = "EN" 7 | 8 | # [de] 9 | # languageName = "German" 10 | # contentDir = "content/de" 11 | # weight = 15 12 | # [de.params] 13 | # languageISO = "DE" 14 | # 15 | # [nl] 16 | # languageName = "Nederlands" 17 | # contentDir = "content/nl" 18 | # weight = 20 19 | # [nl.params] 20 | # languageISO = "NL" 21 | # titleAddition = "Modern documentatie-thema" 22 | # description = "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn — standaard." 23 | # titleHome = "Doks thema" 24 | # footer = "Mogelijk gemaakt door Netlify, Hugo, en Doks" 25 | # alertText = "Introductie van het Doks-kinderthema, verschillende DX + UX-updates en meer! Bekijk Doks v0.2" 26 | -------------------------------------------------------------------------------- /config/_default/markup.toml: -------------------------------------------------------------------------------- 1 | defaultMarkdownHandler = "goldmark" 2 | 3 | [goldmark] 4 | [goldmark.extensions] 5 | linkify = false 6 | [goldmark.parser] 7 | autoHeadingID = true 8 | autoHeadingIDType = "github" 9 | [goldmark.parser.attribute] 10 | block = true 11 | title = true 12 | [goldmark.renderer] 13 | unsafe = true 14 | 15 | [highlight] 16 | codeFences = false 17 | guessSyntax = false 18 | hl_Lines = "" 19 | lineNoStart = 1 20 | lineNos = false 21 | lineNumbersInTable = true 22 | noClasses = false 23 | style = "dracula" 24 | tabWidth = 4 25 | 26 | [tableOfContents] 27 | endLevel = 3 28 | ordered = false 29 | startLevel = 2 30 | -------------------------------------------------------------------------------- /config/_default/menus/menus.nl.toml: -------------------------------------------------------------------------------- 1 | [[docs]] 2 | name = "Prologue" 3 | weight = 10 4 | identifier = "prologue" 5 | url = "/docs/prologue/" 6 | 7 | [[docs]] 8 | name = "Help" 9 | weight = 60 10 | identifier = "help" 11 | url = "/docs/help/" 12 | 13 | [[main]] 14 | name = "Docs" 15 | url = "/docs/prologue/introduction/" 16 | weight = 10 17 | 18 | # [[main]] 19 | # name = "Blog" 20 | # url = "/blog/" 21 | # weight = 20 22 | 23 | [[social]] 24 | name = "GitHub" 25 | pre = "" 26 | url = "https://github.com/h-enk/doks" 27 | post = "v0.1.0" 28 | weight = 10 29 | 30 | [[social]] 31 | name = "Twitter" 32 | pre = "" 33 | url = "https://twitter.com/getdoks" 34 | weight = 20 35 | 36 | # [[footer]] 37 | # name = "Privacy" 38 | # url = "/privacy-policy/" 39 | # weight = 10 40 | -------------------------------------------------------------------------------- /config/_default/params.toml: -------------------------------------------------------------------------------- 1 | # Meta Data for SEO 2 | 3 | ## Homepage 4 | title = "Launchpad" 5 | titleSeparator = "-" 6 | titleAddition = "Blast off into web3 with Launchpad!" 7 | description = "Launchpad is a hiring & onboarding program designed for accelerating technical growth in the Web3 space." 8 | 9 | ## Documentation 10 | # docsVersion = "0.3" 11 | 12 | ## Open Graph 13 | images = ["launchpad.png"] 14 | ogLocale = "en_US" 15 | domainTLD = "pl-launchpad.io" 16 | titleHome = "Launchpad" 17 | 18 | ## Twitter Cards 19 | twitterSite = "@launchpad_pl" 20 | twitterCreator = "@launchpad_pl" 21 | 22 | ## JSON-LD 23 | # schemaType = "Person" 24 | schemaType = "Organization" 25 | schemaName = "Launchpad" 26 | schemaAuthor = "Protocol Labs" 27 | schemaAuthorTwitter = "https://twitter.com/launchpad_pl" 28 | schemaAuthorLinkedIn = "https://www.linkedin.com/in//" 29 | schemaAuthorGitHub = "https://github.com/protocol/" 30 | schemaLocale = "en-US" 31 | schemaLogo = "logo-launchpad.png" 32 | schemaLogoWidth = 512 33 | schemaLogoHeight = 512 34 | schemaImage = "doks.png" 35 | schemaImageWidth = 1280 36 | schemaImageHeight = 640 37 | schemaTwitter = "https://twitter.com/launchpad_pl" 38 | schemaLinkedIn = "" 39 | schemaGitHub = "https://github.com/protocol/launchpad" 40 | schemaSection = "blog" 41 | 42 | ## Sitelinks Search Box 43 | siteLinksSearchBox = false 44 | 45 | ## Chrome Browser 46 | themeColor = "#fff" 47 | 48 | # Images 49 | quality = 85 50 | bgColor = "#fff" 51 | landscapePhotoWidths = [900, 800, 700, 600, 500] 52 | portraitPhotoWidths = [800, 700, 600, 500] 53 | lqipWidth = "20x" 54 | smallLimit = "300" 55 | 56 | # Footer 57 | footer = 'Made with ♥ by Protocol Labs.
The icons used are provided by Flaticon.' 58 | 59 | # Feed 60 | copyRight = "Copyright (c) Protocol Labs" 61 | 62 | # Alert 63 | alert = false 64 | alertDismissable = true 65 | alertText = "" 66 | 67 | # Edit Page 68 | # repoHost [Github | Gitea | GitLab | Bitbucket | BitbucketServer ] is used for building the edit link based on git hoster 69 | repoHost = "GitHub" 70 | docsRepo = "https://github.com/protocol/launchpad" 71 | docsRepoBranch = "main" 72 | docsRepoSubPath = "" 73 | editPage = true 74 | lastMod = false 75 | 76 | [options] 77 | lazySizes = true 78 | clipBoard = true 79 | instantPage = true 80 | flexSearch = true 81 | darkMode = true 82 | bootStrapJs = true 83 | breadCrumb = false 84 | highLight = true 85 | kaTex = false 86 | multilingualMode = false 87 | docsVersioning = false 88 | collapsibleSidebar = true 89 | ignoreErrors = ["image-not-found"] 90 | 91 | -------------------------------------------------------------------------------- /config/next/config.toml: -------------------------------------------------------------------------------- 1 | canonifyURLs = false 2 | -------------------------------------------------------------------------------- /config/postcss.config.js: -------------------------------------------------------------------------------- 1 | const autoprefixer = require('autoprefixer'); 2 | const purgecss = require('@fullhuman/postcss-purgecss'); 3 | const whitelister = require('purgecss-whitelister'); 4 | 5 | module.exports = { 6 | plugins: [ 7 | autoprefixer(), 8 | purgecss({ 9 | content: [ 10 | './node_modules/@hyas/doks/layouts/**/*.html', 11 | './node_modules/@hyas/doks/content/**/*.md', 12 | './layouts/**/*.html', 13 | './content/**/*.md', 14 | ], 15 | safelist: [ 16 | 'lazyloaded', 17 | 'table', 18 | 'thead', 19 | 'tbody', 20 | 'tr', 21 | 'th', 22 | 'td', 23 | 'h5', 24 | 'alert-link', 25 | 'container-xxl', 26 | 'container-fluid', 27 | ...whitelister([ 28 | './node_modules/@hyas/doks/assets/scss/common/_variables.scss', 29 | './node_modules/@hyas/doks/assets/scss/components/_alerts.scss', 30 | './node_modules/@hyas/doks/assets/scss/components/_buttons.scss', 31 | './node_modules/@hyas/doks/assets/scss/components/_code.scss', 32 | './node_modules/@hyas/doks/assets/scss/components/_syntax.scss', 33 | './node_modules/@hyas/doks/assets/scss/components/_search.scss', 34 | './node_modules/@hyas/doks/assets/scss/common/_dark.scss', 35 | './node_modules/katex/dist/katex.css', 36 | ]), 37 | ], 38 | }), 39 | ], 40 | } 41 | -------------------------------------------------------------------------------- /config/production/config.toml: -------------------------------------------------------------------------------- 1 | canonifyURLs = false 2 | -------------------------------------------------------------------------------- /content/en/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Launchpad" 3 | description: "" 4 | lead: "Launchpad is a hiring & onboarding program designed for accelerating technical growth in the Web3 space." 5 | date: 2020-10-06T08:47:36+00:00 6 | lastmod: 2020-10-06T08:47:36+00:00 7 | draft: false 8 | images: [] 9 | --- 10 | 11 | Launchpad is a training program covering topics like: blockchains, 12 | peer-to-peer communication, content addressing, and decentralized file storage. The program was built over 1.5 years, running over 12 live cohorts virtually and in person in locations such as Paris, Reykjavik, San Francisco and more. 13 | 14 | {{< youtube DMmCZgKOUlD9LVr >}} 15 | 16 | Launchpad live cohorts are currently paused. Our curriculum and resources which have proven valuable to more than 270 participants from 20 diverse organizations are now available to use for self-guided exploration. 17 | 18 | Click on 'Discover Curriculum' in the menu to begin your learning experience!" 19 | 20 | To get in touch with us at Protocol Labs, feel free to join [Filecoin 21 | Slack](https://filecoin.io/slack). 22 | 23 | If you would like to be notified of future cohorts, please 24 | join our wait-list below. 25 | -------------------------------------------------------------------------------- /content/en/curriculum/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title : "Curriculum" 3 | --- 4 | -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/bacalhau/bacalhau-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/bacalhau/bacalhau-architecture.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/bacalhau/bacalhau-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/bacalhau/bacalhau-overview.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/ceramic/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Ceramic" 3 | description: "Decentralized Identity Graph Network" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | category: lecture 9 | weight: 90 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | Ceramic is a decentralized, open source platform for creating, hosting, and sharing streams of data. With Ceramic's permissionless data streaming network, you can store streams of information and ever-changing files directly on the decentralized web – and share updates with anyone in the world. 16 | 17 | Read more in the [docs](https://developers.ceramic.network/learn/welcome/) and on their [webpage](https://ceramic.network/) 18 | 19 | Join the [community on Discord](https://discord.com/invite/6VRZpGP) to get connected 20 | 21 | #### Ceramic: Building with Soverign Data on Ceramic Network | ETHGlobal – Joel Thorstensson 22 | Join Joel Thorstensson of Ceramic for a workshop titled "Building with Sovereign Data on Ceramic Network," part of HackFS 2021, a three-week virtual hackathon focused on building a digital world 23 | 24 | {{< youtube BX49K3BL-U8 >}} 25 | 26 | Understand more about Ceramic from this blog: [What is Ceramic?](https://blog.ceramic.network/what-is-ceramic/) 27 | 28 | ## Tutorials 29 | * [Quickstart](https://developers.ceramic.network/build/cli/quick-start/) – Learn the basics by setting up and interacting with the [Ceramic CLI](https://developers.ceramic.network/build/cli/installation/). This tutorial serves as a simple introduction to Ceramic concepts. 30 | 31 | ### Try Ceramic 32 | To experience how Ceramic works in a browser application, try the [Playground app](https://ceramicstudio.github.io/web-playground/). 33 | -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/chainsafe/forest.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Forest" 3 | description: "Rust client for the Filecoin network" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | weight: 0 9 | category: lecture 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | ## Introduction 16 | Forest is the rust client for the Filecoin network. Forest adds to the client diversity, network resiliency, network democracy, decentralization and overall adoption of Filecoin. 17 | 18 | ## Why Use/ Who Uses 19 | Forest put its focus on being a light infrastructure node and having an enhanced developer experience. A few key developments include: 20 | 21 | - the ability to generate its own snapshots for calibration and main network 22 | - the ability to generate snapshots with 10 GB memory 23 | - fast snapshot export time: main net (under 1 hour), calibration net (under 1 minute) 24 | - the ability to switch networks during runtime with a flag 25 | - the ability to run Forest with docker containers as first class citizens with native images for amd64 and arm64 26 | 27 | 28 | ## Tutorial 29 | Please follow the [Forest documentation](https://github.com/ChainSafe/forest) if you are interested in running the node. 30 | 31 | 32 | ## Coming Next 33 | A few key features that you can expect from the Forest client in the near future: 34 | - Filecoin wallet handling capabilities including send, receive and store FIL 35 | - The ability to make storage and retrieval deals 36 | - A javascript console into the Forest CLI (inspired by Geth Go Ethereum Client) for developers to retrieve chain data, interact with chain state, etc 37 | 38 | ## Resources 39 | * [Forest repo](https://github.com/ChainSafe/forest) 40 | * [Forest releases](https://github.com/ChainSafe/forest/releases) 41 | * [Forest wiki](https://github.com/ChainSafe/forest/wiki) 42 | * [Forest docker documentation](https://github.com/ChainSafe/forest/blob/main/documentation/src/docker.md) 43 | 44 | 45 | ## Support 46 | Reach out to Lee R (Forest TPM) at lee@chainsafe.io or David H (Forest Team Lead) at david.himmelstrup@chainsafe.io for any questions or collaborations! -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/fleek/daemon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/fleek/daemon.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/fleek/hosting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/fleek/hosting.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/fleek/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Fleek" 3 | description: "An Easy-to-Use Web3 Hosting Service" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | category: lecture 9 | weight: 40 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | **Fleek** makes it easy to build on Open Web protocols and a base layer infrastructure powered by them. Build and host your sites, apps, Dapps, and other services on trustless, permissionless, and open technologies focused on creating user-controlled, encrypted, private, p2p experiences easily. 16 | 17 | With Fleek, you can host a website on web3, manage your domain, upload and pin files to IPFS, use the Space SDK to build and Open Web app, and use the Fleek IPFS gateway, in addition to the Space Daemon. 18 | 19 | ![Fleek Hosting](hosting.png) 20 | 21 | ### Fleek Space Daemon 22 | 23 | The Space Daemon packages together IPFS, Textile Threads/Buckets, and Textile Powergate (Filecoin) into one easy to install and JS interface to make it easy to build peer to peer and privacy focused apps. 24 | 25 | ![Fleek Info](daemon.png) 26 | 27 | [Get started with the Fleek Space Daemon](https://docs.fleek.co/space-daemon/getting-started/) in the documentation 28 | 29 | #### [Documentation](docs.fleek.co/space-daemon) 30 | **Note:** You should have IPFS node running on your machine using the `ipfs daemon` command to view the documentation. See the video on [Getting Started with IPFS](https://youtu.be/A7yZaYhrwyM) to get set up. 31 | -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/network-indexer/cid-contact2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/network-indexer/cid-contact2.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/network-indexer/indexcid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/network-indexer/indexcid.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/network-indexer/ipfspeerid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/network-indexer/ipfspeerid.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/network-indexer/ipni-commands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/network-indexer/ipni-commands.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/network-indexer/ipni-index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/network-indexer/ipni-index.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/objectives/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Learning Objectives" 3 | description: "Simple, Open, Free Storage" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | identifier: "devtools-objectives" 9 | category: lecture 10 | weight: 1 11 | level: 12 | - shallow 13 | - deep 14 | objectives: 15 | show: true 16 | showTitle: false 17 | introPage: true 18 | --- 19 | 20 | This page is a reference for Technology and Projects supported and maintained by Protocol Labs, including a wide range of PLN Companies and Tools that exist in the PLN ecosystem. 21 | 22 | All of these projects are a part of the Protocol Labs Network and contribute to our ecosystem of tooling. 23 | 24 | The wide range of projects across the PLN provide important solutions for the technology across the Protocol Labs stacks, whether they are Open Source Software (OSS), protocols, or tools and services offered for a subscription or fee, these companies and projects are all a part of our efforts working together to power the distributed web. 25 | 26 | To learn more about the team members and maintainers of different projects, see the **[PLN Team Directory](https://www.plnetwork.io/directory/teams)**. 27 | 28 | ## Technology & Projects 29 | * **[IPNI Network Indexer](/curriculum/dev-tools/network-indexer)**: A project designed to index the data on the Filecoin and IPFS networks 30 | * **[Bacalhau](/curriculum/dev-tools/bacalhau)**: A framework that allows you to perform distributed computations on IPFS 31 | * **[Fleek](/curriculum/dev-tools/fleek/)**: For hosting and building DApps on web3 32 | * **[Piñata](/curriculum/dev-tools/pinata/)**: A pinning service for individuals and creators 33 | * **[Web3.Storage](/curriculum/dev-tools/web3-storage/)**: The data layer for uploading and storing content on IPFS and Filecoin 34 | * **[Spice.ai](/curriculum/dev-tools/spice/)**: Web3 and blockchain solutions that are enabling developers to build the next generation of apps 35 | * **[Textile](/curriculum/dev-tools/textile/)**: A suite of developer tools, including Powergate, Buckets, and ThreadDB, and more 36 | * **[Ceramic](/curriculum/dev-tools/ceramic/)**: Identity-based storage & indexing 37 | * **[thirdweb](https://thirdweb.com/)**:thirdweb is a complete web3 development framework that provides everything you need to build, manage, and deploy smart contracts. We offer SDKs in common languages, UI components, storage, RPC nodes, on chain data, and more tools to make it easier to build in web3. 38 | 39 | **Other Project Links** 40 | * **[Saturn](https://strn.network/)**: The web3 open-source Content Delivery Network (CDN). Run your own node and earn Filecoin 41 | * **[FVM](https://fvm.filecoin.io/)**: Leveraging EVM compatible smart contracts 42 | * **[Lotus](https://lotus.filecoin.io/)**: The Go implementation of the Filecoin Protocol 43 | * **[Boost](https://boost.filecoin.io/)**: A tool for Storage Providers to manage data onboarding and retrieval on the Filecoin network 44 | * **[Chainsafe](https://chainsafe.io/)**: Protocol engineering, research, and software teams 45 | * **[Estuary](https://docs.estuary.tech/tutorial-get-an-api-key)**: Public data storage tool for Filecoin & IPFS 46 | * **[Fission](https://dev.to/fission/fission-on-the-ipfs-community-call-nof)**: SDK for web3-native apps to help you build web3 products & services 47 | 48 | 49 | -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/pinata/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Piñata" 3 | description: "The Piñata Pinning Service" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | category: lecture 9 | weight: 50 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | Piñata is a pinning service that allows applications, creators, and individuals to interact with blockchain in a simple, intuitive way. With Piñata you can secure and pin NFTs, as well as add and hide files to the IPFS network with a feature called [submarining](https://www.pinata.cloud/blog/introducing-submarining-what-it-is-why-you-need-it). They also provide [dedicated gateways](https://www.pinata.cloud/blog/the-power-of-dedicated-gateways) and storage servers, and easy upload through their UI. 16 | 17 | For developers, Piñata offers an API endpoint (https://api.pinata.cloud/psa), which you can use with the [IPFS CLI](https://docs.pinata.cloud/api-pinning/pinning-services-api#configuring-pinata-in-the-ipfs-cli), or configure Piñata with IPFS Desktop and your [JSON Web Token](https://docs.pinata.cloud/api-pinning/pinning-services-api). 18 | 19 | 20 | #### [About Pinata | Kyle Tut & Matt Ober](https://pinnie.mypinata.cloud/ipfs/QmVzQdLztGgzvvYatzCpgubqM3VZPyGa6xbzieAyFNRGcY?stream=true) 21 | 22 | ### Resources 23 | 24 | * [Piñata website](https://www.pinata.cloud/) 25 | * [Piñata API Docs](https://docs.pinata.cloud/api-pinning/pinning-services-api) 26 | * [Piñata Medium articles](https://medium.com/pinata) 27 | * [Piñata blog](https://www.pinata.cloud/blog) 28 | * [Sign up for a Piñata cloud account](https://app.pinata.cloud/) 29 | * [Tutorial- Sharing Content](https://medium.com/pinata/how-to-easily-share-content-on-patreon-with-pinata-aa8682f2ee0c) 30 | -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/polywrap/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/polywrap/03.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/polywrap/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/polywrap/04.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/polywrap/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Polywrap" 3 | description: "Framework for building web3 SDKs" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | category: lecture 9 | weight: 60 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | [**Polywrap**](https://polywrap.io/) is a framework for building “wrappers”: composable, portable, and dynamically upgradeable SDKs.✨ 16 | 17 | Wrappers offer a much better strategy for code reuse and composability than traditional SDKs. Wrappers are: 18 | 19 | - **easily composable.** Polywrap wrappers can connect and work together in intuitive ways, opening up endless possibilities for your dApps. Imagine combining a DeFi wrapper with an NFT wrapper to create a brand new dApp experience. 20 | 21 | ![Easily Composable](04.png) 22 | 23 | - **portable.** With Polywrap, web3 devs create one web3 protocol wrapper that works everywhere—web, mobile, servers, IoT, so long as the environment has the Polywrap client library installed. 24 | 25 | ![Portable](03.png) 26 | 27 | 28 | - **updatable on the fly.** Wrappers aren't bundled into applications. Instead, they're fetched at runtime and any patch updates are done on the fly, without the need to rebuild your entire dApp. 29 | --- 30 | 31 | # Join us in the future of web3 dApp development! 32 | 33 | **Discord:** [https://discord.com/invite/Z5m88a5qWu](https://discord.com/invite/Z5m88a5qWu) 34 | 35 | **Documentation:**[https://docs.polywrap.io/](https://docs.polywrap.io/) 36 | 37 | -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/spice.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Spice AI" 3 | description: "Planet-Scale Data & AI Infrastructure for Web3" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | category: lecture 9 | weight: 70 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | Designed for apps and machine learning, Spice AI delivers web3 and blockchain solutions that are enabling developers to build the next generation of apps. Get petabyte-scale data and AI infrastructure for web3 - without the pain of building and operating complex infrastructure. 16 | 17 | Learn more about Spice AI on the website at [spiceai.io](https://spiceai.io/) and in the [docs](https://docs.spice.xyz/) 18 | 19 | #### Dedicated to the Developer Experience: Get Started with Just Three Lines of Code 20 | 21 | Get started in minutes, not months. With Spice.xyz, it takes just three lines of code to get rich web3 data in familiar tools like NumPy and Pandas. Developer-friendly Node and Python SDK's make accessing web3 data easy. 22 | 23 | ## Ecosystem Compatible 24 | 25 | Fetch millions of rows of data and access libraries such as NumPy and Pandas with ease. Use client libraries such as web3.js, ehter.js, and web3.py in combination with SQL query API's. 26 | 27 | ## Combine Code with SQL Query 28 | 29 | Use developer-friendly SDK's to query web3 data with ease, including joins across multiple datasets with filtering and aggregations, in just three lines of code. 30 | 31 | ## Enriched Datasets 32 | 33 | Fully supported high-quality, enriched datasets for tokens, NFTs, DEXs and more. 34 | 35 | ## Other Resources 36 | Join our Discord, visit our GitHub, and follow us on Twitter! 37 | 38 | [Read More](https://docs.spice.xyz/) | [On Github](https://github.com/spiceai/spiceai) | [On Twitter](https://twitter.com/spice_ai) -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/textile/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Textile" 3 | description: "Connecting and Extending PL Projects" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | category: lecture 9 | weight: 80 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | Learn more about textile on the website at [textile.io](https://linktr.ee/textileio) and in the [docs](https://docs.textile.io/) 16 | 17 | Textile is designed to connect and extend Libp2p, IPFS, and Filecoin. 18 | 19 | Textile’s suite of developer tools, including Powergate, Buckets, and ThreadDB, let developers build meaningful experiences quickly with Web3 protocols like libp2p, IPFS, and Filecoin. 20 | 21 | #### Building Web3: Textile and Data Ownership | Filecoin 22 | 23 | {{< youtube d1kpID1LSRE >}} 24 | 25 | ## Powergate 26 | 27 | Powergate is an API for deploying hybrid Filecoin and IPFS storage into your stack. Designed for developers who want powerful ways to connect & extend Libp2p, IPFS, and Filecoin. It is a Docker container wrapped around an IPFS node + Filecoin node which allows you to stage, store, and retrieve data, with default configs for miner selection 28 | 29 | ![Fleek Info](powergate.png) 30 | 31 | ## Other Tools 32 | 33 | ### The Hub 34 | The Hub is your portal to the IPFS network and the fastest way to start building and experimenting with Textile technologies. 35 | 36 | [Read More](https://docs.textile.io/hub/) 37 | 38 | ### Buckets 39 | Buckets are: 40 | * A new way to pin data to IPFS and archive data on Filecoin. 41 | * Dynamic folders published simultaneously over IPFS, IPNS, and HTTP. 42 | * Designed to simplify creating folders of data and pushing that data to remote IPFS peers for backup, persistence, or sharing. 43 | 44 | [Read More](https://docs.textile.io/buckets) 45 | 46 | ### ThreadDB 47 | ThreadDB makes dynamic data on the DWeb easy by providing simple data hosting services and an API familiar to anyone who used MongoDB/Mongoose. 48 | 49 | ThreadDB is a secure, decentralized, p2p database built on IPFS and Libp2p. 50 | 51 | Spend less time configuring encryption or managing content addresses with ThreadDB. 52 | 53 | [Read More](https://docs.textile.io/threads/) 54 | 55 | ## Other Resources 56 | 57 | Join our public Slack, visit our GitHub, follow us on Twitter, and check out the Blog! 58 | 59 | [Read More](https://docs.textile.io/powergate/) | [On Github](https://github.com/textileio/powergate/) 60 | 61 | Learn more about Filecoin with the [Interview with Andrew Hill](https://filecoin.io/blog/posts/meet-andrew-hill/) 62 | 63 | #### Getting Started with Filecoin (Using Textile & Powergate) | ETHGlobal – Andrew Hill 64 | 65 | A workshop for beginners and intermediate developers with Andrew Hill of Textile. This is for anyone who understands the basics and wants to build something now. 66 | 67 | {{< youtube SePJrCLUM0g >}} 68 | -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/textile/powergate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/textile/powergate.png -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/web3-storage/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Web3.Storage" 3 | description: "Simple, Open, Free Storage" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | category: lecture 9 | weight: 60 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | [web3.storage](https://web3.storage/) unlocks the data layer for developers and end-users. You get all the benefits of decentralized data and auth protocols with the frictionless experience you expect in a modern dev workflow. 16 | web3.storage is a service to make building on top of content addressed data as simple as possible, with simple client libraries making data available on IPFS and stored in Filecoin deals. 17 | 18 | The experience is fast and reliable, with an architecture built for scale. Combined with APIs built on User Controlled Authorization Networks [UCANs](https://ucan.xyz/) auth, web3.storage enables user-centric applications that champion portability, limit lock-in, and are more efficient, with integration as simple as pasting a few lines of front-end code. 19 | 20 | ![Web3.Storage landing page](w3s.png) 21 | 22 | ### Resources 23 | 24 | - [Quickstart](https://web3.storage/docs/#quickstart) with NodeJS (current API in docs uses web2 auth) 25 | - Check out our beta UCAN-based API [here](https://blog.web3.storage/posts/w3up-beta-launch) 26 | - [Additional resources](https://blog.web3.storage/posts/resources-to-get-you-started-with-w3up) for beta API 27 | - [More](https://blog.web3.storage/posts/intro-to-ucan) on how we use UCAN 28 | - [Example app](https://web3.storage/docs/examples/image-gallery) using current API that uses web2 auth 29 | - [Example app](https://blog.web3.storage/posts/forever-note) using beta UCAN-based API 30 | - [Vision](https://blog.web3.storage/posts/say-hello-to-the-data-layer-1-3-intro-to-web3-storage) of product 31 | - [Overview](https://blog.web3.storage/posts/web3-storage-architecture) of current architecture -------------------------------------------------------------------------------- /content/en/curriculum/dev-tools/web3-storage/w3s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/dev-tools/web3-storage/w3s.png -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/cryptoeconomics/flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/filecoin/cryptoeconomics/flow.png -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/drand.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Drand" 3 | description: "Distributed, Unpredictable, Publicly-Verifiable, and Decentralized Randomness Generator" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-filecoin" 8 | weight: 60 9 | category: lecture 10 | level: 11 | - deep 12 | --- 13 | 14 | Drand is a distributed, bias-resistant, unpredictable, and publicly verifiable randomness generator that is key to the Filecoin implementation in how it provides unpredictable, decentralized and publicly verifiable random values for the blockchain. [Learn more about how Drand works in the docs](https://drand.love/docs/overview/#how-drand-works) 15 | 16 | #### Drand: Distributed, Bias Resistant, Unpredictable and Publicly Verifiable Randomness | Nicolas Gailly 17 | Drand uses [cryptographic methods](https://drand.love/docs/cryptography/#setup-phase), collective public keys, and a private key share of a collective private key to generate randomness in a distributed manner. 18 | 19 | {{< youtube ydwW2HFFxNI >}} 20 | 21 | #### [drand - The Distributed Randomness Beacon | ResNetLabs On Tour – Nicolas GAILLY](https://research.protocol.ai/tutorials/resnetlab-on-tour/modular-p2p-stack/) 22 | 23 | drand is a distributed randomness beacon. It provides publicly-verifiable, unpredictable, and bias-resistant random numbers as a public service. In this module, we’ll walk through: 24 | 25 | * Threshold Cryptography & Randomness 26 | * Distributed Key Generation in drand 27 | * The Setup and Randomness Generation Phases 28 | * The League of Entropy 29 | 30 | {{< youtube NNfaQ__UFCE >}} 31 | 32 | ## Drand Resources 33 | 34 | * The [drand website](https://drand.love/) 35 | * [Spec](https://spec.filecoin.io/libraries/drand/) 36 | * [Github Repos](https://github.com/drand) 37 | * Article – [Researchers from Protocol Labs Explain how the Drand or Distributed Randomness Project can Help with Cybersecurity, Election Audits](https://www.crowdfundinsider.com/2020/08/165618-researchers-from-protocol-labs-explain-how-the-drand-or-distributed-randomness-project-can-help-with-cybersecurity-election-audits/) -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/how-filecoin-works/anatomy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/filecoin/how-filecoin-works/anatomy.png -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/how-filecoin-works/notary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/filecoin/how-filecoin-works/notary.png -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/introduction/data-storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/filecoin/introduction/data-storage.png -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/introduction/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/filecoin/introduction/intro.png -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/objectives.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Learning Objectives" 3 | description: "Summary and Learning Goals" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-filecoin" 8 | identifier: "filecoin-objectives" 9 | weight: 10 10 | category: lecture 11 | level: 12 | - shallow 13 | - deep 14 | --- 15 | 16 | # Filecoin 17 | 18 | Filecoin is at the foundation of Protocol Labs' mission to create a distributed, decentralized internet and a foundation for a better digital future. The mission of Filecoin and [Filecoin Foundation](https://fil.org/) is to create a decentralized, efficient, and robust foundation for humanity’s information. 19 | 20 | IPFS is not a blockchain-based protocol and it alone does not include a built-in mechanism to incentivize the storage of data for other people. This is where Filecoin comes in. Filecoin is a peer-to-peer network that stores files, with built-in economic incentives to ensure files are stored reliably over time. In other words, Filecoin is a decentralized storage network that provides data persistence via a decentralized protocol, and publicly verifiable storage proofs on a blockchain. 21 | 22 | On the Filecoin network, users pay in Filecoin tokens to store their files with storage providers. Storage providers earn units of Filecoin (FIL) for storing files, and they are responsible for storing files and proving they have stored the files correctly over time. 23 | 24 | Available storage and the price of that storage is not controlled by any single company. Instead, the Filecoin network facilitates open markets for storing and retrieving files (by making storage deals between clients and providers) that anyone can participate in. At any time, users can verify that their files are being stored correctly by looking at proofs on Filecoin’s blockchain. 25 | 26 | 27 | 28 | ## Learning Objectives 29 | 30 | ### Shallow Dive Goals 31 | * **1.0 –** Understand how and why Filecoin was created, what it’s used for, and the different sub projects that have evolved to improve it’s usability & functionality 32 | * **1.1 –** Gain a basic understanding of account-based blockchain state model and economic mechanisms (shared with Ethereum and many others) 33 | * **1.2 –** Have a conceptual understanding of the sector sealing and proving process (unique replication, proof of replication, ongoing proof of space-time) 34 | * **1.3 –** Have a process understanding of deal-making, including data preparation and transport, and retrieval deals 35 | 36 | ### Deep Dive Goals 37 | * **1.4 –** Understand the Filecoin state tree as a piece of structured IPLD, and actors as state transitions 38 | * **1.5 –** Be able to explain and give examples of the concepts of storage-powered consensus, secret leader elections 39 | * **1.6 –** Understand the operation of an over-collateralized lending market on Ethereum (e.g. Aave), as an analogy to basic platform possibilities on the FVM 40 | 41 | 42 | ### Links 43 | 44 | **IPFS** | [Docs](https://docs.ipfs.io) | [GitHub](https://github.com/ipfs) - **IPLD** | [Docs](https://ipld.io/docs/) | [GitHub](https://github.com/ipld) - **libp2p** | [Docs](https://docs.libp2p.io) | [GitHub](https://github.com/libp2p) - **Filecoin** | [Docs](https://docs.filecoin.io) | [GitHub](https://github.com/filecoin-project) 45 | -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/past-recorded-sessions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Filecoin Shallow and Deep Dive Sessions" 3 | description: "Introductory, Shallow & Deep Dives into Filecoin" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-filecoin" 8 | weight: 80 9 | category: lecture 10 | --- 11 | 12 | ## Filecoin Shallow Dive 13 | 14 | This Shallow Dive explores the core topics of Filecoin including data verifiability and transfer, Filecoin as a marketplace, and a variety of use cases. 15 | 16 | {{< youtube Nr53vTbNE>}} 17 | 18 | {{< embed src="https://docs.google.com/presentation/d/e/2PACX-1vTiPMmBbDR1zI3UUMiwJGQ_NRubsKqWOueQp57uYp9MqgxtEv-o4bX7ktORf1CXn6_rMK8M1chS8OlZ/embed?start=false&loop=false&delayms=3000" frameborder="0" width="100%" height="500" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" >}} 19 | Filecoin Shallow Dive (3/28/23) 20 | 21 | ## Filecoin Deep Dive 22 | 23 | The Filecoin Deep Dive is a Q&A format discussion on the more technically complex aspects of Filecoin. 24 | {{< youtube j2UMid1ZFck>}} 25 | Filecoin Deep Dive (2/23/23) 26 | -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/protocol/chain-components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/filecoin/protocol/chain-components.png -------------------------------------------------------------------------------- /content/en/curriculum/filecoin/where-we-are-headed.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Progress & Future Work" 3 | description: "The future of Filecoin" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-filecoin" 8 | weight: 70 9 | category: lecture 10 | level: 11 | - deep 12 | --- 13 | 14 | ### Filecoin Community Roadmap 15 | 16 | * [https://github.com/filecoin-project/community/discussions/399](https://github.com/filecoin-project/community/discussions/399) 17 | 18 | ### Filecoin 2021 Milestones & Future Work 19 | 20 | {{< youtube Uya0C_lMSuY >}} 21 | 22 | ### Filecoin Ecosystem & Opportunities (Optional) 23 | 24 | {{< youtube Z7rYxoGBVjg >}} 25 | 26 | {{< youtube ApVVg78ZBog >}} 27 | 28 | ### Filecoin InterPlanetary Building Blocks (Optional) 29 | 30 | {{< youtube 3BgHJbjqbNg >}} 31 | -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-1.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-10.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-11.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-12.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-13.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-13a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-13a.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-14.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-15.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-2a.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-3.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-3a.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-4.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-6.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-7a.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-8.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-8a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-8a.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/fork-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/fork-9.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/forkfile-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/forkfile-1.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/forkfile-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/forkfile-2.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/forkfile-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/forkfile-4.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/issue-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/issue-1.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/issue-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/issue-2.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/issue-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/issue-3.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/issue-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/issue-4.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/github-guide/issue-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/github-guide/issue-5.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/levels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/getting-started/levels.png -------------------------------------------------------------------------------- /content/en/curriculum/getting-started/objectives.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Getting Started" 3 | description: "How to get started with the self-guided Launchpad curriculum." 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-intro" 8 | category: lecture 9 | weight: 10 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | This is how you get started with the self-guided Launchpad curriculum. 16 | 17 | ## What is it? 18 | 19 | The Launchpad covers topics related to Protocol Labs technologies and the wider 20 | web3 ecosystem as a whole. It is heavier on topics like decentralized file 21 | storage and peer-to-peer, but does have some coverage of blockchains and other 22 | web3 technologies. 23 | 24 | ## Sections 25 | 26 | The Launchpad curriculum is split into these topic areas: 27 | 28 | - Web3 Basics 29 | - The Protocol Labs Network 30 | - IPFS -- peer-to-peer data storage and sharing 31 | - Filecoin -- incentivized decentralized file storage 32 | - IPLD -- data-model for content addressed data 33 | - libp2p -- universal peer-to-peer networking library 34 | 35 | ## Depth Levels 36 | 37 | There are two study levels: Shallow and Deep. You select a desired level by 38 | choosing from the menu in the upper right. Some advanced sections will 39 | disappear when you select "deep". 40 | 41 | ![Levels](levels.png) 42 | 43 | ## Study approach 44 | 45 | 1. Read through the material. 46 | 2. Watch the reference videos either as you go or at the end. 47 | 3. Once you've read and watched, you are then ready to view on of our recorded 48 | Q&A sessions. In the past we would host live sessions with engineers who would 49 | talk about the technologies and answer questions. We have some of those 50 | recorded and linked for you to watch. 51 | 4. At this point you have completed everything for the async course. Your next step 52 | can be to reach out in Filecoin Slack if you have questions. Go to github 53 | and check out the associated repos. There are issues tagged as good starting tasks, if 54 | you want to start contributing. 55 | -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/additional-learning.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Additional Learning" 3 | description: "Deeper Learning and Context to Prepare you for Web3" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-ipfs" 8 | category: lecture 9 | weight: 150 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | #### The Lifecycle of Data in DWeb | IPFS Camp 2019 16 | 17 | {{< youtube ldEDa6_CT7k >}} 18 | 19 | #### IPFS Basics + Tools | ETHGlobal & Juan Benet 20 | 21 | 22 | 23 | {{< youtube ldEDa6_CT7k >}} 24 | 25 | ## Distributed Systems Course 26 | 27 | - **MIT Distributed Systems Course** 28 | - MIT 6.824 Course [Schedule & Resources](https://pdos.csail.mit.edu/6.824/schedule.html) 29 | - MIT 6.824 [Distributed Systems Course](https://pdos.csail.mit.edu/6.824/) 30 | - Course [Schedule & Resources](https://pdos.csail.mit.edu/6.824/schedule.html) 31 | - [Labs - Implementing distributed systems in Go](https://ipfs.io/ipfs/Qmcri6S86LuivUY4FDcM1phu5REXcFYootxn1GsRoqnFN4/) 32 | 33 | ## Learn Go 34 | 35 | - [A Tour of Go](https://go.dev/tour/welcome/1) is the comprehensive must-have first stop for learning golang 36 | - [Effective Go](https://go.dev/doc/effective_go) is a comprehensive manual 37 | - [Go Comments and Conventions](https://github.com/golang/go/wiki/CodeReviewComments) is a supplement 38 | - [Functional Options for friendly APIS](https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis) 39 | - [Slice Tricks for Go](https://github.com/golang/go/wiki/SliceTricks) 40 | - PLs [Distributed Systems Curriculum (with Golang)](https://docs.google.com/document/d/18mlkt3JPHP2eSeDOeCE0wafnLKv95Taj0rDh0NIus3Y/edit#heading=h.l73q2rxlx59z). Includes a tutorial on debugging and lots of good coding exercises for learning distributed systems with Go 41 | 42 | ## Computer Networks 43 | 44 | - [Coursera on _The Bits and Bytes of Computer Networking_](https://www.coursera.org/learn/computer-networking) 45 | - MIT Press book on [_Designing an Internet_](https://mitpress.mit.edu/books/designing-internet) 46 | - **Summary:** _Why the Internet was designed to be the way it is, and how it could be different, now and in the future._ 47 | 48 | ## IPFS History 49 | 50 | #### IPFS Intro & Welcome | Molly Mackinlay 51 | 52 | 53 | 54 | {{< youtube rYD2lfuatJM >}} 55 | 56 | 57 | 58 | #### Files API Coffee Talk | Jeromy Johnson 59 | 60 | 61 | 62 | {{< youtube FX_AXNDsZ9k >}} 63 | 64 | #### Bitswap Coffee Talk | Jeromy Johnson 65 | 66 | 67 | 68 | {{< youtube 9UjqJTCg_h4 >}} 69 | 70 | #### Links 71 | 72 | **IPFS** | [Docs](https://docs.ipfs.io) | [GitHub](https://github.com/ipfs) - **IPLD** | [Docs](https://ipld.io/docs/) | [GitHub](https://github.com/ipld) - **libp2p** | [Docs](https://docs.libp2p.io) | [GitHub](https://github.com/libp2p) - **Filecoin** | [Docs](https://docs.filecoin.io) | [GitHub](https://github.com/filecoin-project) 73 | -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/content-addressing/location-vs-content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/content-addressing/location-vs-content.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/content-addressing/location-vs-content2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/content-addressing/location-vs-content2.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/content-addressing/pinning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/content-addressing/pinning.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/data-exchange/file-dag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/data-exchange/file-dag.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/data-exchange/graphsync-selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/data-exchange/graphsync-selector.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/data-exchange/ledger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/data-exchange/ledger.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/data-exchange/want-block-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/data-exchange/want-block-flow.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/data-exchange/want-have-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/data-exchange/want-have-flow.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/introduction/IPFS_dist_cent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/introduction/IPFS_dist_cent.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/ipfs-resources/ecosystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/ipfs-resources/ecosystem.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/mutable-content/pinning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/mutable-content/pinning.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/objectives/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Learning Objectives" 3 | description: "Learning goals for the IPFS module" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-ipfs" 8 | identifier: "IPFS-objectives" 9 | weight: 10 10 | category: lecture 11 | level: 12 | - shallow 13 | - deep 14 | objectives: 15 | show: true 16 | showTitle: false 17 | introPage: true 18 | --- 19 | 20 | 21 | **IPFS** stands for **I**nter**P**lanetary **F**ile **S**ystem. 22 | 23 | IPFS is a distributed system for storing and accessing files, websites, applications, and data. Read more about how this works [in the docs](https://docs.ipfs.io/concepts/what-is-ipfs/). 24 | 25 | IPFS aims to [decentralize the web](https://docs.ipfs.io/concepts/what-is-ipfs/#decentralization) and connects people to information using [content addressing](https://docs.ipfs.io/concepts/what-is-ipfs/#content-addressing) instead of URLs and servers. 26 | 27 | The mission of **IPFS** is to create a resilient, upgradable, open network to preserve and grow humanity's knowledge. 28 | 29 | ![PL Logo](ipfs-logo.png) 30 | -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/objectives/ipfs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/objectives/ipfs-logo.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/past-recorded-sessions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IPFS Shallow and Deep Dive Sessions" 3 | description: "Introductory, Shallow & Deep Dives into IPFS" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-ipfs" 8 | weight: 80 9 | category: lecture 10 | --- 11 | 12 | ## IPFS Shallow Dive 13 | 14 | This Shallow Dive explores the core topics of IPFS including content addressing, routing, and transferring, and looks at a few IPFS implementations. 15 | 16 | {{< youtube sElVUVUbho0>}} 17 | 18 | {{< embed src="https://docs.google.com/presentation/d/e/2PACX-1vQ_TUBs9E4eByZDsdQqHaTYNDBeuo3lOcs7cZyliNM_IRZbrdqwwqOl7l_Tu5BUoN1D2YNtHMV8FJLs/embed?start=false&loop=false&delayms=3000" frameborder="0" width="100%" height="500" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" >}} 19 | IPFS Shallow Dive (3/23/23) 20 | 21 | ## IPFS Deep Dive 22 | 23 | The IPFS Deep Dive is a Q&A format discussion on the more technically complex aspects of IPFS. 24 | {{< youtube BmnWobcHQJE>}} 25 | IPFS Deep Dive (6/15/23) 26 | -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/subsystems-architecture/go-ipfs-subsystems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/subsystems-architecture/go-ipfs-subsystems.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/subsystems-architecture/meme-Unixfs-cid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/subsystems-architecture/meme-Unixfs-cid.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/subsystems-architecture/root-cid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/subsystems-architecture/root-cid.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/unixfs/blocks-detailed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/unixfs/blocks-detailed.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/unixfs/blocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/unixfs/blocks.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/unixfs/file-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipfs/unixfs/file-structure.png -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/unixfs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "UnixFS" 3 | description: "An introduction to UnixFS" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-ipfs" 8 | weight: 70 9 | category: lecture 10 | level: 11 | - deep 12 | objectives: 13 | show: true 14 | goals: 15 | - 1.6 16 | subgoals: 17 | - 1.61 18 | - 1.62 19 | - 1.63 20 | --- 21 | 22 | ## Introducing UnixFS 23 | By now, you already know that files and directories in IPFS are represented as Merkle DAGs. This means that the data of large files are split across several blocks. Every block needs to have some metadata that identifies what kind of data it holds. For example, consider the following directory. 24 | 25 | ![File structure sample](file-structure.png) 26 | 27 | Usually, directories and small files fit into just one block. However, large files are split across several blocks, which are linked. 28 | 29 | ![Files and directories as blocks](blocks.png) 30 | 31 | The two directories, and the `elephant.png` file, are small enough to fit into their own block. However, the `cat.jpg` file requires three blocks. When you read the blocks, it is necessary to have some information about every block, such as type (directory, file,...), size or data. IPFS uses [UnixFS](https://docs.ipfs.tech/concepts/file-systems/#unix-file-system-unixfs) to provide information for every block. 32 | 33 | ![Detailed view of the blocks](blocks-detailed.png) 34 | 35 | The first block of the `cat.jpg` file is marked as `type: file`, because it is the starting block of the file. The remaining blocks are marked as `type: raw`, because they only contain data. 36 | 37 | ## Technical Implementation 38 | In technical terms, UnixFS is a [protobuf-based](https://developers.google.com/protocol-buffers) format, which is represented by the following protobuf: 39 | 40 | ```go 41 | message Data { 42 | enum DataType { 43 | Raw = 0; 44 | Directory = 1; 45 | File = 2; 46 | Metadata = 3; 47 | Symlink = 4; 48 | HAMTShard = 5; 49 | } 50 | 51 | required DataType Type = 1; 52 | optional bytes Data = 2; 53 | optional uint64 filesize = 3; 54 | repeated uint64 blocksizes = 4; 55 | optional uint64 hashType = 5; 56 | optional uint64 fanout = 6; 57 | optional uint32 mode = 7; 58 | optional UnixTime mtime = 8; 59 | } 60 | 61 | message Metadata { 62 | optional string MimeType = 1; 63 | } 64 | 65 | message UnixTime { 66 | required int64 Seconds = 1; 67 | optional fixed32 FractionalNanoseconds = 2; 68 | } 69 | ``` 70 | 71 | * Files with a single block: 72 | - `DataType` is set to `File` 73 | - `Data` holds the content of the file 74 | - `filesize` contains the total number of bytes of the file 75 | 76 | * Files with several blocks: 77 | - `DataType` is set to `File` in the first block, and `Raw` in he remaining blocks 78 | - `filesize` contains the total number of bytes of the file 79 | - `blocksizes` list of sizes of every child node 80 | 81 | Later in the curriculum, you will learn how UnixFS is related to IPLD. You can also get more information in the [official specification](https://github.com/ipfs/specs/blob/main/UNIXFS.md). 82 | -------------------------------------------------------------------------------- /content/en/curriculum/ipfs/who-uses-ipfs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Who Uses IPFS" 3 | description: "Other Organizations and our Ecosystem" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-ipfs" 8 | weight: 165 9 | category: lecture 10 | draft: true 11 | level: 12 | - shallow 13 | - deep 14 | --- 15 | 16 | ## The Ecosystem 17 | 18 | 19 | 20 | **[The Ecosystem Directory](https://ecosystem.ipfs.io/)** 21 | 22 | Use the filters on the ecosystem directory page to explore projects by what they do, the industry, and which tooling (such as IPFS, Filecoin, kubo) to better understand what makes up the ecosystem. 23 | 24 | ![Ecosystem Directory Filter](ecosystem.png) 25 | 26 | 27 | ## Brave for Browsing 28 | 29 | IPFS has been integrated into Brave, the fast, privacy-oriented browser, reinventing the Web for users, publishers and advertisers. 30 | 31 | - [January 19, 2021: Brave Integrates IPFS](https://brave.com/brave-integrates-ipfs/) 32 | 33 | **[IPFS Support in Brave](https://brave.com/ipfs-support/)** 34 | _Brian Bondy, CTO and co-founder of Brave, January 19, 2021_ 35 | -------------------------------------------------------------------------------- /content/en/curriculum/ipld/content-addressing-cids/cid-anatomy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/content-addressing-cids/cid-anatomy.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/content-addressing-cids/cids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/content-addressing-cids/cids.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/introduction/tree_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/introduction/tree_graph.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/ipld-and-ipfs/unixfs_addon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/ipld-and-ipfs/unixfs_addon.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/merkle-dags/mutability.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/merkle-dags/mutability.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/merkle-dags/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/merkle-dags/overview.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/merkle-dags/treevstree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/merkle-dags/treevstree.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/objectives/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Learning Objectives" 3 | description: "Learning goals for the IPLD module" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-ipld" 8 | identifier: "IPLD-objectives" 9 | weight: 175 10 | category: lecture 11 | level: 12 | - shallow 13 | - deep 14 | objectives: 15 | show: true 16 | showTitle: false 17 | introPage: true 18 | --- 19 | 20 | [IPLD (InterPlanetary Linked Data) is **The Data Layer for content-addressed systems**](https://blog.ipfs.io/what-is-ipld/). It deals with all the heavy lifting in IPFS; it represents data as Merkle-DAGs with roots identified by content IDs called **CIDs**. 21 | 22 | 23 | ## How is IPLD related to IPFS? 24 | 25 | IPLD is the data layer of IPFS. But the reverse is also true because IPFS is _a_ block store for IPLD. 26 | 27 | IPLD deals with data consistency, data addressing, data relationships (graphs), content addressed data structures, data navigation and more. 28 | 29 | IPLD is generally not concerned about data storage or transports (with some caveats). 30 | 31 | IPLD does not limit itself to peer to peer systems (Amazon S3 can be a perfectly reasonable IPLD block storage system!), but in general we think peer to peer is preferable! 32 | 33 | ![](ipld-summary.png) 34 | 35 | -------------------------------------------------------------------------------- /content/en/curriculum/ipld/objectives/ipld-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/objectives/ipld-summary.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/past-recorded-sessions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "IPLD Shallow and Deep Sessions" 3 | description: "Introductory, Shallow & Deep Dives into IPLD" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-ipld" 8 | weight: 275 9 | category: lecture 10 | --- 11 | 12 | ## IPLD Shallow Dive 13 | 14 | This Shallow Dive explores the core topics of IPLD including content-address structured data, multihashes, IPLD pathing, and some use cases. 15 | 16 | {{< youtube nxyQVGy6_mI>}} 17 | IPLD Shallow Dive (3/9/23) 18 | 19 | ## IPLD Deep Dive 20 | 21 | The IPLD Deep Dive is a Q&A format discussion on the more technically complex aspects of IPLD. 22 | {{< youtube VKvGg5cVppU>}} 23 | IPLD Deep Dive (10/11/22) 24 | -------------------------------------------------------------------------------- /content/en/curriculum/ipld/the-car-format/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/the-car-format/intro.png -------------------------------------------------------------------------------- /content/en/curriculum/ipld/the-car-format/summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/ipld/the-car-format/summary.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/connections/peer-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/connections/peer-id.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/connections/streams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/connections/streams.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/core-concepts/nat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/core-concepts/nat.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/core-concepts/peering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/core-concepts/peering.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/dht/libp2p-dht-distances.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/dht/libp2p-dht-distances.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/dht/libp2p-dht-findnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/dht/libp2p-dht-findnode.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/dht/libp2p-dht-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/dht/libp2p-dht-flow.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/dht/libp2p-dht-store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/dht/libp2p-dht-store.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/nat-traversal/circuit-relay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/nat-traversal/circuit-relay.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/nat-traversal/nat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/nat-traversal/nat.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/objectives/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Learning Objectives" 3 | description: "Summary and Learning Goals" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-libp2p" 8 | identifier: "libp2p-objectives" 9 | weight: 10 10 | category: lecture 11 | level: 12 | - shallow 13 | - deep 14 | objectives: 15 | show: true 16 | showTitle: false 17 | introPage: true 18 | --- 19 | 20 | **libp2p is the networking & communication layer** for IPFS. [Visit the main website](https://libp2p.io/) for resources and information. 21 | 22 | Moving from a location-addressed system to a peer-to-peer, content addressed system presents a lot of challenges. The internet as it is, with firewalls and NATs, was designed to provide data (securely) for the traditional Web2 systems. 23 | 24 | libp2p is a modular system of *protocols*, *specifications* and *libraries* that enable the development of peer-to-peer network applications. Because of the way libp2p is architected, a lot of the needs and considerations that the web2 network was built on no longer apply. 25 | 26 | **[See the Implementations and Bundles](https://libp2p.io/implementations/)** for all of the libraries of modules you can use and bundles for different use cases available in various languages. 27 | 28 | ![](overview.png) 29 | -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/objectives/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/objectives/overview.png -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/past-recorded-sessions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Libp2p Shallow and Deep Dive Sessions" 3 | description: "Introductory, Shallow & Deep Dives into libp2p" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-libp2p" 8 | weight: 170 9 | category: lecture 10 | --- 11 | 12 | ## libp2p Shallow Dive 13 | 14 | This Shallow Dive explores the core topics of libp2p including transports, multiplexers, peer routing, implementations, and more! 15 | 16 | {{< youtube FzUcCOswxCI>}} 17 | libp2p Shallow Dive (3/9/23) 18 | 19 | ## libp2p Deep Dive 20 | 21 | The libp2p Deep Dive is a Q&A format discussion on the more technically complex aspects of libp2p. 22 | {{< youtube Tr31-VqsRYs>}} 23 | libp2p Deep Dive (10/11/22) 24 | -------------------------------------------------------------------------------- /content/en/curriculum/libp2p/pubsub/floodsub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/libp2p/pubsub/floodsub.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/objectives/PLN_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/objectives/PLN_Logo.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/objectives/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Learning Objectives" 3 | description: "Summary and Learning Goals" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-pln" 8 | identifier: "pln-objectives" 9 | weight: 1 10 | category: lecture 11 | level: 12 | - shallow 13 | - deep 14 | objectives: 15 | show: true 16 | showTitle: false 17 | introPage: true 18 | --- 19 | 20 | This section of the curriculum is all about who Protocol Labs is, as an oganization, and the different pieces that make up our network. Here you will find resources to learn about the goals and mission that unite us across organizations, the many teams and individuals that contribute to the new web3 primitives, protocols, and tools we're creating, and begin to learn about how we operate. 21 | ![PLN_Logo](PLN_Logo.png) 22 | 23 | ### Protocol Labs Vision & Mission 24 | 25 | Protocol Labs drives breakthroughs in computing to push humanity forward. 26 | 27 | **How?** 28 | 29 | * Ideas to super-powers **pipeline.** 30 | * A **network** capable of repeatable innovation. 31 | * World-class **teams** & **network**. 32 | * Network **enables** teams to be super effective. 33 | * Create, support, and grow **projects & protocols**. 34 | * Build **crypto networks** and **businesses**. 35 | * **Open Source** all the things \o/. 36 | * **Collaborate** openly with many groups. 37 | 38 | After completing this section, you will also: 39 | 40 | **Understand** 41 | 42 | * The motivations and original goals that brought about IPFS, libp2p, Filecoin etc, and how these have evolved to the present day. 43 | * What OSS projects are part of the PL Stack and what other projects, tools, and resources are being created in the PLN ecosystem. 44 | 45 | **Be Able To** 46 | 47 | * Find where communication about different open source projects is carried out (IPFS, IPLD, LibP2P, and Filecoin) and how decisions are made about the work that will be done. 48 | * Communicate the core goals of Protocol Labs as an organization as a whole, as well as the goals of some of the projects they work on. 49 | * Demonstrate use of async and open source communication by establishing public facing methods to share the outputs of your work and appropriate outreach, documentation, and communication with other Launchpad Cadets and Labbers. 50 | 51 | #### Links 52 | 53 | **IPFS** | [Docs](https://docs.ipfs.io) | [GitHub](https://github.com/ipfs) - **IPLD** | [Docs](https://ipld.io/docs/) | [GitHub](https://github.com/ipld) - **libp2p** | [Docs](https://docs.libp2p.io) | [GitHub](https://github.com/libp2p) - **Filecoin** | [Docs](https://docs.filecoin.io) | [GitHub](https://github.com/filecoin-project) 54 | -------------------------------------------------------------------------------- /content/en/curriculum/pln/pln-resources.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Quiz & Resources" 3 | description: "Explore beyond the curriculum" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-pln" 8 | identifier: "pln-resources" 9 | weight: 62 10 | category: lecture 11 | level: 12 | - shallow 13 | - deep 14 | --- 15 | ## PLN Quiz 16 | 17 | Take the [**PLN Quiz**](https://docs.google.com/forms/d/e/1FAIpQLSfin7rDiiBqV9ybs1gV-n4hEv4bXmhanmf13Czd_zvDEHIsLw/viewform?usp=sf_link) after covering the PLN module to gauge your understanding. 18 | 19 | {{< embed src="https://docs.google.com/forms/d/e/1FAIpQLSfin7rDiiBqV9ybs1gV-n4hEv4bXmhanmf13Czd_zvDEHIsLw/viewform?usp=sf_link" width="100%" height="900px" >}} 20 | 21 | ## PLN Resources 22 | * Overview 23 | * [Mission & Vision](https://protocol.almanac.io/handbook/protocol-labs-spaceport-JzKymu/mission-vision-vZcRfsOWSGzq8tUU4eHl5T1C0Jd4Xut1) 24 | * [Brief History](https://protocol.almanac.io/handbook/protocol-labs-spaceport-JzKymu/a-brief-history-0UbS7Ki4gwG0Btygfpzk5PYtGfjXiBvI) 25 | * Organizational Resources 26 | * [Starfleet Org Chart](https://www.notion.so/pl-strflt/Org-Charts-9b835d45729c4a5ba7b525005c8ab348) 27 | * [PL Talent Funnel Teams](https://www.notion.so/pl-strflt/Talent-Funnel-Teams-e8bb11d5d7f64c8b84bafdce7d33af01) 28 | * [PL EngRes Teams](https://www.notion.so/pl-strflt/PL-EngRes-Public-b5086aea86ed4f81bc7d0721c6935e1e#ea84996cf3464c53bf3119a7015f9dd5) 29 | * [Spaceport Teams](https://coda.io/d/Protocol-Labs-Spaceport_dDpJBnYeqJb/Team-and-Roles_suZpq#_luQNt) 30 | * [PLN Member Directory](https://protocol.almanac.io/handbook/protocol-labs-spaceport-JzKymu/84TYCGFm9s07JuPfNqpvCXWDLgK1EAhU) 31 | * [Mosia](https://www.mosaia.io/) 32 | 33 | 34 | **[PLN Glossary](https://protocol.almanac.io/handbook/protocol-labs-spaceport-JzKymu/glossary-ycx3uRbXUM3d7uf1EBz89msUmb1UjzR7)** 35 | 36 | 37 | **Links** 38 | 39 | **IPFS** | [Docs](https://docs.ipfs.io) | [GitHub](https://github.com/ipfs) - **IPLD** | [Docs](https://ipld.io/docs/) | [GitHub](https://github.com/ipld) - **libp2p** | [Docs](https://docs.libp2p.io) | [GitHub](https://github.com/libp2p) - **Filecoin** | [Docs](https://docs.filecoin.io) | [GitHub](https://github.com/filecoin-project) 40 | 41 | 43 | -------------------------------------------------------------------------------- /content/en/curriculum/pln/teams-in-pl/companies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/teams-in-pl/companies.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/teams-in-pl/ecosystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/teams-in-pl/ecosystem.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/teams-in-pl/engres-2022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/teams-in-pl/engres-2022.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/teams-in-pl/pln-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/teams-in-pl/pln-page.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/teams-in-pl/projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/teams-in-pl/projects.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/what-is-pl/network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/what-is-pl/network.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/what-is-pl/research-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/what-is-pl/research-pipeline.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/what-is-pl/web3-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/what-is-pl/web3-stack.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/where-we-headed/filecoin_logos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/where-we-headed/filecoin_logos.png -------------------------------------------------------------------------------- /content/en/curriculum/pln/where-we-headed/pl_projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/pln/where-we-headed/pl_projects.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/blockchains/blockchain1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/blockchains/blockchain1.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/blockchains/blockchain2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/blockchains/blockchain2.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/objectives/web1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/objectives/web1.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/objectives/web2-li.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/objectives/web2-li.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/objectives/web3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/objectives/web3.jpeg -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/avalanche.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/avalanche.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/cosmos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/cosmos.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/filecoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/filecoin.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/flow.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/near.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/near.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/polkadot-anatomy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/polkadot-anatomy.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/polkadot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/polkadot.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/scaling/solana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/scaling/solana.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/beeple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/beeple.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/blur.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/bored-ape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/bored-ape.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/crypto-kitties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/crypto-kitties.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/crypto-punks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/crypto-punks.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/dapp-visualization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/dapp-visualization.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/defi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/defi.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/loot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/loot.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/nba-top-shots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/nba-top-shots.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/nft-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/nft-history.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/smart-contracts/opensea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/smart-contracts/opensea.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/storage/arweave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/storage/arweave.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/storage/filecoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/storage/filecoin.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/storage/storj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/storage/storj.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/wallets/wallet-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/wallets/wallet-landscape.png -------------------------------------------------------------------------------- /content/en/curriculum/web3/wallets/wallet-types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/curriculum/web3/wallets/wallet-types.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/faucet-click-send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/faucet-click-send.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/faucet-metamask-with-funds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/faucet-metamask-with-funds.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/faucet-select-account-in-metamask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/faucet-select-account-in-metamask.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/faucet-transaction-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/faucet-transaction-link.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/metamask-assets-import-tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/metamask-assets-import-tokens.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/metamask-default-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/metamask-default-wallet.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/metamask-import-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/metamask-import-token.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/metamask-import-tokens-autofil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/metamask-import-tokens-autofil.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/metamask-tokens-finished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/metamask-tokens-finished.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-5000-tfil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-5000-tfil.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-add-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-add-address.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-add-number.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-add-number.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-click-deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-click-deploy.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-click-transact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-click-transact.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-copy-deploy-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-copy-deploy-address.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-create-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-create-workspace.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-default-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-default-workspace.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-deploy-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-deploy-button.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-deployed-contracts-dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-deployed-contracts-dropdown.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-edit-contract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-edit-contract.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-expand-mint-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-expand-mint-method.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-imported-contracts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-imported-contracts.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-mint-pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-mint-pending.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-new-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-new-workspace.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-select-contract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-select-contract.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-select-network-dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-select-network-dropdown.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/deploying-first-contract/remix-transaction-pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/deploying-first-contract/remix-transaction-pending.png -------------------------------------------------------------------------------- /content/en/tutorials/fvm/what-is-fvm.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/fvm/what-is-fvm.md -------------------------------------------------------------------------------- /content/en/tutorials/gitpod.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Setting up the environment" 3 | description: "Use go-libp2p to create a new stream of data" 4 | draft: false 5 | weight: 1 6 | category: info 7 | level: 8 | - deep 9 | --- 10 | 11 | dssd 12 | -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/basics/ipfs-webui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/basics/ipfs-webui.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/dekstop3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/dekstop3.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop1.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop10.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop2.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop4.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop5.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop6.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop7.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop8.png -------------------------------------------------------------------------------- /content/en/tutorials/ipfs-intro/desktop-tutorial/desktop9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipfs-intro/desktop-tutorial/desktop9.png -------------------------------------------------------------------------------- /content/en/tutorials/ipld/ipld-pathing/data-links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipld/ipld-pathing/data-links.png -------------------------------------------------------------------------------- /content/en/tutorials/ipld/ipld-pathing/docs-codecs-known.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipld/ipld-pathing/docs-codecs-known.png -------------------------------------------------------------------------------- /content/en/tutorials/ipld/ipld-pathing/index-hash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipld/ipld-pathing/index-hash.png -------------------------------------------------------------------------------- /content/en/tutorials/ipld/ipld-pathing/ipfs-ipld-pathing2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipld/ipld-pathing/ipfs-ipld-pathing2.png -------------------------------------------------------------------------------- /content/en/tutorials/ipld/ipld-pathing/ipld-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipld/ipld-pathing/ipld-repo.png -------------------------------------------------------------------------------- /content/en/tutorials/ipld/ipld-pathing/link4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/ipld/ipld-pathing/link4.png -------------------------------------------------------------------------------- /content/en/tutorials/libp2p/creating-simple-node/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/libp2p/creating-simple-node/diagram.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/create-wallet/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Creating a Wallet" 3 | description: "" 4 | draft: false 5 | menu: 6 | tutorials: 7 | parent: "tutorials-metamask-intro" 8 | weight: 10 9 | category: tutorial 10 | --- 11 | 12 | {{< beforepages text="This tutorial expects you to know what is Metamask and the main aspects of the app. Learn about Metamask in the following introduction page.">}} 13 | {{< beforepages-element page="/tutorials/metamask-intro/what-is-metamask" >}} 14 | {{< /beforepages >}} 15 | 16 | In this tutorial, we will install Metamask and set up a wallet. 17 | 18 | ## Instructions 19 | 20 | 1. Open your browser and visit the [MetaMask website](https://metamask.io/). 21 | 1. Install the wallet by clicking the **Download for** button. 22 | 1. Once you have installed MetaMask, it will open a **Get started** window. 23 | 24 | ![Get started with MetaMask.](metamask-get-started.png) 25 | 26 | 1. Follow the prompts until you MetaMask asks if you are **New to MetaMask**. 27 | 1. Because you still need an account on the Filecoin network, select **Create a wallet**. 28 | 29 | ![Create a wallet in MetaMask.](metamask-create-new-wallet.png) 30 | 31 | 1. Enter a secure password. You will use this password every time you want to open this wallet in this browser. 32 | 1. Click **Next** until you get to the **Secret Recovery Phrase** window. Read the information about what this _recovery phrase_ is on this page. 33 | 1. Once you've followed the instructions and saved your recovery phrase, click **Next**. 34 | 1. Confirm that you saved the recovery phrase correctly by clicking on the words in order. 35 | 1. Once you've done that, you should have your account set up! 36 | -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/create-wallet/metamask-create-new-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/create-wallet/metamask-create-new-wallet.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/create-wallet/metamask-get-started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/create-wallet/metamask-get-started.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/switch-networks/chainlist-allow-site-to-add-a-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/switch-networks/chainlist-allow-site-to-add-a-network.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/switch-networks/chainlist-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/switch-networks/chainlist-complete.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/switch-networks/chainlist-connect-with-metamask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/switch-networks/chainlist-connect-with-metamask.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/switch-networks/chainlist-filecoin-wallaby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/switch-networks/chainlist-filecoin-wallaby.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/switch-networks/chainlist-select-test-networks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/switch-networks/chainlist-select-test-networks.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/switch-networks/chainlist-switch-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/switch-networks/chainlist-switch-network.png -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/switch-networks/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Switch Networks" 3 | description: "" 4 | draft: false 5 | menu: 6 | tutorials: 7 | parent: "tutorials-metamask-intro" 8 | weight: 10 9 | category: tutorial 10 | --- 11 | 12 | {{< beforepages text="This tutorial expects you to have a Metamask wallet ready to use. Learn how to create it in the following tutorial.">}} 13 | {{< beforepages-element page="/tutorials/metamask-intro/create-wallet" >}} 14 | {{< /beforepages >}} 15 | 16 | By default, Metamask is connected to the **Ethereum Mainnet**. 17 | If you want to operate with other EVM-compatible tokens, you must **switch the network**. 18 | 19 | **ChainList** ([chainlist.org](https://chainlist.org/)) is a web site that provides public information about EVM networks, such as Filecoin or Polygon. 20 | In the EVM space, every network (mainnet and testnet) receives a _chain ID_, which uniquely identifies the network. 21 | 22 | In this tutorial, we will connect Metamask to the Filecoin network, specifically the _Wallaby testnet_. 23 | Although you can introduce the network details manually, ChainList offers a `Connect Wallet` button to easily add a network to Metamask. 24 | 25 | ## Instructions 26 | 27 | 1. Go to [chainlist.org](https://chainlist.org/). 28 | 1. Enable the **Testnets** toggle and enter `Filecoin` into the search bar. 29 | 30 | ![Select a testnet in Chainlist.](chainlist-select-test-networks.png) 31 | 32 | 1. Scroll down to find the **Filecoin -- Wallaby** testnet: 33 | 34 | ![Find the Filecoin Wallaby testnet in Chainlist.](chainlist-filecoin-wallaby.png) 35 | 36 | 1. In MetaMask click **Next** and then **Continue** when prompted to connect Chainlist.org to MetaMask: 37 | 38 | ![Connect Chainlist to MetaMask.](chainlist-connect-with-metamask.png) 39 | 40 | 1. Back on the Chainlist.org page, click the **Filecoin -- Wallaby** testnet connect button again. 41 | 1. In MetaMask click **Approve** when prompted to _Allow this site to add a network_: 42 | 43 | ![Allow Chainlist to change networks.](chainlist-allow-site-to-add-a-network.png) 44 | 45 | 1. Click **Switch network** when prompted by MetaMask: 46 | 47 | ![Switch networks with Chainlist.](chainlist-switch-network.png) 48 | 49 | 1. Open MetaMask, and you should see that you're now on the Filecoin Wallaby testnet: 50 | 51 | ![Complete the process with Chainlist.](chainlist-complete.png) 52 | 53 | Nice! Now we've got the Filecoin Wallaby testnet set up within MetaMask. You'll notice that our MetaMask window shows `0 TFIL`. Test-filecoin (`TFIL`) is `FIL` that has no value in the _real world_, and developers use it for testing. 54 | -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/what-is-metamask/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "What is Metamask?" 3 | description: "" 4 | draft: false 5 | menu: 6 | tutorials: 7 | parent: "tutorials-metamask-intro" 8 | weight: 1 9 | category: lecture 10 | --- 11 | 12 | **Metamask** is a crypto wallet and a gateway to blockchain apps. A crypto wallet is an address on the blockchain the points to an account that can be used to store and exchange cryptocurrency. There are different things you can use to manage your wallet, and Metamask is an application that makes it easy for applications in your browser to send and receive funds, NFTs, and more to the wallet. 13 | The main feature of Metamask is its browser extension, which is available for Brave, Chrome, Edge, Firefox, and Opera. 14 | 15 | ## The Wallet 16 | 17 | In terms of its wallet, Metamask works similar to any other crypto wallet. When you create a wallet in Metamask, a public/private key pair is generated. 18 | The public key is used to identify you in the blockchain network, and the private key is used to access your funds. 19 | 20 | ![Metamask Homepage](metamask-homepage.png) 21 | 22 | ### Private Key Management 23 | 24 | Your private key is probably the most important piece of information of any crypto wallet. 25 | For security reasons, Metamask does NOT store your private key remotely. 26 | Your private key is stored in your browser, and is only used by the Metamask app locally to sign transactions. 27 | 28 | Now, consider that a relative wants to use your computer. Without any extra protection, your wallet would be usable by anyone with access to your browser. 29 | To add another security layer, Metamask asks you to create a **password**, which you must provide every time that you want to operate with your funds. 30 | 31 | If you forget your password, you still have an opportunity to recover your funds. 32 | When setting your password, you will be asked to take of note of the **secret recovery phrase**. 33 | You must keep this recovery phrase safe, as it provides access to your Metamask wallet. 34 | 35 | ## Tokens Supported 36 | 37 | Only tokens on the Ethereum blockchain are available in Metamask (the so-called ERC-20 tokens). 38 | If you want to store a token from other blockchain, you must use a _wrapper token_. 39 | 40 | A _wrapper token_ is a token pegged to the value of another crypto. 41 | For example, the Wrapped Bitcoin (WBTC) runs on the Ethereum blockchain and takes its value from its _parent_, the Bitcoin (BTC). 42 | 43 | -------------------------------------------------------------------------------- /content/en/tutorials/metamask-intro/what-is-metamask/metamask-homepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/content/en/tutorials/metamask-intro/what-is-metamask/metamask-homepage.png -------------------------------------------------------------------------------- /data/docs-versions.yml: -------------------------------------------------------------------------------- 1 | # - group: v1.x 2 | # baseurl: "https://getbootstrap.com" 3 | # description: "Every minor and patch release from v1 is listed below." 4 | # versions: 5 | # - v: "1.0.0" 6 | # - v: "1.1.0" 7 | # - v: "1.1.1" 8 | # - v: "1.2.0" 9 | # - v: "1.3.0" 10 | # - v: "1.4.0" 11 | # 12 | # - group: v2.x 13 | # baseurl: "https://getbootstrap.com" 14 | # description: "Every minor and patch release from v2 is listed below." 15 | # versions: 16 | # - v: "2.0.0" 17 | # - v: "2.0.1" 18 | # - v: "2.0.2" 19 | # - v: "2.0.3" 20 | # - v: "2.0.4" 21 | # - v: "2.1.0" 22 | # - v: "2.1.1" 23 | # - v: "2.2.0" 24 | # - v: "2.2.1" 25 | # - v: "2.2.2" 26 | # - v: "2.3.0" 27 | # - v: "2.3.1" 28 | # - v: "2.3.2" 29 | # 30 | # - group: v3.x 31 | # baseurl: "https://getbootstrap.com/docs" 32 | # description: "Every minor and patch release from v3 is listed below. Last update was v3.4.1." 33 | # versions: 34 | # - v: "3.3" 35 | # - v: "3.4" 36 | # 37 | # - group: v4.x 38 | # baseurl: "https://getbootstrap.com/docs" 39 | # description: "Our previous major release with its minor releases. Last update was v4.6.0." 40 | # versions: 41 | # - v: "4.0" 42 | # - v: "4.1" 43 | # - v: "4.2" 44 | # - v: "4.3" 45 | # - v: "4.4" 46 | # - v: "4.5" 47 | # - v: "4.6" 48 | 49 | - group: v0.x 50 | baseurl: "/docs" 51 | description: "Current major release. Last update was v0.2.0." 52 | versions: 53 | - v: "0.1" 54 | - v: "0.2" 55 | 56 | - group: v1.x 57 | baseurl: "/docs" 58 | description: "Every minor and patch release from v1 is listed below. Last update was v1.0.0." 59 | versions: 60 | - v: "1.0" 61 | -------------------------------------------------------------------------------- /ethguides/IPFS-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/ethguides/IPFS-logo.png -------------------------------------------------------------------------------- /ethguides/intro-ipfs-filecoin.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: ? 3 | title: Introduction to IPFS and Filecoin 4 | date: 'July 24, 2022' 5 | slug: ipfs-101 6 | description: Conceptual understanding of the why and what of IPFS and FIlecoin 7 | thumbnail: 'ipfs-logo.png' 8 | length: 3 mins 9 | tags: ['101', 'web3'] 10 | author: ProtocolLabs 11 | avatar: ipfs-logo.jpg 12 | --- 13 | 14 | 15 |
16 | 17 | ## Properties of the Next Version of the Internet 18 | > _The Properties of the internet and its technologies define our human rights_ Juan Benet 2022 19 | 20 | Technologies like household automation have given women independence, and the internet has given mass accessibility to education, ideas, and collaboration on a global scale. 21 | 22 | Protocol Labs and its network organization's goal is, through the development of tecnologies, to 23 | 24 | Text text text text 25 | 26 | ### IPFS and Filecoin 27 | 28 | Text text text text 29 | 30 |
31 | 32 |
33 | 34 | ## Subtitle 35 | 36 | Text text text text 37 | 38 | ### Sub-Subtitle 39 | 40 | Text text text text 41 | 42 |
43 | -------------------------------------------------------------------------------- /ethguides/template.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: f7142 3 | title: Getting started with MetaMask 4 | date: 'Mar 27, 2022' 5 | slug: metamask-101 6 | description: Setup MetaMask for Ethereum Mainnet 7 | thumbnail: 'nft.jpg' 8 | length: 3 mins 9 | tags: ['101', 'web3'] 10 | author: ETHGlobal 11 | avatar: https://pbs.twimg.com/profile_images/1333830155287097349/rGY9wviF_400x400.jpg 12 | --- 13 | 14 |
15 | 16 | ## Subtitle 17 | 18 | Text text text text 19 | 20 | ### Sub-Subtitle 21 | 22 | Text text text text 23 | 24 |
25 | 26 |
27 | 28 | ## Subtitle 29 | 30 | Text text text text 31 | 32 | ### Sub-Subtitle 33 | 34 | Text text text text 35 | 36 |
37 | 38 |
39 | 40 | ## Subtitle 41 | 42 | Text text text text 43 | 44 | ### Sub-Subtitle 45 | 46 | Text text text text 47 | 48 |
49 | 50 |
51 | 52 | ## Subtitle 53 | 54 | Text text text text 55 | 56 | ### Sub-Subtitle 57 | 58 | Text text text text 59 | 60 |
61 | -------------------------------------------------------------------------------- /functions/hi-from-lambda.js: -------------------------------------------------------------------------------- 1 | exports.handler = (event, context, callback) => { 2 | callback (null, { 3 | statusCode: 200, 4 | headers: { 5 | 'Content-Type': 'application/json', 6 | }, 7 | body: JSON.stringify({ 8 | message: 'Hi from Lambda.', 9 | }), 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /i18n/en.toml: -------------------------------------------------------------------------------- 1 | [get-started] 2 | other = "Get Started" -------------------------------------------------------------------------------- /i18n/nl.toml: -------------------------------------------------------------------------------- 1 | [get-started] 2 | other = "Aan de slag" -------------------------------------------------------------------------------- /layouts/curriculum/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ partial "main/curriculum-page.html" . }} 3 | {{ end }} 4 | -------------------------------------------------------------------------------- /layouts/curriculum/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ $section := replaceRE `(.+?)\/(.+?)\/(.+?)$` "$2" .File.Path }} 3 | {{ $goal := resources.Get "js/react/components/curriculum/page/Goal.jsx" | babel }} 4 | {{ $goal := $goal | js.Build }} 5 | 6 | {{ $tutorial := resources.Get "js/react/components/curriculum/tutorial/Tutorial.jsx" | babel }} 7 | {{ $tutorial := $tutorial | js.Build }} 8 | 9 | 10 | 11 | 12 |
13 |
14 | 17 |
18 | {{ if ne .Params.toc false -}} 19 | 22 | {{ end -}} 23 | 24 | {{ if .Params.toc -}} 25 |
26 | {{ else -}} 27 |
36 | {{ end -}} 37 | {{ if .Site.Params.options.breadCrumb -}} 38 | 39 | 45 | {{ end }} 46 |
47 |
48 |

{{ .Title }}

49 |

{{ .Params.lead | safeHTML }}

50 | {{ if ne .Params.toc false -}} 51 | 54 | {{ end -}} 55 | 56 |
57 | 58 | {{ if .Lastmod -}} 59 |

Last edited: {{ .Lastmod.Format "January 2, 2006" }}


60 | {{ end -}} 61 | 62 | {{ .Content }} 63 | {{ if .Site.Params.editPage -}} 64 | {{ partial "main/edit-page.html" . }} 65 | {{ end -}} 66 | {{ partial "main/docs-navigation.html" . }} 67 | 74 |
75 |
76 |
77 | {{ end }} 78 | -------------------------------------------------------------------------------- /layouts/partials/footer/footer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
    6 |
  • {{ .Site.Params.footer | safeHTML }}
  • 7 |
8 |
9 |
10 |
    11 | {{ range .Site.Menus.footer -}} 12 |
  • {{ .Name }}
  • 13 | {{ end -}} 14 |
15 |
16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /layouts/partials/head/favicons.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /layouts/partials/head/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ block "head/resource-hints" . }}{{ partial "head/resource-hints.html" . }}{{ end }} 6 | {{ block "head/script-header" . }}{{ partial "head/script-header.html" . }}{{ end }} 7 | {{ block "head/stylesheet" . }}{{ partial "head/stylesheet.html" . }}{{ end }} 8 | {{ block "head/seo" . }}{{ partial "head/seo.html" . }}{{ end }} 9 | {{ block "head/favicons" . }}{{ partial "head/favicons.html" . }}{{ end }} 10 | -------------------------------------------------------------------------------- /layouts/partials/icons/tutorials-category-icon.html: -------------------------------------------------------------------------------- 1 | {{ $category := .Scratch.Get "category" }} 2 | 3 |
4 | {{ if eq $category "ipfs" }} 5 | 6 |
7 | IPFS 8 |
9 | {{ else if eq $category "libp2p" }} 10 | 11 |
12 | libp2p 13 |
14 | {{ else if eq $category "fvm" }} 15 | 16 |
17 | FVM 18 |
19 | {{ else if eq $category "web3" }} 20 | 21 |
22 | Web3 23 |
24 | {{ else }} 25 | 26 |
27 | IPLD 28 |
29 | {{ end }} 30 |
31 | -------------------------------------------------------------------------------- /layouts/partials/main/curriculum-page.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | {{ $countMap := dict }} 5 | 6 | {{ range $index, $element := .Site.Menus.curriculum -}} 7 | {{ $countMap = merge $countMap (dict (print $element.Identifier "-lecture") 0) }} 8 | {{ $countMap = merge $countMap (dict (print $element.Identifier "-tutorial") 0) }} 9 | {{ end }} 10 | 11 | {{ range .Site.RegularPages }} 12 | {{ $parentMenu := .Params.Menu.Curriculum.Parent }} 13 | {{ if eq .Section "curriculum"}} 14 | {{ $menu := print $parentMenu "-" .Params.category}} 15 | {{ $countMap = merge $countMap (dict $menu (add (index $countMap $menu) 1) ) }} 16 | {{ end }} 17 | {{ if and (eq .Section "tutorials") (ne $parentMenu nil) }} 18 | {{ $menu := print .Params.Menu.Curriculum.Parent "-tutorial" }} 19 | {{ $countMap = merge $countMap (dict $menu (add (index $countMap $menu) 1) ) }} 20 | {{ end }} 21 | {{ end }} 22 | 23 |
24 | {{ range $index, $element := .Site.Menus.curriculum -}} 25 | {{ $lecturesKey := print $element.Identifier "-" "lecture" }} 26 | {{ $tutorialsKey := print $element.Identifier "-" "tutorial" }} 27 | 28 |
29 |
30 |
31 |
32 | 33 |
34 |
35 |

{{ .Name }}

36 |
37 |
38 |
39 | {{ .Params.Description }} 40 |
41 |
42 |
43 |
44 |
{{ index $countMap $lecturesKey }} lectures
45 |
46 |
47 |
48 |
{{ index $countMap $tutorialsKey }} tutorials
49 |
50 |
51 |
52 |
53 |
54 | {{ end }} 55 |
56 |
57 |
58 | -------------------------------------------------------------------------------- /layouts/partials/main/docs-navigation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ $pageNavigationJS := resources.Get "js/react/components/curriculum/page/PageNavigation.jsx" | babel }} 4 | {{ $pageNavigationJS := $pageNavigationJS | js.Build }} 5 | 6 | -------------------------------------------------------------------------------- /layouts/partials/sidebar/curriculum-menu.html: -------------------------------------------------------------------------------- 1 | {{ $tutorialTrigger := resources.Get "js/react/components/curriculum/tutorial/TutorialTrigger.jsx" | babel }} 2 | {{ $tutorialTrigger := $tutorialTrigger | js.Build }} 3 | 4 | 5 | 6 | {{ if .Site.Params.options.collapsibleSidebar -}} 7 |
    8 | {{ $currentPage := . -}} 9 | {{ range $index, $element := .Site.Menus.curriculum -}} 10 | {{- $active := or ($currentPage.IsMenuCurrent "curriculum" .) ($currentPage.HasMenuCurrent "curriculum" .) -}} 11 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 12 |
  • 13 | 16 | {{ if .HasChildren -}} 17 |
    18 |
      19 | {{ range .Children -}} 20 | {{- $active := or ($currentPage.IsMenuCurrent "curriculum" .) ($currentPage.HasMenuCurrent "curriculum" .) -}} 21 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 22 | {{ $test := ("aa *bold*" | markdownify) }} 23 |
    • 24 | {{ if eq .Page.Params.category "tutorial" }} 25 | 26 | {{ end }} 27 | {{ if eq .Page.Params.category "lecture" }} 28 | 29 | {{ .Name }} {{ if eq .Page.Params.category "tutorial" }}(Tutorial){{ end }} 30 | {{ else }} 31 |
      32 | {{ end }} 33 |
    • 34 | {{ end -}} 35 |
    36 |
    37 | {{ end -}} 38 |
  • 39 | {{ end -}} 40 |
41 | {{ else -}} 42 | {{ $currentPage := . -}} 43 | {{ range .Site.Menus.curriculum -}} 44 |

{{ .Name }}

45 | {{ if .HasChildren -}} 46 |
    47 | {{ range .Children -}} 48 | {{- $active := or ($currentPage.IsMenuCurrent "curriculum" .) ($currentPage.HasMenuCurrent "curriculum" .) -}} 49 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 50 |
  • {{ .Name }}
  • 51 | {{ end -}} 52 |
53 | {{ end -}} 54 | {{ end -}} 55 | {{ end -}} 56 | -------------------------------------------------------------------------------- /layouts/partials/sidebar/prereq-menu.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.options.collapsibleSidebar -}} 2 |
    3 | {{ $currentPage := . -}} 4 | {{ range $index, $element := .Site.Menus.prereq -}} 5 | {{- $active := or ($currentPage.IsMenuCurrent "prereq" .) ($currentPage.HasMenuCurrent "prereq" .) -}} 6 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 7 |
  • 8 | 11 | {{ if .HasChildren -}} 12 |
    13 |
      14 | {{ range .Children -}} 15 | {{- $active := or ($currentPage.IsMenuCurrent "prereq" .) ($currentPage.HasMenuCurrent "prereq" .) -}} 16 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 17 |
    • 18 | 19 | {{ .Name }} 20 |
    • 21 | {{ end -}} 22 |
    23 |
    24 | {{ end -}} 25 |
  • 26 | {{ end -}} 27 |
28 | {{ else -}} 29 | {{ $currentPage := . -}} 30 | {{ range .Site.Menus.prereq -}} 31 |

{{ .Name }}

32 | {{ if .HasChildren -}} 33 |
    34 | {{ range .Children -}} 35 | {{- $active := or ($currentPage.IsMenuCurrent "prereq" .) ($currentPage.HasMenuCurrent "prereq" .) -}} 36 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 37 |
  • {{ .Name }}
  • 38 | {{ end -}} 39 |
40 | {{ end -}} 41 | {{ end -}} 42 | {{ end -}} 43 | -------------------------------------------------------------------------------- /layouts/partials/sidebar/resources-menu.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.options.collapsibleSidebar -}} 2 |
    3 | {{ $currentPage := . -}} 4 | {{ range $index, $element := .Site.Menus.resources -}} 5 | {{- $active := or ($currentPage.IsMenuCurrent "resources" .) ($currentPage.HasMenuCurrent "resources" .) -}} 6 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 7 |
  • 8 | 11 | {{ if .HasChildren -}} 12 |
    13 |
      14 | {{ range .Children -}} 15 | {{- $active := or ($currentPage.IsMenuCurrent "resources" .) ($currentPage.HasMenuCurrent "resources" .) -}} 16 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 17 |
    • 18 | 19 | {{ .Name }} 20 |
    • 21 | {{ end -}} 22 |
    23 |
    24 | {{ end -}} 25 |
  • 26 | {{ end -}} 27 |
28 | {{ else -}} 29 | {{ $currentPage := . -}} 30 | {{ range .Site.Menus.resources -}} 31 |

{{ .Name }}

32 | {{ if .HasChildren -}} 33 |
    34 | {{ range .Children -}} 35 | {{- $active := or ($currentPage.IsMenuCurrent "resources" .) ($currentPage.HasMenuCurrent "resources" .) -}} 36 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 37 |
  • {{ .Name }}
  • 38 | {{ end -}} 39 |
40 | {{ end -}} 41 | {{ end -}} 42 | {{ end -}} 43 | -------------------------------------------------------------------------------- /layouts/partials/sidebar/tutorials-menu.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.options.collapsibleSidebar -}} 2 |
    3 | {{ $currentPage := . -}} 4 | {{ range $index, $element := where .Site.Menus.tutorials "Identifier" $currentPage.Params.Menu.Tutorials.Parent -}} 5 |
    6 | 7 | {{ .Name }} 8 |
    9 |
  • 10 | {{ if .HasChildren -}} 11 |
    12 |
      13 | {{- $active := or ($currentPage.IsMenuCurrent "tutorials" .) ($currentPage.HasMenuCurrent "tutorials" .) -}} 14 | {{- $active = or $active (eq $currentPage.Section "gitpod") -}} 15 | 19 | {{ range .Children -}} 20 | {{- $active := or ($currentPage.IsMenuCurrent "tutorials" .) ($currentPage.HasMenuCurrent "tutorials" .) -}} 21 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 22 |
    • 23 | {{ if eq .Page.Params.category "lecture" }} 24 | 25 | {{ else if eq .Page.Params.category "tutorial" }} 26 | 27 | {{ else if eq .Page.Params.category "info" }} 28 | 29 | {{ end }} 30 | {{ .Name }} 31 |
    • 32 | {{ end -}} 33 |
    34 |
    35 | {{ end -}} 36 |
  • 37 | {{ end -}} 38 |
39 | {{ else -}} 40 | {{ $currentPage := . -}} 41 | {{ range .Site.Menus.tutorials -}} 42 |

{{ .Name }}

43 | {{ if .HasChildren -}} 44 |
    45 | {{ range .Children -}} 46 | {{- $active := or ($currentPage.IsMenuCurrent "tutorials" .) ($currentPage.HasMenuCurrent "tutorials" .) -}} 47 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 48 |
  • {{ .Name }}
  • 49 | {{ end -}} 50 |
51 | {{ end -}} 52 | {{ end -}} 53 | {{ end -}} 54 | -------------------------------------------------------------------------------- /layouts/partials/sidebar/unified-menu.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.options.collapsibleSidebar -}} 2 |
    3 | {{ $currentPage := . -}} 4 | {{ range $index, $element := .Site.Menus.curriculum -}} 5 | {{- $active := or ($currentPage.IsMenuCurrent "curriculum" .) ($currentPage.HasMenuCurrent "curriculum" .) -}} 6 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 7 |
  • 8 | 11 | {{ if .HasChildren -}} 12 |
    13 |
      14 | {{ range .Children -}} 15 | {{- $active := or ($currentPage.IsMenuCurrent "curriculum" .) ($currentPage.HasMenuCurrent "curriculum" .) -}} 16 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 17 |
    • 18 | {{ if eq .Page.Params.category "lecture" }} 19 | 20 | {{ else }} 21 | 22 | {{ end }} 23 | {{ .Name }} 24 |
    • 25 | {{ end -}} 26 |
    27 |
    28 | {{ end -}} 29 |
  • 30 | {{ end -}} 31 |
32 | {{ else -}} 33 | {{ $currentPage := . -}} 34 | {{ range .Site.Menus.curriculum -}} 35 |

{{ .Name }}

36 | {{ if .HasChildren -}} 37 |
    38 | {{ range .Children -}} 39 | {{- $active := or ($currentPage.IsMenuCurrent "curriculum" .) ($currentPage.HasMenuCurrent "curriculum" .) -}} 40 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 41 |
  • {{ .Name }}
  • 42 | {{ end -}} 43 |
44 | {{ end -}} 45 | {{ end -}} 46 | {{ end -}} 47 | -------------------------------------------------------------------------------- /layouts/prerequisites/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 | 7 |
8 | {{ if ne .Params.toc false -}} 9 | 12 | {{ end -}} 13 | {{ if .Params.toc -}} 14 |
15 | {{ else -}} 16 |
17 | {{ end -}} 18 | {{ if .Site.Params.options.breadCrumb -}} 19 | 20 | 26 | {{ end }} 27 |

{{ .Title }}

28 |

{{ .Params.lead | safeHTML }}

29 | {{ if ne .Params.toc false -}} 30 | 33 | {{ end -}} 34 | {{ .Content }} 35 | {{ if .Site.Params.editPage -}} 36 | {{ partial "main/edit-page.html" . }} 37 | {{ end -}} 38 | {{ partial "main/docs-navigation.html" . }} 39 | 46 |
47 |
48 | {{ end }} 49 | -------------------------------------------------------------------------------- /layouts/resources/about/list.html: -------------------------------------------------------------------------------- 1 | list dsdssd 2 | -------------------------------------------------------------------------------- /layouts/resources/about/single.html: -------------------------------------------------------------------------------- 1 | dsdsd 2 | -------------------------------------------------------------------------------- /layouts/resources/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 | 7 |
8 | {{ if ne .Params.toc false -}} 9 | 12 | {{ end -}} 13 | {{ if .Params.toc -}} 14 |
15 | {{ else -}} 16 |
17 | {{ end -}} 18 | {{ if .Site.Params.options.breadCrumb -}} 19 | 20 | 26 | {{ end }} 27 |

{{ .Title }}

28 |

{{ .Params.lead | safeHTML }}

29 | {{ if ne .Params.toc false -}} 30 | 33 | {{ end -}} 34 | {{ .Content }} 35 | {{ if .Site.Params.editPage -}} 36 | {{ partial "main/edit-page.html" . }} 37 | {{ end -}} 38 | {{ partial "main/docs-navigation.html" . }} 39 | 46 |
47 |
48 | {{ end }} 49 | -------------------------------------------------------------------------------- /layouts/shortcodes/beforepages-element.html: -------------------------------------------------------------------------------- 1 | {{ with .Site.GetPage (.Get "page") }} 2 | {{ $pageMenuId := .Params.Menu.Tutorials.Parent }} 3 | {{ $pageMenu := "" }} 4 | {{ range $index, $element := where .Site.Menus.tutorials "Identifier" $pageMenuId -}} 5 | {{ $pageMenu = $element }} 6 | {{ end }} 7 |
8 |
{{ $pageMenu.Name }}
9 | 10 |
11 | 12 |
{{ .Title }}
13 |
14 |
15 |
16 | {{ end }} 17 | -------------------------------------------------------------------------------- /layouts/shortcodes/beforepages.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
Before You Begin
4 | {{ .Get "text" }} 5 |
6 |
7 | {{ .Inner }} 8 |
9 |
10 | -------------------------------------------------------------------------------- /layouts/shortcodes/embed.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layouts/shortcodes/instructions.html: -------------------------------------------------------------------------------- 1 |
2 |
{{ .Inner }}
3 |
4 | -------------------------------------------------------------------------------- /layouts/shortcodes/level.html: -------------------------------------------------------------------------------- 1 | 2 | {{ .Inner }} 3 | -------------------------------------------------------------------------------- /layouts/shortcodes/prerequisites.html: -------------------------------------------------------------------------------- 1 |
2 |
{{ .Inner }}
3 |
4 | -------------------------------------------------------------------------------- /layouts/tutorials/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | 3 |
4 |
5 | 8 |
9 | {{ if ne .Params.toc false -}} 10 | 13 | {{ end -}} 14 | {{ if .Params.toc -}} 15 |
16 | {{ else -}} 17 |
18 | {{ end -}} 19 | {{ if .Site.Params.options.breadCrumb -}} 20 | 21 | 27 | {{ end }} 28 |

{{ .Title }}

29 |

{{ .Params.lead | safeHTML }}

30 | {{ if ne .Params.toc false -}} 31 | 34 | {{ end -}} 35 | {{ .Content }} 36 | {{ if .Site.Params.editPage -}} 37 | {{ partial "main/edit-page.html" . }} 38 | {{ end -}} 39 | {{ partial "main/docs-navigation.html" . }} 40 | 47 |
48 |
49 | 50 | {{ end }} 51 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "public" 3 | functions = "functions" 4 | 5 | [build.environment] 6 | NODE_VERSION = "16.15.0" 7 | NPM_VERSION = "8.5.5" 8 | 9 | [context.production] 10 | command = "npm run build" 11 | 12 | [context.deploy-preview] 13 | command = "npm run build -- -b $DEPLOY_PRIME_URL" 14 | 15 | [context.branch-deploy] 16 | command = "npm run build -- -b $DEPLOY_PRIME_URL" 17 | 18 | [context.next] 19 | command = "npm run build" 20 | 21 | [context.next.environment] 22 | HUGO_ENV = "next" 23 | 24 | [[plugins]] 25 | package = "netlify-plugin-submit-sitemap" 26 | 27 | [plugins.inputs] 28 | baseUrl = "https://doks-child-theme.netlify.app/" 29 | sitemapPath = "/sitemap.xml" 30 | ignorePeriod = 0 31 | providers = [ 32 | "google", 33 | "bing", 34 | "yandex" 35 | ] 36 | 37 | [dev] 38 | framework = "#custom" 39 | command = "npm run start" 40 | targetPort = 1313 41 | port = 8888 42 | publish = "public" 43 | autoLaunch = false 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "doks-child-theme", 3 | "description": "Doks child theme", 4 | "version": "0.4.3", 5 | "engines": { 6 | "node": ">=16.15.0" 7 | }, 8 | "browserslist": [ 9 | "defaults" 10 | ], 11 | "repository": "https://github.com/h-enk/doks", 12 | "license": "MIT", 13 | "publishConfig": { 14 | "access": "public" 15 | }, 16 | "scripts": { 17 | "init": "shx rm -rf .git && git init -b main", 18 | "create": "exec-bin node_modules/.bin/hugo/hugo new", 19 | "prestart": "npm run clean", 20 | "start": "exec-bin node_modules/.bin/hugo/hugo server --bind=0.0.0.0 --disableFastRender", 21 | "prebuild": "npm run clean", 22 | "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", 23 | "build:preview": "npm run build -D -F", 24 | "clean": "shx rm -rf public resources", 25 | "clean:install": "shx rm -rf package-lock.json node_modules ", 26 | "lint": "npm run -s lint:scripts && npm run -s lint:styles && npm run -s lint:markdown", 27 | "lint:scripts": "eslint assets/js config functions", 28 | "lint:styles": "stylelint \"assets/scss/**/*.{css,sass,scss,sss,less}\"", 29 | "lint:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", 30 | "lint:markdown-fix": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", 31 | "server": "exec-bin node_modules/.bin/hugo/hugo server", 32 | "test": "npm run -s lint", 33 | "env": "env", 34 | "precheck": "npm version", 35 | "check": "exec-bin node_modules/.bin/hugo/hugo version", 36 | "copy:katex-fonts": "shx cp ./node_modules/katex/dist/fonts/* ./static/fonts/", 37 | "postinstall": "hugo-installer --version otherDependencies.hugo --extended --destination node_modules/.bin/hugo", 38 | "version": "auto-changelog -p && git add CHANGELOG.md" 39 | }, 40 | "devDependencies": { 41 | "@babel/cli": "^7.22", 42 | "@babel/core": "^7.22", 43 | "@babel/preset-env": "^7.22", 44 | "@babel/preset-react": "^7.22.5", 45 | "@fullhuman/postcss-purgecss": "^4.1", 46 | "@hyas/doks": "^0.4", 47 | "@popperjs/core": "^2.11.8", 48 | "auto-changelog": "^2.4.0", 49 | "autoprefixer": "^10.4.15", 50 | "bootstrap": "^5.3.1", 51 | "clipboard": "^2.0", 52 | "eslint": "^8.48.0", 53 | "exec-bin": "^1.0.0", 54 | "flexsearch": "^0.7.31", 55 | "highlight.js": "^11.8.0", 56 | "hugo-installer": "^4.0", 57 | "instant.page": "^5.2.0", 58 | "katex": "^0.15", 59 | "lazysizes": "^5.3", 60 | "markdownlint-cli2": "^0.4.0", 61 | "netlify-plugin-submit-sitemap": "^0.3.0", 62 | "postcss": "^8.4.31", 63 | "postcss-cli": "^9.1", 64 | "purgecss-whitelister": "^2.4", 65 | "react": "18.2.0", 66 | "react-bootstrap": "2.5.0", 67 | "react-dom": "^18.2.0", 68 | "shx": "^0.3", 69 | "stylelint": "^14.16.1", 70 | "stylelint-config-standard-scss": "^3.0", 71 | "tailwindcss": "^3.3.3" 72 | }, 73 | "otherDependencies": { 74 | "hugo": "0.101.0" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /static/css/tailwind-input.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | body { 7 | @apply text-pl-dark-blue; 8 | @apply text-4xl lg:text-xl; 9 | @apply lg:leading-relaxed; 10 | } 11 | 12 | h1 { 13 | @apply text-5xl lg:text-4xl; 14 | } 15 | 16 | h2 { 17 | @apply text-4xl lg:text-3xl; 18 | } 19 | 20 | h3 { 21 | @apply text-3xl lg:text-2xl; 22 | } 23 | 24 | h4 { 25 | @apply text-2xl lg:text-xl; 26 | } 27 | } 28 | 29 | @layer components { 30 | .button-primary { 31 | @apply bg-pl-dark-blue text-pl-gray; 32 | @apply text-2xl lg:text-base; 33 | } 34 | 35 | .button-secondary { 36 | @apply text-2xl lg:text-base; 37 | } 38 | } 39 | 40 | .nav-brand { 41 | width: 7rem; 42 | } 43 | 44 | .split-word { 45 | padding-right: 5px; 46 | } 47 | 48 | .home-header_component { 49 | max-width: unset; 50 | } 51 | 52 | .lp-icon { 53 | display: block; 54 | margin-right: 10px; 55 | width: 30px; 56 | height: 30px; 57 | } 58 | -------------------------------------------------------------------------------- /static/icons/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/arrow-down.png -------------------------------------------------------------------------------- /static/icons/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/arrow-right.png -------------------------------------------------------------------------------- /static/icons/bulb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/bulb.png -------------------------------------------------------------------------------- /static/icons/devtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/devtools.png -------------------------------------------------------------------------------- /static/icons/goal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/goal.png -------------------------------------------------------------------------------- /static/icons/hello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/hello.png -------------------------------------------------------------------------------- /static/icons/lecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/lecture.png -------------------------------------------------------------------------------- /static/icons/prereq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/prereq.png -------------------------------------------------------------------------------- /static/icons/resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/resource.png -------------------------------------------------------------------------------- /static/icons/sf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/sf.png -------------------------------------------------------------------------------- /static/icons/shuttle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/shuttle.png -------------------------------------------------------------------------------- /static/icons/tutorial-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/tutorial-book.png -------------------------------------------------------------------------------- /static/icons/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/icons/tutorial.png -------------------------------------------------------------------------------- /static/images/Karla-under-4-LPW_qldyrv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/images/Karla-under-4-LPW_qldyrv.jpg -------------------------------------------------------------------------------- /static/images/ally.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/images/ally.jpeg -------------------------------------------------------------------------------- /static/images/diego.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/images/diego.jpeg -------------------------------------------------------------------------------- /static/images/joao.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/images/joao.jpeg -------------------------------------------------------------------------------- /static/images/lp-center-planet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/images/lp-center-planet.jpg -------------------------------------------------------------------------------- /static/images/slide_wave.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/images/slide_wave.jpg -------------------------------------------------------------------------------- /static/ipfs-404.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /static/js/anim-1.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", () => { 2 | gsap.registerPlugin(ScrollTrigger); 3 | 4 | const animBlocks = [...document.querySelectorAll(".anim-1")]; 5 | gsap.set(".anim-1", { autoAlpha: 1 }); 6 | 7 | animBlocks.forEach((block) => { 8 | const children = block.children; 9 | 10 | const tl = new gsap.timeline({ 11 | defaults: { 12 | duration: 1.2, 13 | ease: "power3.inOut", 14 | stagger: { 15 | each: 0.1 16 | } 17 | }, 18 | scrollTrigger: { 19 | trigger: block, 20 | start: "top 80%" 21 | } 22 | }); 23 | 24 | tl.from(children, { opacity: 0, y: "50%" }); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /static/js/anim-2.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", () => { 2 | gsap.registerPlugin(ScrollTrigger); 3 | 4 | const animBlocks = [...document.querySelectorAll(".anim-2")]; 5 | gsap.set(".anim-2", { autoAlpha: 1 }); 6 | 7 | animBlocks.forEach((block) => { 8 | const children = block.children; 9 | 10 | const tl = new gsap.timeline({ 11 | defaults: { 12 | duration: 1.2, 13 | ease: "power3.inOut", 14 | stagger: { 15 | each: 0.1 16 | } 17 | }, 18 | scrollTrigger: { 19 | trigger: block, 20 | start: "top 80%" 21 | } 22 | }); 23 | 24 | tl.from(children, { opacity: 0, y: "80%", x: "80%" }); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /static/js/nav.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", () => { 2 | gsap.registerPlugin(ScrollTrigger); 3 | 4 | //mobile nav settings 5 | if (window.innerWidth < 768) { 6 | const navButton = document.querySelector(".nav-button"); 7 | const navLines = [...navButton.querySelectorAll(".nav-button-line")]; 8 | const navWrapper = document.querySelector(".nav-links"); 9 | const navLinks = [...document.querySelector(".nav-links-wrapper").children]; 10 | 11 | const tl = new gsap.timeline({ 12 | defaults: { 13 | duration: 0.5, 14 | ease: "power3.inOut" 15 | } 16 | }); 17 | 18 | tl.paused(true); 19 | 20 | tl.to(navWrapper, { height: "100dvh" }) 21 | .to(navButton, { backgroundColor: "#002256" }, "<") 22 | .to(navLines, { backgroundColor: "#ffffff" }, "<") 23 | .to(".nav-logo.is-light", { opacity: 0 }, "<") 24 | .to(".nav-logo.is-dark", { opacity: 1 }, "<") 25 | .from( 26 | navLines[0], 27 | { 28 | y: "-3px" 29 | }, 30 | "<" 31 | ) 32 | .from( 33 | navLines[1], 34 | { 35 | y: "3px" 36 | }, 37 | "<" 38 | ) 39 | .from( 40 | navLinks, 41 | { 42 | y: "100%", 43 | opacity: 0, 44 | delay: 0.5, 45 | stagger: { 46 | each: 0.05 47 | } 48 | }, 49 | "<" 50 | ) 51 | .to( 52 | navLines[0], 53 | { 54 | rotateZ: "45deg" 55 | }, 56 | "<" 57 | ) 58 | .to( 59 | navLines[1], 60 | { 61 | rotateZ: "-45deg" 62 | }, 63 | "<" 64 | ); 65 | 66 | navButton.onclick = () => { 67 | if (navButton.classList.contains("is-open")) { 68 | navButton.classList.remove("is-open"); 69 | tl.reverse(); 70 | } else { 71 | navButton.classList.add("is-open"); 72 | tl.restart(); 73 | } 74 | }; 75 | } 76 | 77 | //hide nav on scroll 78 | const nav = document.querySelector(".nav"); 79 | let scrollPos = window.scrollY; 80 | 81 | window.onscroll = () => { 82 | if (scrollPos < window.scrollY && window.scrollY > 100) { 83 | scrollPos = window.scrollY; 84 | gsap.to(nav, { opacity: 0, y: "-100%" }); 85 | } else { 86 | scrollPos = window.scrollY; 87 | gsap.to(nav, { opacity: 1, y: "0%" }); 88 | } 89 | }; 90 | 91 | //make nav dark 92 | const darkSections = [...document.querySelectorAll("[data-nav='dark']")]; 93 | 94 | function addDarkNav() { 95 | nav.classList.add("is-dark"); 96 | } 97 | 98 | function removeDarkNav() { 99 | nav.classList.remove("is-dark"); 100 | } 101 | 102 | darkSections.forEach((section) => { 103 | ScrollTrigger.create({ 104 | trigger: section, 105 | start: "top top", 106 | end: "bottom top", 107 | onEnter: () => { 108 | addDarkNav(); 109 | }, 110 | onEnterBack: () => { 111 | addDarkNav(); 112 | }, 113 | onLeave: () => { 114 | removeDarkNav(); 115 | }, 116 | onLeaveBack: () => { 117 | removeDarkNav(); 118 | } 119 | }); 120 | }); 121 | }); 122 | -------------------------------------------------------------------------------- /static/js/text-intro.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", () => { 2 | gsap.registerPlugin(ScrollTrigger); 3 | 4 | const text = new SplitType(".split-type", { 5 | types: "lines, words", 6 | lineClass: "split-line", 7 | wordClass: "split-word" 8 | }); 9 | 10 | const splitBlocks = [...document.querySelectorAll(".split-type")]; 11 | gsap.set(".split-type", { autoAlpha: 1 }); 12 | 13 | for (const block of splitBlocks) { 14 | const words = block.querySelectorAll(".split-word"); 15 | 16 | const tl = new gsap.timeline({ 17 | defaults: { 18 | duration: 1.5, 19 | ease: "power4.out" 20 | }, 21 | scrollTrigger: { 22 | trigger: block, 23 | start: "top 80%" 24 | } 25 | }); 26 | 27 | tl.from(words, { y: "120%" }); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /static/logos/blockchain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/blockchain.png -------------------------------------------------------------------------------- /static/logos/filecoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/filecoin.png -------------------------------------------------------------------------------- /static/logos/fvm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/fvm.png -------------------------------------------------------------------------------- /static/logos/ipfs.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/logos/ipld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/ipld.png -------------------------------------------------------------------------------- /static/logos/launchpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/launchpad.png -------------------------------------------------------------------------------- /static/logos/libp2p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/libp2p.png -------------------------------------------------------------------------------- /static/logos/lp-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/lp-logo.png -------------------------------------------------------------------------------- /static/logos/lp-primary-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/lp-primary-color.png -------------------------------------------------------------------------------- /static/logos/lp-primary-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/lp-primary-white.png -------------------------------------------------------------------------------- /static/logos/metamask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/metamask.png -------------------------------------------------------------------------------- /static/logos/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/logos/pl.png -------------------------------------------------------------------------------- /static/tutorials/fvm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/tutorials/fvm.png -------------------------------------------------------------------------------- /static/tutorials/intro-ipfs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/tutorials/intro-ipfs.png -------------------------------------------------------------------------------- /static/tutorials/libp2p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/tutorials/libp2p.png -------------------------------------------------------------------------------- /static/tutorials/metamask.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/static/tutorials/metamask.jpeg -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | 3 | const colors = require("tailwindcss/colors"); 4 | 5 | module.exports = { 6 | content: ["content/*.md", "layouts/**/*.html"], 7 | theme: { 8 | extend: { 9 | colors: { 10 | "pl-blue": "#2c7df7", 11 | "pl-dark-blue": "#002256", 12 | "pl-gray": "#f6f7fa", 13 | "pl-recruiting-blue": "#156ff7", 14 | }, 15 | }, 16 | plugins: [], 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /templates/dev-tool-temp.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Project Name" 3 | description: "Project Name – Brief Description" 4 | draft: false 5 | menu: 6 | curriculum: 7 | parent: "curriculum-devtools" 8 | weight: 0 9 | category: lecture 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | ## #### Introduction 16 | 17 | Two paragraphs or so, brief intro 18 | 19 | 20 | ### Why ? 21 | 22 | Paragraph or two about benefits and use cases 23 | 24 | 25 | ### Details/ Sub Projects 26 | **Sub-Project 1** 27 | 28 | **Sub-Project 2** 29 | 30 | **Sub-Project 3** 31 | 32 | Add in more in-depth information about the technology, digrams, sub-projects and tools 33 | 34 | 35 | ## Tutorials 36 | 37 | **_A written tutorial, or a list of Prerequisites and a curated list of suggested tutorials. We should also make a google form for collecting evidence of doing this tutorial_** 38 | 39 | 40 | ## Cheat Sheet (optional) 41 | 42 | 43 | ### _Common commands_ 44 | 45 | 46 | ## Resources 47 | 48 | 49 | _A list of_ 50 | * blogs 51 | * websites 52 | * videos 53 | * github repos 54 | 55 | 56 | 57 | Resources 58 | 59 | 60 | 61 | * Links to docs 62 | * Tutorials 63 | * Talks & Videos 64 | * Contact info (github repos, Slack Channels, forums, etc) 65 | -------------------------------------------------------------------------------- /templates/tutorial-identifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/templates/tutorial-identifier.png -------------------------------------------------------------------------------- /templates/tutorial-temp.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Title (Tutorial)" 3 | description: "Deep/Shallow Dive Tutorial – Subtitle" 4 | draft: false 5 | menu: 6 | tutorials: 7 | parent: "" 8 | weight: 0 9 | category: tutorial 10 | level: 11 | - shallow 12 | - deep 13 | --- 14 | 15 | ## Background 16 | short ~1-2 paragraphs with context 17 | 18 | ## Prerequisites 19 | Write about _all_ software and dependencies you will need to have installed, with relevant links to resources for where you can download/ read instruction on how to install 20 | * NodeJS vx.xx.xx 21 | * Go Version x.xx ^ 22 | * Even things like Homebrew 23 | 24 | 25 | ## Instructions 26 | Sentence? 27 | 28 | ### Video 29 | 30 | {{< youtube i100RhwZUnQ >}} 31 | 32 | 33 | 34 | ### Title 1 that describes what you will do 35 | Information & context 36 | * Specific to-do `command` 37 | * Specific to-do 38 | ``` 39 | some code 40 | 41 | ``` 42 | ### Title 2 that describes what you will do 43 | Information & context 44 | * Specific to-do `command` 45 | * Specific to-do 46 | ``` 47 | some code 48 | 49 | ``` 50 | ### Title 3 that describes what you will do 51 | Information & context 52 | * Specific to-do `command` 53 | * Specific to-do 54 | ``` 55 | some code 56 | 57 | ``` 58 | 59 | ### Title n that describes what you will do 60 | Information & context 61 | * Specific to-do `command` 62 | * Specific to-do 63 | ``` 64 | some code 65 | 66 | ``` 67 | 68 | 69 | Now you can ----- . Next you will/can learn to ... See an example of the completed code **** 70 | 71 | #### Resources 72 | * [Video Script]() 73 | * [Docs]() 74 | * Other Thing 75 | -------------------------------------------------------------------------------- /templates/tutorials-modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/templates/tutorials-modules.png -------------------------------------------------------------------------------- /templates/weight-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/launchpad/b17ecb9250bff5708f9a13a2cb5a83c2da9e9681/templates/weight-example.png -------------------------------------------------------------------------------- /theme.toml: -------------------------------------------------------------------------------- 1 | name = "Doks child theme" 2 | license = "MIT" 3 | licenselink = "https://github.com/h-enk/doks/blob/master/LICENSE" 4 | description = "Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." 5 | 6 | homepage = "https://github.com/h-enk/doks-child-theme" 7 | demosite = "https://doks-child-theme.netlify.app" 8 | 9 | tags = ["landing page", "documentation", "blog", "minimal", "modern", "customizable", "search", "dark mode", "bootstrap"] 10 | features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "dark mode"] 11 | 12 | [author] 13 | name = "Protocol Labs Launchpad Team" 14 | homepage = "https://github.com/protocol" 15 | --------------------------------------------------------------------------------