From b7ffb5176720c6b1dbc97a24119c6a42a62a77e0 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 6 Feb 2024 07:50:11 -0500 Subject: [PATCH] Clarify dApp landing page (#287) * smart contracts * Clarify the Unity game dev platform * More concise summary of what comes next * trim margin for diagram * Use a static diagram --- docs/dApps.mdx | 25 ++++++------------------- static/img/dApps/dapp-overview.png | Bin 0 -> 38398 bytes 2 files changed, 6 insertions(+), 19 deletions(-) create mode 100644 static/img/dApps/dapp-overview.png diff --git a/docs/dApps.mdx b/docs/dApps.mdx index ded06035e..4b775a36c 100644 --- a/docs/dApps.mdx +++ b/docs/dApps.mdx @@ -2,7 +2,7 @@ title: Decentralized applications (dApps) authors: Benjamin Pilia, Tim McMackin last_update: - date: 12 January 2024 + date: 30 January 2024 --- import LucidDiagram from '@site/src/components/LucidDiagram'; @@ -17,31 +17,18 @@ In general, dApps have these parts: - **Backend**: An on-chain component that consists of one or more [smart contracts](./smart-contracts) The off-chain component can be nearly any kind of program, including a web application, mobile or desktop app, or command-line interface. -It relies on wallets and tools to interact with the smart contract on behalf of a user's Tezos account. +It relies on wallets and tools to interact with the smart contracts on behalf of a user's Tezos account. - +![Fundamental diagram of dApps, showing the frontend, indexer, and backend](/img/dApps/dapp-overview.png) +{/* Source https://lucid.app/lucidchart/8caf9ef1-11e4-454a-bbb6-ef4852515959/edit?page=0_0# */} Some of these tools that allow an off-chain component to interact with smart contracts include: - [Taquito](./dApps/taquito), an SDK for JavaScript/TypeScript applications -- The [Tezos SDK for Unity](./unity), a toolkit for Unity applications +- The [Tezos SDK for Unity](./unity), a toolkit for the [Unity](https://unity.com/) game development platform - [Taqueria](https://taqueria.io/), a development platform for dApps -## Sample dApps - -For example dApps, see [Sample dApps](./dApps/samples). - -## Best practices - -Good programming and design practices make dApps easier to use and provide a better user experience. -See [Best practices and avoiding flaws](./dApps/best-practices). - -## dApp tasks - -For information on typical tasks that dApps do, see: - -- [Connecting to wallets](./dApps/wallets) -- [Sending transactions](./dApps/sending-transactions) +The next pages in this section illustrate dApps with [examples](./dApps/samples), detail the main steps when developing dApps such as [Connecting to wallets](./dApps/wallets) and [Sending transactions](./dApps/sending-transactions), and introduce some [best practices](./dApps/best-practices) ## Tutorials diff --git a/static/img/dApps/dapp-overview.png b/static/img/dApps/dapp-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..c258e47962cf9af6eb09c4b740df39bcfd987c8c GIT binary patch literal 38398 zcmeFZWmJ@V_%=GAfJ)gQy#=>Qij*L=ML|TmTT&Wn7<#LqA|XmhBi%hnj!H>M=PKOSir7r6|969~$p{@%GMIVp+lE}L~{{ROmT;&xXP|TCCQ1dZzHR=Sy z9Z~Z4|I+XrUB-L+Xl&Q59(z2LenuW;cj7`|q;&b!KS|EHN(B_q=$80hjEI3`_c-W8zg(A3HV*OQZHm)%AuDWh3FFJaNqN>|p zU+8_u-gzt}IBZA_=ZJU~|9ti^D~U6sQLg`EKfKI6&Pf|P*DicM+Ofz8Tl$R8K%u&= z4+o6t5+W6EP;&gO@^G|L*~YHC<~-OwpQtW_5GU_F-Ary2_kDUw)WeG{+g;vz7l?vv zh3A?{QRg3+nQcn&Tr91L6h8Nz^s<=G)F~5g6q^atkkf$3QNzk@lxx#m@&)8nIkPm^ zt!%tz`D^LR#oejR$^>2#RDc6as;uTD%J3Z3s3Djfe(C$U8ZN5~f!t40m6f_fPN5=n zBpvteam%9`OYY1+IEj)D78HC~SL^!-v9$o+-O|^WM&QEkkgW|b^V9!FneD?jcrw(( z$3ity{gc(~3~u8OGidInwS<+KDP(Y1k7XDS1q7a0mb3?-+q!*8ll8m*d~vDVQ_jPV ze&NcZ!=DkHQrXd5Zm*n6Wj$qV6lu_N~F=o`(PEU$%~M z+Z*n(=g}V7Vdkvf&U7b>i(=Kt`!&>c!@u{WKm=i4vRd6c?64`ucyaP+QWVFGMR?yO zI>qvGS(J1OM5xovUez-7bQ2Mqu5uxP%gIT;nt=^}5el-c`6KX08#IK`YJJ^l0fJ

Uy@Dqr>HAgJMC+akDV*=)g~PY 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 %&>gAeity(u3NsS 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