{"version":3,"sources":["articles/Intro.js","helpers.js","components/Logo.js","components/DfinityLogo.js","components/Header.js","components/Code.js","components/Demo.js","components/Article.js","images/board1.jpg","articles/A01.js","images/board2.jpg","articles/A02.js","images/board3.jpg","articles/A03.js","images/board4.jpg","articles/A04.js","images/board5.jpg","articles/A05.js","images/board6.jpg","articles/A06.js","images/board7.jpg","articles/A07.js","images/board8.jpg","articles/A08.js","images/board9.jpg","articles/A09.js","App.js","index.js"],"names":["Intro","className","PUBLIC_URL","process","Logo","width","style","viewBox","fill","xmlns","d","id","x1","y1","x2","y2","gradientUnits","offset","stopColor","DfinityLogo","ratio","logoWidth","Math","floor","wordWidth","gapWidth","marginRight","Header","background","Placeholder","height","marginLeft","marginTop","Code","type","children","Demo","story","frontend","canister","activeTab","setActiveTab","React","useState","tabContents","src","loading","alt","role","map","tabName","index","onClick","Article","props","heading","image","imageDescription","demo","A01","board1","A02","board2","A03","board3","A04","board4","A05","board5","A06","board6","A07","board7","A08","board8","A09","board9","App","Object","entries","articles","_","Component","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"6fAEO,SAASA,IACd,OACE,oCACE,iLAKA,oCACE,+DAC+B,uBAD/B,uBAIA,qBAAKC,UAAU,cAAf,SACE,sQAKE,+BACE,qGACA,uGAGA,0GAVJ,kLChBH,MAAM,WAAEC,GAAeC,mICGvB,SAASC,GAAK,MAAEC,EAAQ,IAAV,MAAeC,EAAQ,KAC1C,OACE,sBACED,MAAOA,EACPC,MAAOA,EACPC,QAAQ,aACRC,KAAK,OACLC,MAAM,6BALR,UAOE,sBACEC,EAAE,gnBACFF,KAAK,wBAEP,sBACEE,EAAE,wnBACFF,KAAK,wBAEP,sBACEE,EAAE,khBACFF,KAAK,YAEP,iCACE,iCACEG,GAAG,gBACHC,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,GAAG,SACHC,cAAc,iBANhB,UAQE,sBAAMC,OAAO,OAAOC,UAAU,YAC9B,sBAAMD,OAAO,SAASC,UAAU,eAElC,iCACEP,GAAG,gBACHC,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,cAAc,iBANhB,UAQE,sBAAMC,OAAO,OAAOC,UAAU,YAC9B,sBAAMD,OAAO,SAASC,UAAU,qBCzCnC,SAASC,GAAY,MAAEd,EAAQ,MACpC,MAAMe,EAAQf,EAAQ,IAChBgB,EAAYC,KAAKC,MAAc,IAARH,GACvBI,EAAYF,KAAKC,MAAc,IAARH,GACvBK,EAAWH,KAAKC,MAAc,GAARH,GAE5B,OACE,uBAAMnB,UAAU,wBAAhB,UACE,cAACG,EAAD,CAAMC,MAAOgB,EAAWf,MAAO,CAAEoB,YAAc,GAAED,SACjD,sBACEpB,MAAOmB,EACPjB,QAAQ,aACRC,KAAK,OACLC,MAAM,6BAJR,UAME,sBACEC,EAAE,+WACFF,KAAK,UAEP,sBACEE,EAAE,uaACFF,KAAK,UAEP,sBACEE,EAAE,+OACFF,KAAK,UAEP,sBACEE,EAAE,kfACFF,KAAK,UAEP,sBACEE,EAAE,4OACFF,KAAK,UAEP,sBACEE,EAAE,4WACFF,KAAK,UAEP,sBACEE,EAAE,wfACFF,KAAK,gBCzCR,SAASmB,IACd,OACE,yBACErB,MAAO,CACLsB,WAAa,oFACI1B,mCAHrB,UAME,qBAAKD,UAAU,cAAf,SACE,cAACkB,EAAD,CAAad,MAAO,QAEtB,sBAAKJ,UAAU,cAAf,UACE,4DADF,oDCXN,SAAS4B,IACP,OACE,sBAAK5B,UAAU,mBAAf,UACE,qBAAKK,MAAO,CAAED,MAAO,SACrB,qBAAKC,MAAO,CAAED,MAAO,SACrB,qBAAKC,MAAO,CAAED,MAAO,IAAKyB,OAAQ,WAClC,qBAAKxB,MAAO,CAAED,MAAO,SACrB,qBAAKC,MAAO,CAAED,MAAO,IAAKyB,OAAQ,WAClC,qBAAKxB,MAAO,CAAED,MAAO,SACrB,qBAAKC,MAAO,CAAED,MAAO,SACrB,qBAAKC,MAAO,CAAED,MAAO,MAAO0B,WAAY,QACxC,qBAAKzB,MAAO,CAAED,MAAO,MAAO0B,WAAY,QACxC,qBAAKzB,MAAO,CAAED,MAAO,MAAO0B,WAAY,SACxC,qBAAKzB,MAAO,CAAED,MAAO,MAAO0B,WAAY,QACxC,qBAAKzB,MAAO,CAAED,MAAO,SACrB,qBAAKC,MAAO,CAAED,MAAO,KAAMyB,OAAQ,WACnC,qBAAKxB,MAAO,CAAED,MAAO,SACrB,uBAAMJ,UAAU,mBAAhB,UACE,cAACG,EAAD,CAAME,MAAO,CAAED,MAAO,OAAQ2B,UAAW,aACzC,sBAAM/B,UAAU,wBAAhB,+BAMD,SAASgC,GAAK,KAAEC,EAAF,SAAQC,IAC3B,OAAO,qBAAKlC,UAAY,GAAEiC,SAAnB,gBAAiCC,QAAjC,IAAiCA,IAAY,cAACN,EAAD,MCzB/C,SAASO,GAAK,MAAEC,EAAF,SAASC,EAAT,SAAmBC,IACtC,MAAOC,EAAWC,GAAgBC,IAAMC,SAAS,GAG3CC,EAAc,CAClB,qBAAK3C,UAAU,QAAf,SAAwBoC,IACxB,cAACJ,EAAD,CAAMC,KAAK,WAAX,SAAuBI,IACvB,cAACL,EAAD,CAAMC,KAAK,WAAX,SAAuBK,KAGzB,OACE,sBAAKtC,UAAU,iBAAf,UACE,qBACE4C,IAAM,GAAE3C,qBACR4C,QAAQ,OACRC,IAAI,wDAEN,sBAAK9C,UAAU,gBAAf,UACE,qBAAKA,UAAU,YAAY+C,KAAK,UAAhC,SAfW,CAAC,YAAa,gBAAiB,iBAgB9BC,KAAI,CAACC,EAASC,IACtB,sBAEEH,KAAK,MACL/C,UAAY,aAAWuC,IAAcW,EAAQ,SAAW,IACxDC,QAAS,IAAMX,EAAaU,GAJ9B,SAMGD,GALIA,OASX,qBAAKjD,UAAU,mBAAf,SAAmC2C,EAAYJ,WC/BhD,SAASa,EAAQC,GACtB,MAAM,MAAEH,EAAF,QAASI,EAAT,MAAkBC,EAAlB,iBAAyBC,EAAzB,SAA2CtB,EAA3C,KAAqDuB,GAASJ,EAEpE,OACE,oCACE,qBAAKrD,UAAU,gBAAf,SAAgCkD,EAAQ,IACxC,6BAAKI,IACL,oCACE,qBACEV,IAAKW,EACLT,IAAKU,EACLX,QAAQ,OACR7C,UAAU,kBALd,OAOGkC,QAPH,IAOGA,IAAY,QAEE,qBAATuB,GAAwB,cAACtB,EAAD,IAAUsB,OCpBjC,UAA0B,mCCKlC,SAASC,GAAI,MAAER,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,iDACRC,MAAOI,EACPH,iBAAiB,8CAJnB,SAME,oBAAGxD,UAAU,aAAb,mTAME,uBACA,uBAPF,sMAWE,uBACA,uBAZF,onBCbS,UAA0B,mCCKlC,SAAS4D,GAAI,MAAEV,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,4GACRC,MAAOM,EACPL,iBAAiB,8BAJnB,SAME,sBAAKxD,UAAU,cAAf,UACE,iCACE,qUAME,uBACA,uBAPF,+EAUE,uBACA,uBAXF,0IAgBA,uFACA,sMAMF,kCACE,6DACA,4GAEE,uBACA,uBAHF,qFAME,uBACA,uBAPF,iGAUE,uBACA,uBAXF,yFAcE,uBACA,uBAfF,wFAkBE,uBACA,uBAnBF,mGAsBE,uBACA,uBAvBF,8FCxCK,UAA0B,mCCKlC,SAAS8D,GAAI,MAAEZ,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,gDACRC,MAAOQ,EACPP,iBAAiB,8BAJnB,SAME,sBAAKxD,UAAU,cAAf,UACE,+BACE,wTAME,uBACA,uBAPF,2UAeF,kCACE,wDACA,mUAOA,wCACA,0PCxCK,UAA0B,mCCKlC,SAASgE,GAAI,MAAEd,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,+BACRC,MAAOU,EACPT,iBAAiB,sDAJnB,SAME,qBAAKxD,UAAU,cAAf,SACE,ubAQE,uBACA,uBATF,6PCdO,UAA0B,mCCKlC,SAASkE,GAAI,MAAEhB,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,wGACRC,MAAOY,EACPX,iBAAiB,wDAJnB,SAME,sBAAKxD,UAAU,cAAf,UACE,+BACE,2YAOE,uBACA,uBARF,mpBAqBF,kCACE,mDACA,2NCtCK,UAA0B,mCCKlC,SAASoE,GAAI,MAAElB,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,8EACRC,MAAOc,EACPb,iBAAiB,+DAJnB,SAME,qBAAKxD,UAAU,cAAf,SACE,gCACE,mDACA,wJAIA,wFACA,2SAOA,+BACE,4HAIA,+GAIA,0IAKF,0DACA,6FC3CK,UAA0B,mCCKlC,SAASsE,GAAI,MAAEpB,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,sDACRC,MAAOgB,EACPf,iBAAiB,2DAJnB,SAME,sBAAKxD,UAAU,cAAf,UACE,+BACE,oPAKE,uBACA,uBANF,4aAcE,uBACA,uBAfF,iLAqBF,kCACE,sEACA,kJCtCK,UAA0B,mCCKlC,SAASwE,GAAI,MAAEtB,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,wEACRC,MAAOkB,EACPjB,iBAAiB,qFAJnB,SAME,sBAAKxD,UAAU,cAAf,UACE,+BACE,yLAIE,uBACA,uBALF,sJASE,uBACA,uBAVF,+VAiBE,uBACA,uBAlBF,ibA4BF,kCACE,qDACA,iQC7CK,UAA0B,mCCKlC,SAAS0E,GAAI,MAAExB,IACpB,OACE,cAACE,EAAD,CACEF,MAAOA,EACPI,QAAQ,mDACRC,MAAOoB,EACPnB,iBAAiB,sCCLhB,SAASoB,IACd,OACE,sBAAK5E,UAAU,YAAf,UACE,gCAAS,2FAGFC,qDAEP,cAACyB,EAAD,IACA,cAAC3B,EAAD,IACC8E,OAAOC,QAAQC,GAAU/B,KAAI,EAAEgC,EAAGC,GAAY/B,IAC7C,cAAC+B,EAAD,CAAuB/B,MAAOA,GAAdA,Q,KCZxBgC,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAACR,EAAD,MAEFS,SAASC,eAAe,U","file":"static/js/main.b8600d2e.chunk.js","sourcesContent":["import React from 'react'\n\nexport function Intro() {\n return (\n
\n

\n The Internet Computer eliminates the biggest obstacles facing\n entrepreneurs, enabling them to easily kick-start new ventures that\n quickly grow.\n

\n
\n

\n Case Study: Building an Open
\n Internet Service.\n

\n
\n

\n The Internet Computer is a next-generation computing platform that\n makes it possible to create digital businesses with maximum\n efficiency and low overhead, giving entrepreneurs powerful new ways\n to fulfill their three main needs:\n

    \n
  1. Traction - “How do I attract customers, users, adoption?”
  2. \n
  3. \n Scaling - “How do I grow my app as painlessly as possible?”\n
  4. \n
  5. \n Financing - “How do I raise funds to continue development?”\n
  6. \n
\n To demonstrate this, here’s how building an autonomous variety of\n software called an open internet service on the Internet Computer\n offers uncommon advantages.\n

\n
\n
\n
\n )\n}\n","export const { PUBLIC_URL } = process.env\n\nexport function formatNumber(number) {\n const backwardsNumString = [...`${number}`]\n .reverse()\n .join('')\n .split(/(.{3})/g)\n .filter(Boolean)\n .join(',')\n return [...backwardsNumString].reverse().join('')\n}\n\nexport function formatBytes(number) {\n if (typeof number === 'number') {\n if (number >= 1_000_000_000) {\n return `${(number / 1_000_000_000).toFixed(2)}GB`\n }\n if (number >= 1_000_000) {\n return `${(number / 1_000_000).toFixed(2)}MB`\n }\n if (number >= 1_000) {\n return `${(number / 1_000).toFixed(2)}KB`\n }\n return `${formatNumber(number)}B`\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nexport function Logo({ width = 102, style = {} }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nLogo.propTypes = {\n width: PropTypes.number,\n style: PropTypes.object,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Logo } from './Logo'\n\nexport function DfinityLogo({ width = 250 }) {\n const ratio = width / 260\n const logoWidth = Math.floor(ratio * 104)\n const wordWidth = Math.floor(ratio * 144)\n const gapWidth = Math.floor(ratio * 12)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nDfinityLogo.propTypes = {\n width: PropTypes.number,\n}\n","import React from 'react'\nimport { PUBLIC_URL } from '../helpers'\nimport { DfinityLogo } from './DfinityLogo'\n\nexport function Header() {\n return (\n \n
\n \n
\n
\n

The Entrepreneur's Journey

\n The Internet Computer's superpowers at work\n
\n \n )\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Logo } from './Logo'\n\nfunction Placeholder() {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n COMING SOON\n \n
\n )\n}\n\nexport function Code({ type, children }) {\n return
{children ?? }
\n}\n\nCode.propTypes = {\n type: PropTypes.oneOf(['frontend', 'canister']).isRequired,\n children: PropTypes.node,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PUBLIC_URL } from '../helpers'\nimport { Code } from './Code'\n\nexport function Demo({ story, frontend, canister }) {\n const [activeTab, setActiveTab] = React.useState(0)\n\n const tabNames = ['App Story', 'Frontend Code', 'Canister Code']\n const tabContents = [\n
{story}
,\n {frontend},\n {canister},\n ]\n\n return (\n
\n \n
\n
\n {tabNames.map((tabName, index) => (\n setActiveTab(index)}\n >\n {tabName}\n \n ))}\n
\n
{tabContents[activeTab]}
\n
\n
\n )\n}\n\nDemo.propTypes = {\n story: PropTypes.node.isRequired,\n frontend: PropTypes.node,\n canister: PropTypes.node,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Demo } from './Demo'\n\nexport function Article(props) {\n const { index, heading, image, imageDescription, children, demo } = props\n\n return (\n
\n
{index + 1}
\n

{heading}

\n
\n \n {children ?? null}\n
\n {typeof demo !== 'undefined' && }\n
\n )\n}\n\nArticle.propTypes = {\n index: PropTypes.node.isRequired,\n heading: PropTypes.node.isRequired,\n image: PropTypes.node.isRequired,\n imageDescription: PropTypes.string.isRequired,\n children: PropTypes.node,\n demo: PropTypes.shape({\n story: PropTypes.node.isRequired,\n frontend: PropTypes.node,\n canister: PropTypes.node,\n }),\n}\n","export default __webpack_public_path__ + \"static/media/board1.f4bea3d0.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board1 from '../images/board1.jpg'\n\nexport function A01({ index }) {\n return (\n \n

\n Alice, our theoretical entrepreneur, has developed a software\n application called CanCan, a video-sharing social networking app similar\n to TikTok and Snapchat. Her minimum viable product version of CanCan is\n a web app optimized for mobile experience that allows users to upload\n and watch videos.\n
\n
\n The app's front end is JavaScript and its back-end logic is written in\n Motoko. Alice deploys the full CanCan application, both front-end and\n back-end code, to a canister on the Internet Computer.\n
\n
\n From the developer's point of view, Alice has authored the code,\n compiled it to WebAssembly (Wasm), and deployed it to an Internet\n Computer canister, where it lives in a serverless Wasm-based environment\n that isn't owned or controlled by any one company or entity. The app's\n code and state are replicated in multiple servers around the world — no\n single authority would be capable of shutting down CanCan, for example.\n The app's latency and user experience are so fluid that CanCan users are\n entirely unaware that the app is running on the Internet Computer rather\n than conventional proprietary computing providers.\n

\n \n )\n}\n\nA01.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board2.d0b47797.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board2 from '../images/board2.jpg'\n\nexport function A02({ index }) {\n return (\n \n
\n \n

\n App-based tokens can be used to generate micro-economies within\n products that help bootstrap app ecosystems and adoption. Though\n viral loops aren't unique to the Internet Computer, the platform\n uniquely makes it possible for users to easily support them using a\n new tool: tokenized economics.\n
\n
\n Through tokenization, the users of a service become the team that\n drives it.\n
\n
\n In the video below, you'll see different ways to apply tokenized\n economics to support app adoption (along with the associated code).\n

\n\n

Tokenization makes the CanCan concept more compelling

\n

\n Open internet services run autonomously as part of the internet,\n just like blockchains, enabling the implementation of highly viral,\n growth-driving token systems.\n

\n
\n \n
\n \n )\n}\n\nA02.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board3.0dc1097c.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board3 from '../images/board3.jpg'\n\nexport function A03({ index }) {\n return (\n \n
\n \n

\n As CanCan continues gaining traction, the app easily scales without\n the need for additional manpower. With a secure system that by its\n very nature agrees on the state quickly, cheaply, and securely,\n making apps that can scale to large amounts of state or IO becomes\n frictionless.\n
\n
\n In CanCan's case, it's possible for the app to compete with TikTok\n and Snapchat with a developer team of five people instead of five\n thousand. The app can process petabytes of data and millions of\n requests per second with fewer than a thousand lines of code, all\n while running infinitely without constant human maintenance.\n

\n
\n \n
\n \n )\n}\n\nA03.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board4.bb7c3eca.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board4 from '../images/board4.jpg'\n\nexport function A04({ index }) {\n return (\n \n
\n

\n Once CanCan is on the Internet Computer, it exists anywhere that\n people can access the internet around the world. The app's users have\n a good experience wherever they are located because each of the\n Internet Computer's nodes is always synchronized with the rest of the\n network, meaning that CanCan has effectively launched everywhere\n without ancillary services like content delivery networks and\n databases.\n
\n
\n Scaling is therefore much easier than it would be with conventional,\n centralized compute apps. Since CanCan exists throughout the Internet\n Computer, the app cannot be “turned off” by any one cloud provider or\n local internet provider.\n

\n
\n \n )\n}\n\nA04.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board5.25f218af.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board5 from '../images/board5.jpg'\n\nexport function A05({ index }) {\n return (\n \n
\n \n

\n Access to funding is one of the most basic entrepreneurial needs\n that the Internet Computer can address directly. Because CanCan runs\n on the Internet Computer, Alice has the ability to issue unforgeable\n governance tokens that ultimately control the app. To raise money\n for CanCan, she issues 1 billion governance tokens for the app with\n just a few lines of code.\n
\n
\n In doing so, Alice has converted CanCan from a standard software\n application to an open internet service. The app is now under the\n control of the owners of the governance tokens, which can also be\n used to distribute rewards and bounties to open source developers.\n Even Alice, who originally authored the app, cannot control or\n update the CanCan application unilaterally anymore. All updates\n going forward will require voting with tokens. She initially owns\n all of the tokens, of course, but a community of governance token\n holders will grow as she gifts, sells, donates these tokens to\n others. It is this community that will ultimately control CanCan.\n

\n
\n \n
\n \n )\n}\n\nA05.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board6.49d940eb.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board6 from '../images/board6.jpg'\n\nexport function A06({ index }) {\n return (\n \n
\n
\n

The Token Holders

\n

\n Individuals from around the world acquire CanCan's governance\n tokens, funding Alice's continued development of the app.\n

\n

Why would people buy tokens of an MVP app like CanCan?

\n

\n Giving users a stake in the governance of a service or app can\n foster deeper user connections and engagement with the product while\n creating a community that is invested in its success and\n improvement. Governance tokens can allow people to vote on questions\n such as:\n

\n
    \n
  1. \n “A code upgrade for a new feature to CanCan is proposed. Should it\n be deployed?”\n
  2. \n
  3. \n “A user is misbehaving on the platform. Should the user be\n banned?”\n
  4. \n
  5. \n “A proposal for CanCan to automatically delete videos after 30\n days is made. Do you agree?”\n
  6. \n
\n

Where are tokens bought?

\n

People can buy tokens at different digital exchanges.

\n
\n
\n \n )\n}\n\nA06.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board7.dd1ed547.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board7 from '../images/board7.jpg'\n\nexport function A07({ index }) {\n return (\n \n
\n \n

\n Now that CanCan has its own governance system, outside developers\n contributing to it, and users being rewarded for moderating its\n content, the app has successfully established itself as an open\n internet service.\n
\n
\n Because the app is hosted on the Internet Computer, CanCan scales\n and stays online without constant human maintenance, and exists not\n in any one jurisdiction but across many countries around the world.\n Outside developers can code new features for the app and submit them\n as proposals to be voted on by the governance community, and the\n app's tokenized engagement drives growth with tokenized viral loops\n rather than ad spend.\n
\n
\n CanCan is now a service that truly runs as part of the internet. As\n it scales, its cultural importance grows and so does its tokenized\n economy, creating a virtuous loop.\n

\n
\n \n
\n \n )\n}\n\nA07.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board8.64ace5be.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board8 from '../images/board8.jpg'\n\nexport function A08({ index }) {\n return (\n \n
\n \n

\n The Internet Computer was designed and built to widely foster\n innovation rather than accelerate the creation of tech monopolies\n through network effects.\n
\n
\n Under this vision, CanCan can exist as a service that runs natively\n on the internet. It can even help other entrepreneurs bootstrap\n other services.\n
\n
\n A CanCan could create the equivalent of an API endpoint for sharing\n its videos with other apps,. but unlike conventional apps, CanCan\n developers could mark certain APIs as “permanent.” This way, if\n there are ever hundreds of thousands of apps using the CanCan API,\n their developers can be assured that CanCan will never deprecate the\n API.\n
\n
\n The ability to build on permanent APIs unlocks the potential for\n apps and services to be built on functions that they can rely on.\n Recent history is full of examples of apps and services that were\n built on other services and became hostage or killed off due to\n changes in the underlying APIs. Permanent APIs allow for the\n building of complementary services without such fears — unlocking a\n wave of talent and innovation.\n

\n
\n \n
\n \n )\n}\n\nA08.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","export default __webpack_public_path__ + \"static/media/board9.775bfcd1.jpg\";","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Article } from '../components/Article'\nimport board9 from '../images/board9.jpg'\n\nexport function A09({ index }) {\n return (\n \n )\n}\n\nA09.propTypes = {\n index: PropTypes.number.isRequired,\n}\n","import React from 'react'\nimport { Intro } from './articles/Intro'\nimport { Header } from './components/Header'\nimport * as articles from './articles'\nimport { PUBLIC_URL } from './helpers'\n\nexport function App() {\n return (\n
\n \n
\n \n {Object.entries(articles).map(([_, Component], index) => (\n \n ))}\n
\n )\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { App } from './App'\nimport './index.scss'\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n)\n"],"sourceRoot":""}