From ec730e4819e2e1a4efa1e997d116a02414186e59 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Thu, 12 Sep 2024 11:00:47 +0200 Subject: [PATCH 01/60] first commit --- .../Common/LightHeroStyles/index.tsx | 18 + src/components/Common/VideoCard/index.tsx | 28 ++ src/pages/capabilities/ai.tsx | 321 ++++++++++++++++++ static/img/ai-chain/1a.svg | 11 + static/img/ai-chain/2a.svg | 11 + static/img/ai-chain/3a.svg | 11 + static/img/ai-chain/4a.svg | 11 + static/img/ai-chain/5a.svg | 52 +++ static/img/ai-chain/chain_logo_black.webp | Bin 0 -> 26894 bytes static/img/ai-chain/data.svg | 36 ++ tailwind.config.js | 2 + 11 files changed, 501 insertions(+) create mode 100644 src/components/Common/LightHeroStyles/index.tsx create mode 100644 src/pages/capabilities/ai.tsx create mode 100644 static/img/ai-chain/1a.svg create mode 100644 static/img/ai-chain/2a.svg create mode 100644 static/img/ai-chain/3a.svg create mode 100644 static/img/ai-chain/4a.svg create mode 100644 static/img/ai-chain/5a.svg create mode 100644 static/img/ai-chain/chain_logo_black.webp create mode 100644 static/img/ai-chain/data.svg diff --git a/src/components/Common/LightHeroStyles/index.tsx b/src/components/Common/LightHeroStyles/index.tsx new file mode 100644 index 0000000000..d489b8c09d --- /dev/null +++ b/src/components/Common/LightHeroStyles/index.tsx @@ -0,0 +1,18 @@ +import { css } from "@site/src/utils/dummy-css"; +import React from "react"; + +export default ({ bgColor = "var(--ifm-color-primary)" }) => { + return ( + <> + + + ); +}; diff --git a/src/components/Common/VideoCard/index.tsx b/src/components/Common/VideoCard/index.tsx index d422ad5d61..3168195cb6 100644 --- a/src/components/Common/VideoCard/index.tsx +++ b/src/components/Common/VideoCard/index.tsx @@ -2,6 +2,7 @@ import Link from "@docusaurus/Link"; import PlaySVG from "@site/static/img/svgIcons/play.svg"; import clsx from "clsx"; import React, { ReactNode } from "react"; +import LinkArrowUpRight from "../Icons/LinkArrowUpRight"; export const PlayButton: React.FC<{}> = ({}) => { return ( @@ -30,6 +31,33 @@ export const ImageOnlyVideoCard: React.FC<{ ); }; +export const TitleVideoCard: React.FC<{ + image: string; + href: string; + title: string; + className?: string; +}> = ({ image, href, title, className = "" }) => { + return ( +
+ + {title} + + + +
+

{title}

+
+
+ + Watch now + + +
+
+
+ ); +}; + const VideoCard: React.FC<{ title: string; label?: string; diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx new file mode 100644 index 0000000000..5a9023326b --- /dev/null +++ b/src/pages/capabilities/ai.tsx @@ -0,0 +1,321 @@ +import React, { useRef } from "react"; +import Link from "@docusaurus/Link"; +import AnimateSpawn from "@site/src/components/Common/AnimateSpawn"; +import DarkHeroStyles from "@site/src/components/Common/DarkHeroStyles"; +import LinkArrowRight from "@site/src/components/Common/Icons/LinkArrowRight"; +import ShareMeta from "@site/src/components/Common/ShareMeta"; +import { useDarkHeaderInHero } from "@site/src/utils/use-dark-header-in-hero"; +import RightPointer from "@site/static/img/svgIcons/rightPointer.svg"; +import transitions from "@site/static/transitions.json"; +import Layout from "@theme/Layout"; +import clsx from "clsx"; +import { motion } from "framer-motion"; +import { css } from "@site/src/utils/dummy-css"; +import LightHeroStyles from "@site/src/components/Common/LightHeroStyles"; +import VideoCard, { + ImageOnlyVideoCard, + TitleVideoCard, +} from "@site/src/components/Common/VideoCard"; +import { NewsCard } from "@site/src/components/NewsPage/Cards"; +import eventsData from "@site/.docusaurus/airtable/default/airtable-events.json"; +import EventCard from "@site/src/components/GlobalEvents/EventCard"; +import { AirtableEvent } from "@site/src/components/GlobalEvents/types"; + +interface FeatureCardProps { + imageSrc: string; + title: string; + description: string; + badge?: string; +} + +const FeatureCard: React.FC = ({ + imageSrc, + title, + description, + badge, +}) => { + return ( +
+ +
+ {title} + {description} +
+ {badge && ( +
+ {badge} +
+ )} +
+ ); +}; + +const features: FeatureCardProps[] = [ + { + imageSrc: "/img/ai-chain/1a.svg", + title: "Tamper proof.", + description: + "Sensitive AI models in finance and public administration need protection beyond individual control. ICP blockchain ensures integrity and prevents tampering.", + }, + { + imageSrc: "/img/ai-chain/2a.svg", + title: "Verifiable Inputs and Outputs.", + description: + "AI focuses on input and output, and for legal compliance, trust comes from auditable, verifiable data. ICP's blockchain ensures transparency and verification.", + }, + { + imageSrc: "/img/ai-chain/3a.svg", + title: "Privacy-preserving.", + description: + "AI models manage sensitive data, raising privacy risks. ICP's cryptographic encryption secures AI data, ensuring compliance with protection standards.", + badge: "coming soon", + }, + { + imageSrc: "/img/ai-chain/4a.svg", + title: "Resilient.", + description: + "AI-driven operations like medical care need constant availability. ICP's decentralized smart contracts ensure high availability, keeping AI models secure and operational.", + }, + { + imageSrc: "/img/ai-chain/5a.svg", + title: "AI-2-X Economy.", + description: + "AI models that run as smart contracts, enable them to autonomously participate in the digital economy by interacting with digital assets such as Bitcoin, Ethereum, Stablecoins, and ICP. This setup facilitates secure, transparent, and automated transactions and contract management without human intervention.", + }, +]; + +const MotionLink = motion(Link); +const { events, websiteCategory, regions } = eventsData; + +function AISubPage() { + const [filteredEvents, setFilteredEvents] = React.useState< + (AirtableEvent | "promo")[] | null + >(null); + return ( + + + +
+ + +
+
+
+ ai chain logo +
+ + Secure and Trusted AI on-chain + + + Powered by next generation Smart Contracts.{" "} + + + Explore the fastest growing AI Ecosystem in + Web3 + + + AI will be at the heart of everything, driving economies, + industries, and our daily lives.{" "} + + AI on the Internet Computer + {" "} + marks a major technological leap by bringing AI on-chain, + ensuring decentralized, tamper-proof, and privacy-preserving + solutions that address critical issues like security, + transparency, and reliability. By running AI as smart contracts + on ICP, we unlock transformative use cases across sectors, from + healthcare to finance, while laying the foundation for a new + AI-driven digital economy. + +
+
+
+
+ +
+ + AI on chain - Technological Innovation + + + ICP's advanced AI on Chain technology addresses five key pillars + that define the future of AI. + +
+ + {features.map((feature, index) => ( + + ))} + +
+
+
+ + + + TECHNOLOGY + + + Industry Innovation + {" "} + + The Internet Computer provides unique technical capabilities for + decentralized AI and continues to advance its development + further. + + + + +
+
+ + + Resources + {" "} + + +
+ + Videos + +
+ + Get all the news and event infos about Chain Fusion Technology + on ICP. + + + Explore more news + +
+
+ +
+ + + +
+
+
+
+
+ ); +} + +export default AISubPage; diff --git a/static/img/ai-chain/1a.svg b/static/img/ai-chain/1a.svg new file mode 100644 index 0000000000..a7031a1939 --- /dev/null +++ b/static/img/ai-chain/1a.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/2a.svg b/static/img/ai-chain/2a.svg new file mode 100644 index 0000000000..6c4a51daea --- /dev/null +++ b/static/img/ai-chain/2a.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/3a.svg b/static/img/ai-chain/3a.svg new file mode 100644 index 0000000000..ef81d38a87 --- /dev/null +++ b/static/img/ai-chain/3a.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/4a.svg b/static/img/ai-chain/4a.svg new file mode 100644 index 0000000000..83b99388a3 --- /dev/null +++ b/static/img/ai-chain/4a.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/5a.svg b/static/img/ai-chain/5a.svg new file mode 100644 index 0000000000..1de013ed04 --- /dev/null +++ b/static/img/ai-chain/5a.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/ai-chain/chain_logo_black.webp b/static/img/ai-chain/chain_logo_black.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b1222bfd31d87a98399b636470997b9e6859830 GIT binary patch literal 26894 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailwind.config.js b/tailwind.config.js index 6e0aa2239b..4e632dad8d 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -300,6 +300,8 @@ module.exports = { '.text-gradient-white': '@apply text-gradient-base bg-[linear-gradient(191deg,#ffffff_22.86%,#4e377f_90%)]', '.text-gradient-denver': '@apply text-gradient-base bg-[linear-gradient(90deg,#6A85F1_22.19%,#C572EF_79.9%)]', '.text-gradient-green': '@apply text-gradient-base bg-[linear-gradient(48.09deg,#4DEDD3_-32.7%,#31A782_46.37%,#3B00B9_129.51%)]', + '.text-gradient-violet': '@apply text-gradient-base bg-[linear-gradient(310deg,#ED1E79_37.48%,#522785_86.69%)]', + '.input-text': '@apply block border border-solid rounded-xl tw-paragraph bg-transparent py-[14px] px-4 outline-offset-1', '.input-text-white': '@apply border-white-80 text-white placeholder:text-white-60', From 23a4b37c4909a73d437bf013aff63192ce8f3fde Mon Sep 17 00:00:00 2001 From: reigj1 Date: Thu, 12 Sep 2024 14:12:20 +0200 Subject: [PATCH 02/60] add hero --- src/components/Common/VideoCard/index.tsx | 2 +- src/pages/capabilities/ai.tsx | 96 ++++++++++++++++++---- static/img/ai-chain/chart1.svg | 13 +++ static/img/ai-chain/video_ai.webp | Bin 0 -> 8094 bytes 4 files changed, 94 insertions(+), 17 deletions(-) create mode 100644 static/img/ai-chain/chart1.svg create mode 100644 static/img/ai-chain/video_ai.webp diff --git a/src/components/Common/VideoCard/index.tsx b/src/components/Common/VideoCard/index.tsx index 3168195cb6..7e5d5506b6 100644 --- a/src/components/Common/VideoCard/index.tsx +++ b/src/components/Common/VideoCard/index.tsx @@ -20,7 +20,7 @@ export const ImageOnlyVideoCard: React.FC<{ return ( Explore the fastest growing AI Ecosystem in Web3 - - AI will be at the heart of everything, driving economies, - industries, and our daily lives.{" "} - - AI on the Internet Computer - {" "} - marks a major technological leap by bringing AI on-chain, - ensuring decentralized, tamper-proof, and privacy-preserving - solutions that address critical issues like security, - transparency, and reliability. By running AI as smart contracts - on ICP, we unlock transformative use cases across sectors, from - healthcare to finance, while laying the foundation for a new - AI-driven digital economy. - + + + + Dominic Williams on AI on ICP + + + + Al will be at the heart of everything, driving economies and our + daily lives. Al on ICP marks a major technological leap by + bringing Al on-chain, ensuring decentralized, tamper-proof, and + privacy-preserving solutions that address critical issues like + security, transparency, and reliability. + @@ -218,7 +222,7 @@ function AISubPage() {
diff --git a/static/img/ai-chain/chart1.svg b/static/img/ai-chain/chart1.svg new file mode 100644 index 0000000000..b42d665e62 --- /dev/null +++ b/static/img/ai-chain/chart1.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/img/ai-chain/video_ai.webp b/static/img/ai-chain/video_ai.webp new file mode 100644 index 0000000000000000000000000000000000000000..5bc360d29fc8aa303781c81ecc2f5dad8b9869e8 GIT binary patch literal 8094 zcmV;PA7S89Nk&GN9{>PXMM6+kP&gop9{>Q*%>bPNDv<)y0Y0Hnq)nzIr>r6~*x`T_ z31@EMY2kK%rQ}Uj$b>{+40uz22Va(U&sif!a(hqj=H>+Z7P66^X9O+)v!!=LI+K&S zA=I3m(GH~K?ud0KCv~*fTTEE#&&ep(|kKW!smo@JIK>4qD0td}|zz{H^xWrlK+NKlB!F`HE0m^1SmUQ&K z`+y7~8;6iq4Sau{tojfo{2NkAi_o7Bn)iSpeAm4huXq9l%VNj7A23lvF)@63^#*Yu0_kbXL z*SrA(=DpwulXtaZLSPe!qfy+TA|a$Yc}mUeyQUaDDw1Frfk;|+PE7Iy(IFG2sDuxj zA8IdmbVI3lE8WRhkcb%B+B5%vZ!J3S*93=ZEQy+i1+4r_AVSMN5As;sR+G>{?v0Au zq8&*auCW8=z3zk$n)iSUF_Skdba5nZH8p@YLuj_V`iVG4;xV9J* zle!_)oSo4QrQoeUnDhH!aAh%bK0yskG2Y8m{=(({KG!~UyAE*kN$;xHJ-v3=Co!x% zA3*9PT%l>oKCb{k`LB2a2g>G9*4sd-e^{#a`)<$B)Ol31_%h{Cqm}ZKg$0TseiiQB zi6~5sv1RmPmwi1gw5Pv@FoYEF1P_|`fFN9V+TaXj#BvSRGu}XK+G-MZlQ_gnrL5Bi zW+{^7U_y6mgD@wYbi=a;XE^Cu(43vo5Frnn4p%kYlAVp5O22LiTNoWDkT(FWdSVTA zcbu6VYWSQkQZ$s#&#R>nf%bvjh;@vEh!@Gh-me4J*9>&gN4Jlnm{(4Ajb&dO3k-B9$|cB zcIV~&3RZVSKPr8|l5Ie|4s{D|2GIUWPz#z?wtuf|t&~a{Am;!0JmA3J6rY1d-WImX z)|4r7?&%Soslw^sPQli7`h9cq4!i*a=Dn`RwB?*lJp`)tqQ647nE3h9bgUN4WLR-_ zJ5Yr(9!JE07}o1)asMgmr(BU<#-=Tsk34QLK6I<>dz=`DQgU}hI)3GQs%aWx20btxwBm0kI+nDDo-L1fBrRqi?v$&u^_BS&nEx8#Zze5}YikT& zw05~LHhNA2F^&1e7c)d>e=@h5G%l5hK>4qD0JAD?dJwCunbj8)_m^Rcf^cAC*~L|y z`huDeLs%Xie~%jWW4K!0%tgs-$sJ;v9J@+Nw41b$%&OaBlvGuzIXj{qNdY)~@+cws z$a;igpVJKZ`Rrb~rU4Zd57`}Rp6QMS*AFxt*eR;c z$c`!a?n!kgCv-!pGIrL>1=;57q3e3YJ%ibyR^`n_9HK7LlM{v_(gbmo$x+#>4NO*W zqIE{+ABioha~DH@`Md!G`2WmX9f%T4rNUg`y~;)1!~OP2&4BdiMS2zZue10IV}>CF z1Fq`5z zg<)UrN(Nz4vgWDL6pj;SmPizkq50SN>63NZ-AtdaKe^Di@>c84Pr21<$I@a(eZf=T2Bk3<`HXBj;1 z-zT8h0`9J2&>9&d_6qC~`X?PVfyv^kz?JhYztcgEZ>Y4-GecdDRNY(jqE?F$NFN6W zb+ue{;WTQ%dY8m}G9vS!-SM*vG>bNCuEFP!;O+%duhJj-u1ReqcfS*qW_SG& z$9v;)iur(~HLd^sVMmf^c_kA@jj-8SvvyXjuSUZL1V?&j9<`6NhhOtN$Wbw9jRRZg zFP2%H@7E~GsRKz}t@8&{x`RTE)H?bz>~3xvqg13`gkExjYRKT<%EST@2%#4kO%&tz zn`<(atz0TP48Ad8+*$%uAuBA&zyoMEFr=44^IOgVtMvh**iy&Ill1APs z);daEz5w@WBjrs15-w5{k{v<6g@SK3HpO@s*1r8zl;d$#chvi)`~uUmSQkZY;arCPiiO(Cz^6K?fAxA>2(pzXOrUcRA1c9>mu%9QHDP%V4h% z2D8A^ltuhwc`8!#>J)B7g2-@RtjD1lo_WI(*=OvLHweWLd@Nv%_VjO=U zhBeRz~W80|<>X8X)UsQ+8>ljx%v=3SoBz4Rcpyhiw# zJal(EBCY&s;>W>xg+zD&2fSYz4CP^K(#gk}3&CbCCg&dyOP^61L(z++#r%yXx#9}_ zM%69B(yTj_$NixR7wA8l&2_m)KtSw`e%2{@KUTH6c)6otx(w8!hh0GzrDmGHb@WiZW zxNNdaX3qr{e9U=5+=KkUYr{SuZ`XN4=YQrjp7|@T-`>1zIZyA4tML`P%AQ~Tlj62G zbo6Exl(!?>`M&Fg5!Pe+W1weDijUhgg}I6ff`9>B9>7YHc-pb)6|#t`-$xl{jE3A; znSMva!zGp0v3gJNJJxWLAyd8!EFYr$=a~aZb>Ot=mPh|5`YpDrk1%V|O1A`ey5BVp zy@?%L?&6l9MpK>j^{wZ*|1;yw_6ALx=DK4E&V#7+fn2tn|{N-N7NV$>Q=tZ&*h&nG<)aYgnmnl9JD%HE}G=&0B4c~PDLnXZ7_X# zlQ@lcbLdSr(o^Y*r=;^^M^rLAs3Aih!Z@c4cK7=d?ds|Ha>I}Srfy5kvtA&#GIBT; zArk4>CG6wpZUsB*ky_`S}sVn4j14J5=NpSyBE*4d>z=jHnNqK$Ox|PA2{pQ4) zH`=lX83LjU-vhcPh&Int{0BcT5p^8ICZ+QH;ARs$L1WU_Q|*HCHrt_g-ngv!sU8V*T`dJBz%G<_P8p4 zyntYxY$;GVI(TTgUC!STp->^_=+=Bf0m|3lMzE1|tWHvjj=cH{a9=Ox%~0etqZUXb zz&>L@I%BDy0)02XC>%7_0Oqg|wnX}_8-kiW^Nh^r+Oh|An)UkP+dhQ$MF}XZyvN`; z`?@TpcRzBRW%c)Y){4UaTPb-`oVgoqaz^F9s?h$NRTUZqV{Sm(V{#O{bHfmF3EAZ&; zGLi#**B;$q@80A@r}mq1D#NFnoOBCAa^QVLMo0jY@Z9h&+^@7<-lnFI!lg9nv^(aq z2ETh%1$juvvdFMh&RdpRq64@cK~Ml0h1VQQV@i2~et9F6O$k65VY1>gBy3wM=Q+6?}Id{K}h zZ}nVj8p>aU+$qNv_u*FpN`31(hEnKwzXjeKb~<2o6~*np-{|NBm}@O5n{Uem*!>WA zS;6kfb};iuNcwh@A-pz%O7Mai-Hz*b!a{vGI9^-8YN31MCC2dh15>O4P%qPG4z^8l zjrR`e_TKRCC{|(lOnZmx0v4Z}&#qE}V1$hj$2|(@(}>&pxXpDm^xSFNDLLQS2&-g%*0p-WOUc-s3zgmkPGj!mHnZ@a(G~c+c;X~>6uproSOr!U= z^`~aZyoc%jPxd7KwOku?G)R;kRfoOK>mlINzlz=?)IE6OdxkKH7|bLbuUhcIr5<26 z7Zl8wHnWlV=rzk5&ekWMm}Lu)MBmSDFxFi&qd1RpFpG^2Di~XwYv@urn1))nEAJ++ zam5fYRZm5R`F>H(Cls=VlF9W<+e1)X`_`F+&s_CMGJ{#jJw|{cT*CX`#?;b73Ka@P z+Pp3pd1~W74^RJ**7I)X0Qv3FF20Kl^70tc6Dl?sr!o6*kj)Cf0P8?0G@wfTK*hpE zQw^;at0(!YPOHex+yKbw4@)b~Kp0!kQe-xq(NU1{2=d?riWz~=O2fD`Nqc_*7(na0 zwX>M5r7RxG6wsuh;CeN1$9o21ELF8VZl<3%&4Vvj(SXdBYOZR>;05f}uQES02Ek2uyCBML_vj z8b2~est|50nAn93FL+VY7M`zjV25rHE-X&KMx^Q}CoTq>#Hu86bUoD(@eR3Svq zQ$Lh^gcVJ+9UKq`DvVk+zViy7pI|z1lK}%TCg`4ESh&7CEr*pMq;6a4ck$+08kf<( z8W}>wfB_qRa-v`oGb|+mq>*Ht10G?b8q#u8+*(3TpGG(3C*QuIVpoq($La5pM+ubb zm@I@(fEHzPrBh$1=;}`!tjp8!(?pc_Gg1_yj7a#9s7 zG3B#0BSPqQw(I;>;p2llSSspGGyLwLfB-(Z+vV8k z+#HtUbGh1(j*Ju3EUyi#xkEwG-C4L_HG6uuI-3HFaO`aUv&s14lFYRx181So6LAdz zzO{!voDa{*SJR{M!y&DBAyuT%Pd6^o&7kS&CX)lmaCNpTrnONJF!ivDcwi0!G~_oG z8IMoIr%^WQ@)mx%@-n~#5!%Ccr;mDEEf#aHcA?eUS7nE*p!jyhK$(Y^ejT;npoKM} zixy#!gu!Z+V7%7kzO_ke34Tq9+z9HmafNYIpx}SZeS9@b%64vj3RXKJu2U?mfjJdj zk1lJR8=k|aTvA=;UqMyHEg)YoX&j9n4UxMgFR3;d2}6$Om)S0DEA`p>I@xZHD)@MX z!8wj*$^j@2JeVcnN=j8pK6qhDtw%jBL9~$uI2=nf91Ci7h34rTM?L$|z1&-=h33Xi zpf%zMdE-Ms0<86$PGYEk*}I9^Zar)sZKHJsXm}83>IiTF=(BB*vP1$ugp4?S08(X1r@Qmv_R(4l0S zncv*SUBv6y2Q^sj7|RF`LwB=K8qj)EwyE>U6V~_Wi_}{d$|*P!N3ByDZuuS(^HFdz zIzD#-!zoKoml@GZ??b(hV)nBtNy1p&Fgjv_w6*XDU59(TzLQknVoA03o{p$i?Amjv zBs}bh!BDkktbZc|<3_3*Ry74D<&e#LeSnmyHWx|4W@6r_{6oXIw&vPP>`mytW5(OO zCGMe0gRRwJ-M3eNaZTyfz?zACjK3--P$Wcje+mV1oZ6KW#kidGHi_c9kkVJiheWa26EQ%6$>wDjHaHBcIutU4P#oR4)WdR#*8D=zxZ<# z-L608?$5E$W~s4>#IA4y6(m?o)g}n12GfKXcW7V*nB&1ZWmA&APOs!0CkHUUf>eKj zxbUJqJv|kRnByxTl>n#$U*5 z`V+FC?tq6$<6l9u$~HQ~iGiN(3Wh|%?nU|0VODxG4H?rz2?Bz9czjQ0W_0>VARQxD zjaPnLdD>7$!3H`rpiApt2VrQ&HRjP zm)336I%+OzcE1nd5*Ufyh29xU>m8v zY>GU!O1bso;B6&~px=WR!I12M&i^o5x|ln{5i0p-rBZ>;lO9)Ol}YEL-JP0QDt+{o=tHkltdHl}6o?l;?sB496qM zVkwx8IcszibH2%@ z`RgI*fCvdsqV*n9es>KGgTK7nx=oYh)iV$PWa1WUCa$4PU`H?&T@^ZP9 z>LV=A$|>-*E2HRuXB%;6fYTU-o6|W)9mU#Be&8en$};X_%obX?X%~$B-LzW`9dicY z$ZAPP2MNA+V0r|g#q8nKbx7@S7A?heQ0iuq7t49lhDq9A9?lTSW{P1ZDT> zgw&I_Tf;siW37WBw%pO`H_+gLbH6qJ+IPX=sDj>*0kYiukW-?s`rT@ z#+|baJAPb~(ul_Kk+z-BJD&3>qL%+s6xbFVzWj1)k22JJoyl^sQ_~`=5~vEUKtd&1 zVvsaJI6GysZu!swDQw=$Y1wF*<4eTEC0$;ZxZ)JQg3*c9I3vnmBVZEMQ z#@Y>;H&&VFZU0Oae`Q;KDHoD8jrhpwxfRRhJF_jJT#7$962RAkMx{lMI*l3n%3&Zw zzBAzQnMX&(n{ZV;=eCXu!6jc`4?moK2i)|)i0OPLKQaR`SM~?Rclz)=^B>UX5Hf$S zq}CsNq#qb`rQXG=N}%qHzv5L1;Psx4DX41 zdp-Bsiq2U|);|!OUk;W^N5uzQAQWb1QaKYy)-)>}wX`P7HZf98Wk#h|P zYb?{@g4wiyNH;U3(8P}T8cnpFKv{+A6kl%J7`%+xQf_j5!K-c3%aW#S$c zrx;HYWZMOGAtjkb%)shmb?>>zC7sdV{D91^=x~M^*a0Sg2v7jSLy|#`21k>@*b@If zcXvIdVbxE%TZ=1|<5y1$D+cOrI~f>VVk&(`qAte=J8{zqkn|puuA-7a*SmB+EhT)L zt&v#!@3?}&J1jF~#e%cCV`gtU7t=QprZzwF93;$C8HEG@$+_cJI^#yQ49@Rlgau2f zupa`O=;R1NCa6*gp!<1}={uulbtC|-`5_U#8JORzglt>)K&1y#J~`<2IOG#~R(ipf zk|NfejR>JX#xh2#2~|3Lo6=^o*Tlf7*%q%8Cba?Qqf>mdMBQUv7&5UK^^lo<)Ib8a zc`Z_4aYP&T_QocSR?{HWYIRRf1&3R}Tq2ql;Z6K4?W-LNxbH$p|K?w0MnmQn+$^`~ zgD?>+JAvbt`%!O7yV{y(5W+T@&ICgM;^S(z{LZh|!pLt#!TbV#_clT=gJJ}{|L5S}cfCe;b2R{qExB}Ey1ss)qH1g*YbJoU|!?RVb3_>AkTU$KD zC{0I&6rT};KBmBp6CPI9+@RX}X|u3DiYrcQl~Y~5KoJYRF$h#{E{DR&;2D19ojaGA zapwp9nE~XFVZV4dfE_%`W;Bl&)VMNHVu2XO{HbtsNAK^KK9<)@kHkowUZ>fgJ0AL`Zl9Rh(CSU@0xjJD9bK`EIVT?K@j({nq9Vq6>X9!(O zXl`%&Ky);;X$fROsc;?25_xUzny`go(#Akka9Z(`@o)wRt)Kt|Qy1XyiVHbA%Y1TN sN|uE6V&^cX%!j%}h-e9z&eTb!$IO_CW;(*LWMBOztN=iZFnOP#0DsM>J^%m! literal 0 HcmV?d00001 From c1fdcb73a7b845d5ae1eaea285fd485fe5efac84 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 13 Sep 2024 11:50:44 +0200 Subject: [PATCH 03/60] update sections --- src/components/AIManifestoModal/index.tsx | 54 +++++++++ src/components/Common/VideoCard/index.tsx | 17 ++- src/pages/capabilities/ai.tsx | 136 +++++++++++++--------- static/img/ai-chain/video_ai.webp | Bin 8094 -> 17680 bytes 4 files changed, 139 insertions(+), 68 deletions(-) create mode 100644 src/components/AIManifestoModal/index.tsx diff --git a/src/components/AIManifestoModal/index.tsx b/src/components/AIManifestoModal/index.tsx new file mode 100644 index 0000000000..e67bc31808 --- /dev/null +++ b/src/components/AIManifestoModal/index.tsx @@ -0,0 +1,54 @@ +import Link from "@docusaurus/Link"; +import React, { useEffect, useRef, useState } from "react"; +import { motion, AnimatePresence } from "framer-motion"; + +const AIManifestoModal: React.FC<{ + onClose: () => void; +}> = ({ onClose }) => { + const overlayRef = useRef(); + + return ( + +
+
e.stopPropagation()} + > +
+ +
+
+
+
+ ); +}; + +export default AIManifestoModal; diff --git a/src/components/Common/VideoCard/index.tsx b/src/components/Common/VideoCard/index.tsx index 7e5d5506b6..77d3a1983f 100644 --- a/src/components/Common/VideoCard/index.tsx +++ b/src/components/Common/VideoCard/index.tsx @@ -18,14 +18,12 @@ export const ImageOnlyVideoCard: React.FC<{ className?: string; }> = ({ image, href, className = "" }) => { return ( - + + ); @@ -41,11 +39,10 @@ export const TitleVideoCard: React.FC<{
{title} -
-

{title}

+

{title}

diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index bbc2c0cbcf..a56e787197 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -1,4 +1,4 @@ -import React, { useRef } from "react"; +import React, { useRef, useState } from "react"; import Link from "@docusaurus/Link"; import AnimateSpawn from "@site/src/components/Common/AnimateSpawn"; import DarkHeroStyles from "@site/src/components/Common/DarkHeroStyles"; @@ -20,6 +20,9 @@ import { NewsCard } from "@site/src/components/NewsPage/Cards"; import eventsData from "@site/.docusaurus/airtable/default/airtable-events.json"; import EventCard from "@site/src/components/GlobalEvents/EventCard"; import { AirtableEvent } from "@site/src/components/GlobalEvents/types"; +import LinkArrowUpRight from "@site/src/components/Common/Icons/LinkArrowUpRight"; +import { useScrollSpyMenu } from "../../utils/use-scroll-spy-menu"; +import AIManifestoModal from "@site/src/components/AIManifestoModal"; interface FeatureCardProps { imageSrc: string; @@ -93,9 +96,16 @@ const MotionLink = motion(Link); const { events, websiteCategory, regions } = eventsData; function AISubPage() { - const [filteredEvents, setFilteredEvents] = React.useState< - (AirtableEvent | "promo")[] | null - >(null); + const [manifestoModalOpen, setManifestoModalOpen] = useState(false); + function closeOverlay() { + document.body.style.overflow = ""; + setManifestoModalOpen(false); + } + function openOverlay() { + document.body.style.overflow = "hidden"; + setManifestoModalOpen(true); + } + return (
Secure and Trusted AI on-chain - - Powered by next generation Smart Contracts.{" "} - + Explore the fastest growing AI Ecosystem in Web3 - + - + Dominic Williams on AI on ICP - - Al will be at the heart of everything, driving economies and our - daily lives. Al on ICP marks a major technological leap by - bringing Al on-chain, ensuring decentralized, tamper-proof, and - privacy-preserving solutions that address critical issues like - security, transparency, and reliability. + + Al will be at the heart of everything, driving economies and + our daily lives. Al on ICP marks a major technological leap by + bringing{" "} + Al on-chain, + ensuring decentralized, tamper-proof, and privacy-preserving + solutions that address critical issues like security, + transparency, and reliability. +
@@ -173,19 +181,20 @@ function AISubPage() { el={motion.section} variants={transitions.container} > -
+
- AI on chain - Technological Innovation + AI on-chain - a major technological leap - ICP's advanced AI on Chain technology addresses five key pillars - that define the future of AI. + ICP’s advanced AI on chain technology enables five key + attributes that will drive transformative AI use cases across + industries.
TECHNOLOGY - Industry Innovation + R&D at the core of Internet Computer’s AI innovation {" "} - The Internet Computer provides unique technical capabilities for - decentralized AI and continues to advance its development - further. + AI on-chain is made possible by the unique technological + capabilities of the Internet Computer Protocol (ICP). Running AI + as a smart contract on a blockchain is a significant innovation + that is based on DFINITY Foundation’s significant R&D efforts in + this domain. Over the past 6 months, AI computations have been + optimized to run up to 10x faster, enabling larger models to run + on-chain. @@ -316,15 +329,6 @@ function AISubPage() {
- - - Resources - {" "} -
- Videos + AI Video Demos
- Get all the news and event infos about Chain Fusion Technology - on ICP. + Watch these videos to learn more about AI on ICP. - Explore more news + More videos on AI
+
+ + + Read the full manifesto{" "} + + +
+ {manifestoModalOpen && ( + + )} ); diff --git a/static/img/ai-chain/video_ai.webp b/static/img/ai-chain/video_ai.webp index 5bc360d29fc8aa303781c81ecc2f5dad8b9869e8..5b991ac8548a0a5e966b81baa1af39866d894d40 100644 GIT binary patch literal 17680 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 literal 8094 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 From a313ba9837225abc3c784330a117f011bc1ca495 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 13 Sep 2024 19:17:27 +0200 Subject: [PATCH 04/60] ai subpage --- src/components/AIManifestoModal/index.tsx | 105 ++- src/components/Common/VideoCard/index.tsx | 8 +- src/pages/capabilities/ai.tsx | 936 +++++++++++++++++++--- static/img/ai-chain/1b.svg | 11 + static/img/ai-chain/2b.svg | 11 + static/img/ai-chain/3b.svg | 11 + static/img/ai-chain/4b.svg | 18 + static/img/ai-chain/DecideAI.webp | Bin 0 -> 55260 bytes static/img/ai-chain/Kinic.webp | Bin 0 -> 30166 bytes static/img/ai-chain/chart.svg | 14 + static/img/ai-chain/data.svg | 37 +- static/img/ai-chain/datapond.webp | Bin 0 -> 60064 bytes static/img/ai-chain/deai-img.svg | 80 ++ static/img/ai-chain/elna.webp | Bin 0 -> 3074 bytes static/img/ai-chain/elnaai.webp | Bin 0 -> 65040 bytes static/img/ai-chain/gpu.svg | 157 ++++ static/img/ai-chain/icon-check-circle.svg | 6 + static/img/ai-chain/inference.svg | 17 + static/img/ai-chain/islam_el_ashi.webp | Bin 0 -> 8028 bytes static/img/ai-chain/pierre_samaties.webp | Bin 0 -> 5800 bytes 20 files changed, 1276 insertions(+), 135 deletions(-) create mode 100644 static/img/ai-chain/1b.svg create mode 100644 static/img/ai-chain/2b.svg create mode 100644 static/img/ai-chain/3b.svg create mode 100644 static/img/ai-chain/4b.svg create mode 100644 static/img/ai-chain/DecideAI.webp create mode 100644 static/img/ai-chain/Kinic.webp create mode 100644 static/img/ai-chain/chart.svg create mode 100644 static/img/ai-chain/datapond.webp create mode 100644 static/img/ai-chain/deai-img.svg create mode 100644 static/img/ai-chain/elna.webp create mode 100644 static/img/ai-chain/elnaai.webp create mode 100644 static/img/ai-chain/gpu.svg create mode 100644 static/img/ai-chain/icon-check-circle.svg create mode 100644 static/img/ai-chain/inference.svg create mode 100644 static/img/ai-chain/islam_el_ashi.webp create mode 100644 static/img/ai-chain/pierre_samaties.webp diff --git a/src/components/AIManifestoModal/index.tsx b/src/components/AIManifestoModal/index.tsx index e67bc31808..0d7382eaa3 100644 --- a/src/components/AIManifestoModal/index.tsx +++ b/src/components/AIManifestoModal/index.tsx @@ -1,6 +1,72 @@ import Link from "@docusaurus/Link"; import React, { useEffect, useRef, useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; +const principles = [ + { + number: "01", + title: "DeAI Is Safe AI", + description: + "DeAI prioritizes user safety by implementing robust security measures and rigorous testing protocols to minimize the risk of unintended consequences or malicious exploitation.", + }, + { + number: "02", + title: "DeAI Is Accessible AI", + description: + "DeAI makes advanced AI available to all and aims to maximize contributions to a prosperous future for all beings on the planet.", + }, + { + number: "03", + title: "DeAI Is Self-Sovereign AI", + description: + "Users should have complete control over their AI. Your AI should work for you, reflect your values and serve your needs without external interference.", + }, + { + number: "04", + title: "DeAI Is Secure AI", + description: + "Privacy is a guarantee, not just a feature. DeAI ensures your data remains your own, safe from prying eyes and misuse.", + }, + { + number: "05", + title: "DeAI Is Participatory AI", + description: + "By allowing open contributions and attributing the created value back to the owner, DeAI enables everyone to participate in shaping the AI revolution and benefiting from it.", + }, + { + number: "06", + title: "DeAI is Responsible AI", + description: + "User empowerment and respecting stakeholders' best interests are topmost priorities for DeAI. This includes best efforts to be resource-efficient and deliver sustainable solutions.", + }, + { + number: "07", + title: "DeAI Is Verifiable AI", + description: + "The open-source nature of DeAI allows anyone to inspect the underlying code and algorithms for transparency in how the AI functions. By enabling thorough inspection and verification, DeAI systems promote accountability to identify and rectify errors or biases in the AI's behavior.", + }, +]; + +interface ManifestoPrincipleProps { + number: string; + title: string; + description: string; +} + +const ManifestoPrinciple: React.FC = ({ + number, + title, + description, +}) => { + return ( +
+
+ {number} +

{title}

+
+

{description}

+
+ ); +}; const AIManifestoModal: React.FC<{ onClose: () => void; @@ -9,7 +75,7 @@ const AIManifestoModal: React.FC<{ return (
-
+
+ {" "} +
+
+

+ Manifesto for Decentralized AI (DeAI) +

+

+ In an era where Artificial Intelligence (AI) is increasingly + central to our daily lives, the power and control over these + transformative technologies must not be confined to a few + centralized entities. We envision a future where AI is + democratized, broadly empowering, and aligned with the needs and + values of all users. This manifesto lays out the principles and + reasons for decentralizing AI and advocating for a fair, + transparent, and user-centric AI ecosystem. +

+
+ {principles.map((principle, index) => ( + + ))} +
+

+ Join us in the movement towards Decentralized AI. Together, we + can create an AI ecosystem that works for everyone and provides + control, privacy, and fairness in the AI technologies that shape + our lives. +

+
+
+
); diff --git a/src/components/Common/VideoCard/index.tsx b/src/components/Common/VideoCard/index.tsx index 77d3a1983f..59ee514d9c 100644 --- a/src/components/Common/VideoCard/index.tsx +++ b/src/components/Common/VideoCard/index.tsx @@ -38,10 +38,14 @@ export const TitleVideoCard: React.FC<{ return (
- {title} + {title} -
+

{title}

diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index a56e787197..e19e81c2b0 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -1,4 +1,4 @@ -import React, { useRef, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import Link from "@docusaurus/Link"; import AnimateSpawn from "@site/src/components/Common/AnimateSpawn"; import DarkHeroStyles from "@site/src/components/Common/DarkHeroStyles"; @@ -23,6 +23,8 @@ import { AirtableEvent } from "@site/src/components/GlobalEvents/types"; import LinkArrowUpRight from "@site/src/components/Common/Icons/LinkArrowUpRight"; import { useScrollSpyMenu } from "../../utils/use-scroll-spy-menu"; import AIManifestoModal from "@site/src/components/AIManifestoModal"; +import { ArrowIconRight } from "@site/src/components/RoadmapPage/Overlay"; +import { useElementSize } from "@site/src/utils/use-element-size"; interface FeatureCardProps { imageSrc: string; @@ -58,10 +60,172 @@ const FeatureCard: React.FC = ({ ); }; +interface RoadmapItemProps { + number: string; + title: string; + date: string; +} + +const RoadmapItem: React.FC = ({ number, title, date }) => { + return ( +
+

{number}

+
+

+ {title} +

+ +
+
+ ); +}; + +interface AIFeatureCardProps { + number: string; + icon: string; + title: string; + features: string[]; +} + +const AIFeatureCard: React.FC = ({ + number, + icon, + title, + features, +}) => { + return ( +
+
+ {number} + +
+
+

{title}

+
    + {features.map((item, index) => ( +
  • + + {item} +
  • + ))} +
+
+
+ ); +}; +const Collapse: React.FC<{ + title: React.ReactNode; + children: React.ReactNode; + open: boolean; + onClick: () => void; +}> = ({ title, children, open, onClick }) => { + const ref = useRef(); + const size = useElementSize(ref); + + return ( +
+ +
+
{children}
+
+
{children}
+
+ ); +}; + +interface FaqItemProps { + question: string; + answer: string; +} + +const FaqItem: React.FC = ({ question, answer }) => { + return ( +
+

{question}

+

{answer}

+
+ ); +}; + +const ContactCard: React.FC = () => { + return ( + + ); +}; + const features: FeatureCardProps[] = [ { imageSrc: "/img/ai-chain/1a.svg", - title: "Tamper proof.", + title: "Immune to cyber attacks.", description: "Sensitive AI models in finance and public administration need protection beyond individual control. ICP blockchain ensures integrity and prevents tampering.", }, @@ -92,11 +256,184 @@ const features: FeatureCardProps[] = [ }, ]; +const roadmapData = [ + { + number: "01", + title: "Data storage to run large AI models", + date: "June 2024", + }, + { + number: "02", + title: "Optimized floating-point arithmetic for faster AI processing", + date: "July 2024", + }, + { + number: "03", + title: "Optimized AI inference API for more performance", + date: "2025", + }, + { + number: "04", + title: "GPU acceleration for enterprise-grade AI workloads", + date: "2025", + }, +]; + +const aiFeatures = [ + { + number: "01", + icon: "/img/ai-chain/1b.svg", + title: "Infrastructure and resources", + features: ["Compute marketplaces", "Data storage", "AI Smart Contracts"], + }, + { + number: "02", + icon: "/img/ai-chain/2b.svg", + title: "Development and training", + features: ["AI development", "Model training", "Data marketplace"], + }, + { + number: "03", + icon: "/img/ai-chain/3b.svg", + title: "AI inference", + features: ["Data analysis", "Content generation", "AI model marketplace"], + }, + { + number: "04", + icon: "/img/ai-chain/4b.svg", + title: "AI verification and security", + features: [ + "Content provenance", + "Model verification", + "Regulatory compliance", + ], + }, +]; + +const projects: { + imageUrl: string; + title: string; + body: React.ReactNode; +}[] = [ + { + title: "DecideAI", + body: "DecideAI offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo.", + imageUrl: "/img/ai-chain/decideai.webp", + }, + { + title: "Kinic", + body: "Kinik offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo. .", + imageUrl: "/img/ai-chain/kinic.webp", + }, + { + title: "Elna.ai", + body: "Elna offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo. ", + imageUrl: "/img/ai-chain/elnaai.webp", + }, + { + title: "Datapond", + body: "Datapond offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo. ", + imageUrl: "/img/ai-chain/datapond.webp", + }, +]; + +interface FaqData { + question: string; + answer: string; +} + +const faqData: FaqData[] = [ + { + question: "What is AI on-chain and why is it important?", + answer: + "AI on-chain refers to running AI models and applications directly on the blockchain, providing decentralized, tamper-proof, and transparent AI solutions. This approach ensures enhanced security, privacy, and data integrity, which are crucial for applications in sectors like finance, healthcare, and beyond.", + }, + { + question: "How does ICP enable AI on-chain?", + answer: + "The Internet Computer (ICP) enables AI on-chain through its unique architecture that supports scalable, secure, and fully decentralized smart contracts called canisters. These canisters allow AI models to run directly on the blockchain, eliminating the need for traditional cloud-based AI solutions.", + }, + { + question: + "What are the benefits of running AI on-chain compared to traditional methods?", + answer: + "Running AI on-chain offers several benefits, including enhanced data privacy, resistance to censorship, reduced dependency on centralized cloud providers, and the ability to leverage blockchain's transparency and security features.", + }, + { + question: + "How can developers get started with AI on the Internet Computer?", + answer: + "Developers can start by accessing our comprehensive resources, including developer documentation, sample code, demos, and our GitHub repository. These tools provide step-by-step guidance on building and deploying AI applications on ICP. In addition a good starting point is to connect to the DeAI dev group.", + }, + { + question: + "What tools and programming languages are supported for developing AI on ICP?", + answer: + "ICP supports development in languages such as Motoko and Rust, which are optimized for creating and managing canisters. These canisters can run AI models and connect with external data sources, providing a flexible environment for AI development.", + }, + { + question: "What are the use cases for AI on ICP?", + answer: + "Use cases for AI on ICP span various industries, including finance, healthcare, supply chain management, and more. AI on-chain can be used for applications such as fraud detection, predictive analytics, personalized medicine, and automated decision-making systems.", + }, + { + question: + "What makes ICP different from other blockchains for AI applications?", + answer: + "ICP stands out due to its ability to run AI fully on-chain, its scalability, and its low-cost computation. Unlike other blockchains that might rely on off-chain solutions, ICP offers a seamless, fully integrated environment for decentralized AI.", + }, + { + question: + "How does ICP ensure the privacy and security of AI models and data?", + answer: + "ICP utilizes advanced cryptographic techniques and a decentralized architecture to protect AI models and data from tampering, unauthorized access, and data breaches, ensuring that sensitive information remains secure.", + }, + { + question: "Can existing AI models be deployed on ICP?", + answer: + "Yes, existing AI models can be adapted and deployed on ICP. Developers may need to convert their models into a compatible format and use ICP's canister technology to run them on-chain.", + }, + { + question: + "Where can I find community support and further learning resources?", + answer: + "Developers and entrepreneurs can join our community forums, attend workshops, and participate in webinars. Additionally, our website provides links to detailed tutorials, the latest updates, and a vibrant community ready to support your journey with AI on ICP.", + }, +]; + const MotionLink = motion(Link); const { events, websiteCategory, regions } = eventsData; function AISubPage() { const [manifestoModalOpen, setManifestoModalOpen] = useState(false); + const [openProjectIndex, setOpenProjectIndex] = useState(0); + + type ContentCardType = { + title: string; + id: string; + }; + const [content, setContent] = useState([]); + const highlight = useScrollSpyMenu(".content-card-with-id"); + + function onItemClick(e, index) { + const target = document.querySelectorAll(`.content-card-with-id`)[index]; + if (target) { + const y = target.getBoundingClientRect().top + window.pageYOffset - 115; + window.scrollTo({ top: y, behavior: "smooth" }); + e.preventDefault(); + } + } + + useEffect(() => { + const cards = document.querySelectorAll(".content-card-with-id"); + const newContent = Array.from(cards).map((card) => ({ + title: card.querySelector("h3")?.textContent, + id: card.id, + image: `/img/ai-chain/${card.id}.webp`, // Assuming you have corresponding images + })); + setContent(newContent); + }, []); + function closeOverlay() { document.body.style.overflow = ""; setManifestoModalOpen(false); @@ -114,7 +451,7 @@ function AISubPage() {
-
+
-
+
- + TECHNOLOGY - + R&D at the core of Internet Computer’s AI innovation {" "} - + AI on-chain is made possible by the unique technological capabilities of the Internet Computer Protocol (ICP). Running AI as a smart contract on a blockchain is a significant innovation @@ -232,121 +569,193 @@ function AISubPage() { optimized to run up to 10x faster, enabling larger models to run on-chain. + + More on AI Roadmap + - -
+
+
+ + 02 + + + Optimized floating-point arithmetic for faster AI + processing.{" "} + {" "} + + ICP's next-gen smart contracts provide orders of magnitude + more compute per transaction compared to + current-generation blockchains. In addition, with newly + added support for WebAssembly 128-bit SIMD, smart + contracts can execute multiple floating point operations + in parallel, making running AI models much faster and more + efficient. + +
+
+ +
+
+
+ + 03 + + + Optimized AI inference API for more performance.{" "} + {" "} + + With the upcoming AI inference API, smart contracts will + be able to run larger AI models more efficiently. This + specialized API brings hardware acceleration features such + as 256-bit SIMD and parallelization across multiple CPU + cores. Future GPU subnets will benefit from GPU + acceleration, making AI models substantially more + efficient to run. + +
+
+ coming soon +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + 04 + + + GPU acceleration for enterprise-grade AI workloads.{" "} + {" "} + + ICP's next-gen smart contracts run on segregated parts of + the Internet Computer known as "subnets". The flexible + architecture of subnets allows the Internet Computer not + only to scale, but to also create subnets with different + characteristics. Work is underway to create subnets with + GPU acceleration, allowing smart contracts to run + enterprise-grade AI models directly on-chain. + +
+
+ coming soon +
+
+
- + -
+
AI Video Demos
- Watch these videos to learn more about AI on ICP. + Dominic Williams, Chief Scientist and Founder of DFINITY + Foundation, demos advancements in AI smart contracts on ICP
-
+
- - Read the full manifesto{" "} - + + Ecosystem + + + The fastest growing AI Ecosystem in Web3. + {" "} + + The ICP ecosystem is home to 60+ AI-related projects. These + dapps cover the entire AI value chain from infrastructure, + development and training, inference to verification and + security. ICP's unique capabilities have made it a preferred + platform for builders of AI dapps. + + + + + Our ecosystem is building projects along the entire AI value + chain + + + {aiFeatures.map((feature, index) => ( + + ))} + + + + + + AI Ecosystem highlights + +
+
+
+ +
+ {projects.map((p, i) => ( + setOpenProjectIndex(i)} + > +
{p.body}
+ + {p.title} +
+ ))} +
+
+
+ {projects.map((p, i) => ( +
+ {p.title} +
+ ))} +
+
+
+ +
+
+
+ +
+
+
+
+ + DeAI Manifesto + + + Created by the ICP community, the DeAI manifesto lays out + the principles and reasons for decentralizing AI and + advocating for a fair, transparent, and user-centric AI + ecosystem. Join the movement! + +
+ + Read the full manifesto{" "} + +
+
+
+
+ +
+
+ + DEVELOPERS + + + Build your next AI venture on the Internet Computer.{" "} + + Find all the essentials, including developer documentation, + code samples, demos, and our GitHub repository. + + + + + These resources are designed to help you get started with + creating decentralized AI applications on-chain. Our DeAI + developer community is also a great way to start. + + + + BUILD AI DAPPS + + +
+ +
+ +
+

Learn

+
+ + Overview of AI on-chain + + + Docs + +
+
+ +
+

Connect

+
+
+ + Contribute to the discussion + + + ICP Forum + +
+
+ + Join the bi-weekly meeeting + + + Discover + + +
+
+ + Join the discussion + + + Technical working group + + +
+
+ + Meet the experts IRL + + + Events + + +
+
+
+
+ + +
+

Build

+
+
+ + Explore the work + + + GitHub + +
+
+ + Add short title + + + DFX + +
+
+ + Add short title + + + BOUNTIES + +
+
+
+ +
+
+

Grow

+
+ + Apply for the DeAI grant + + + Grants and Programs + +
+
+
+
+
+
+
+
+
+

FAQ

+
+
+ {faqData.map((item, index) => ( + + ))} +
+
+ +
+
+
{manifestoModalOpen && ( )} diff --git a/static/img/ai-chain/1b.svg b/static/img/ai-chain/1b.svg new file mode 100644 index 0000000000..e82904361d --- /dev/null +++ b/static/img/ai-chain/1b.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/2b.svg b/static/img/ai-chain/2b.svg new file mode 100644 index 0000000000..09f5c8f4c8 --- /dev/null +++ b/static/img/ai-chain/2b.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/3b.svg b/static/img/ai-chain/3b.svg new file mode 100644 index 0000000000..3ea15fbfc5 --- /dev/null +++ b/static/img/ai-chain/3b.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/4b.svg b/static/img/ai-chain/4b.svg new file mode 100644 index 0000000000..b196994649 --- /dev/null +++ b/static/img/ai-chain/4b.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/img/ai-chain/DecideAI.webp b/static/img/ai-chain/DecideAI.webp new file mode 100644 index 0000000000000000000000000000000000000000..b9a4f168e07d86f13423ccd8c9e7ff45d71e6f21 GIT binary patch literal 55260 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 literal 0 HcmV?d00001 diff --git a/static/img/ai-chain/Kinic.webp b/static/img/ai-chain/Kinic.webp new file mode 100644 index 0000000000000000000000000000000000000000..17d214ff307917137b81a1c00a18035bfbacf316 GIT binary patch literal 30166 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 Po=2>et{}j2=m + + + + + + + + + + + + + diff --git a/static/img/ai-chain/data.svg b/static/img/ai-chain/data.svg index 375baad90a..a0db712eff 100644 --- a/static/img/ai-chain/data.svg +++ b/static/img/ai-chain/data.svg @@ -1,36 +1,35 @@ - - - - - - - - - - - + + + + + + + + + + + - - + - + - + - + - + - - + + diff --git a/static/img/ai-chain/datapond.webp b/static/img/ai-chain/datapond.webp new file mode 100644 index 0000000000000000000000000000000000000000..d2605e1cb09c35f61bdbf15618a4b628bff76f90 GIT binary patch literal 60064 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%0D~J((z%VbZSoTO^u)hu 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 Rn<>?+PzCtE)%<_Y{{TbV@=pK& literal 0 HcmV?d00001 diff --git a/static/img/ai-chain/deai-img.svg b/static/img/ai-chain/deai-img.svg new file mode 100644 index 0000000000..29e27ea09c --- /dev/null +++ b/static/img/ai-chain/deai-img.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/ai-chain/elna.webp b/static/img/ai-chain/elna.webp new file mode 100644 index 0000000000000000000000000000000000000000..88620d8231d4d6a9b1c404b50abd93d60195b93f GIT binary patch literal 3074 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 Q#Y0E`>W!=q(!>A&0Hu=+QUCw| literal 0 HcmV?d00001 diff --git a/static/img/ai-chain/elnaai.webp b/static/img/ai-chain/elnaai.webp new file mode 100644 index 0000000000000000000000000000000000000000..dac172241cf9d48b3b8738a4c02ffcc652fad5e5 GIT binary patch literal 65040 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�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 literal 0 HcmV?d00001 diff --git a/static/img/ai-chain/gpu.svg b/static/img/ai-chain/gpu.svg new file mode 100644 index 0000000000..3bd80bc6da --- /dev/null +++ b/static/img/ai-chain/gpu.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/ai-chain/icon-check-circle.svg b/static/img/ai-chain/icon-check-circle.svg new file mode 100644 index 0000000000..731cfc2d61 --- /dev/null +++ b/static/img/ai-chain/icon-check-circle.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/img/ai-chain/inference.svg b/static/img/ai-chain/inference.svg new file mode 100644 index 0000000000..8275d006f7 --- /dev/null +++ b/static/img/ai-chain/inference.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/static/img/ai-chain/islam_el_ashi.webp b/static/img/ai-chain/islam_el_ashi.webp new file mode 100644 index 0000000000000000000000000000000000000000..6b71484faf366611158a1b3ae05fac96d2fd615d GIT binary patch literal 8028 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 literal 0 HcmV?d00001 diff --git a/static/img/ai-chain/pierre_samaties.webp b/static/img/ai-chain/pierre_samaties.webp new file mode 100644 index 0000000000000000000000000000000000000000..f8c79e687eae32948ecc94810daf25e15da9fb57 GIT binary patch literal 5800 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 Date: Mon, 16 Sep 2024 16:38:40 +0200 Subject: [PATCH 05/60] update sections, images, texts --- src/components/AIManifestoModal/index.tsx | 2 +- src/components/Common/VideoCard/index.tsx | 11 +- src/css/custom.scss | 11 + src/pages/capabilities/ai.tsx | 560 ++++++++++++---------- static/img/ai-chain/3a.svg | 6 +- static/img/ai-chain/4a.svg | 8 +- static/img/ai-chain/5a.svg | 49 +- static/img/ai-chain/data.svg | 37 +- static/img/ai-chain/inference.svg | 53 +- 9 files changed, 408 insertions(+), 329 deletions(-) diff --git a/src/components/AIManifestoModal/index.tsx b/src/components/AIManifestoModal/index.tsx index 0d7382eaa3..482f8bbab1 100644 --- a/src/components/AIManifestoModal/index.tsx +++ b/src/components/AIManifestoModal/index.tsx @@ -61,7 +61,7 @@ const ManifestoPrinciple: React.FC = ({
{number} -

{title}

+

{title}

{description}

diff --git a/src/components/Common/VideoCard/index.tsx b/src/components/Common/VideoCard/index.tsx index 59ee514d9c..f1aaf38216 100644 --- a/src/components/Common/VideoCard/index.tsx +++ b/src/components/Common/VideoCard/index.tsx @@ -36,21 +36,20 @@ export const TitleVideoCard: React.FC<{ className?: string; }> = ({ image, href, title, className = "" }) => { return ( -
+
{title} -
-

{title}

-
+
+

{title}

- Watch now + Watch the video
diff --git a/src/css/custom.scss b/src/css/custom.scss index 092819c340..8967e45ca8 100644 --- a/src/css/custom.scss +++ b/src/css/custom.scss @@ -555,6 +555,17 @@ div[class^="announcementBarContent"] { } } +.hide-scrollbar { + /*FireFox*/ + scrollbar-width: none; + /*IE10+*/ + -ms-overflow-style: -ms-autohiding-scrollbar; +} +.hide-scrollbar::-webkit-scrollbar { + /*Chrome, Safari, Edge*/ + display: none; +} + @tailwind base; @tailwind components; @tailwind utilities; diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index e19e81c2b0..08e5199bbd 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -63,13 +63,13 @@ const FeatureCard: React.FC = ({ interface RoadmapItemProps { number: string; title: string; - date: string; + date?: string; } const RoadmapItem: React.FC = ({ number, title, date }) => { return ( -
-

{number}

+
+

{number}

{title} @@ -84,9 +84,9 @@ const RoadmapItem: React.FC = ({ number, title, date }) => { interface AIFeatureCardProps { number: string; - icon: string; + icon?: string; title: string; - features: string[]; + features?: string[]; } const AIFeatureCard: React.FC = ({ @@ -96,7 +96,8 @@ const AIFeatureCard: React.FC = ({ features, }) => { return ( -
+
+ {" "}
{number} = ({ ))}

-
+ ); }; + +interface ScrollableItemProps { + number: string; + title: string; + date?: string; + icon?: string; + features?: string[]; +} + +interface ScrollableSectionProps { + items: ScrollableItemProps[]; + type: "roadmap" | "aiFeatures"; + title?: string; +} + +const ScrollableSection: React.FC = ({ + items, + type, + title, +}) => { + const scrollContainerRef = useRef(null); + const [activeIndex, setActiveIndex] = useState(0); + + useEffect(() => { + const handleScroll = () => { + const container = scrollContainerRef.current; + if (container) { + const scrollLeft = container.scrollLeft; + const containerWidth = container.clientWidth; + const scrollWidth = container.scrollWidth; + const itemWidth = + type === "roadmap" ? containerWidth : containerWidth * 0.8; + + let newIndex = Math.round(scrollLeft / itemWidth); + + if (scrollLeft + containerWidth >= scrollWidth - 10) { + newIndex = items.length - 1; + } + + setActiveIndex(newIndex); + } + }; + + const container = scrollContainerRef.current; + if (container) { + container.addEventListener("scroll", handleScroll); + return () => container.removeEventListener("scroll", handleScroll); + } + }, [items.length, type]); + + const ItemComponent = type === "roadmap" ? RoadmapItem : AIFeatureCard; + + return ( +
+ {title && ( + {title} + )} +
+
+ {items.map((item, index) => ( + + ))} +
+
+
+ {items.map((_, index) => ( +
+ ))} +
+
+ ); +}; + const Collapse: React.FC<{ title: React.ReactNode; children: React.ReactNode; open: boolean; onClick: () => void; -}> = ({ title, children, open, onClick }) => { + link: string; +}> = ({ title, children, open, onClick, link }) => { const ref = useRef(); const size = useElementSize(ref); return ( -
+
-
{children}
+
+ {children} + + Visit website + +
+
+
+ {children} + + Visit website +
-
{children}
); }; @@ -167,9 +280,11 @@ interface FaqItemProps { const FaqItem: React.FC = ({ question, answer }) => { return ( -
-

{question}

-

{answer}

+
+

+ {question} +

+

{answer}

); }; @@ -208,12 +323,12 @@ const ContactCard: React.FC = () => {
- + Technical Working Group Join the discussion @@ -227,32 +342,32 @@ const features: FeatureCardProps[] = [ imageSrc: "/img/ai-chain/1a.svg", title: "Immune to cyber attacks.", description: - "Sensitive AI models in finance and public administration need protection beyond individual control. ICP blockchain ensures integrity and prevents tampering.", + "Sensitive AI models like in finance and public administration must be protected from centralized control, a prime cause for cyber attacks. ICP's decentralized infrastructure ensures integrity of AI models.", }, { imageSrc: "/img/ai-chain/2a.svg", title: "Verifiable Inputs and Outputs.", description: - "AI focuses on input and output, and for legal compliance, trust comes from auditable, verifiable data. ICP's blockchain ensures transparency and verification.", + "AI solutions built on ICP allow to verify inputs and outputs. For use cases like legal compliance, ICP ensures transparency with auditable, verifiable data.", }, { imageSrc: "/img/ai-chain/3a.svg", title: "Privacy-preserving.", description: - "AI models manage sensitive data, raising privacy risks. ICP's cryptographic encryption secures AI data, ensuring compliance with protection standards.", + "ICP's encryption protects data processed by AI models, making AI useable for confidential data and complying with data protection standards.", badge: "coming soon", }, { imageSrc: "/img/ai-chain/4a.svg", title: "Resilient.", description: - "AI-driven operations like medical care need constant availability. ICP's decentralized smart contracts ensure high availability, keeping AI models secure and operational.", + " AI-driven operations like medical care need constant availability. ICP's decentralized smart contracts ensure high availability, keeping AI models secure and operational.", }, { imageSrc: "/img/ai-chain/5a.svg", title: "AI-2-X Economy.", description: - "AI models that run as smart contracts, enable them to autonomously participate in the digital economy by interacting with digital assets such as Bitcoin, Ethereum, Stablecoins, and ICP. This setup facilitates secure, transparent, and automated transactions and contract management without human intervention.", + " AI models that run as smart contracts, enable them to autonomously participate in the digital economy by interacting with digital assets such as Bitcoin, Ethereum, Stablecoins, and ICP. This facilitates secure, transparent, and automated transactions and contract management without human intervention.", }, ]; @@ -260,17 +375,17 @@ const roadmapData = [ { number: "01", title: "Data storage to run large AI models", - date: "June 2024", + date: "", }, { number: "02", title: "Optimized floating-point arithmetic for faster AI processing", - date: "July 2024", + date: "", }, { number: "03", - title: "Optimized AI inference API for more performance", - date: "2025", + title: "Seamless Integration with Web 2.0", + date: "", }, { number: "04", @@ -314,25 +429,30 @@ const projects: { imageUrl: string; title: string; body: React.ReactNode; + link: string; }[] = [ { title: "DecideAI", - body: "DecideAI offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo.", + body: "DecideAI offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace.", + link: "https://decideai.xyz/", imageUrl: "/img/ai-chain/decideai.webp", }, { title: "Kinic", - body: "Kinik offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo. .", + body: "Kinic DAO's mission is to bring AI ownership to the world: a concept we call personal AI. Personal AI is artificial intelligence and its tooling whose ownership is moved from centralized providers to the users themselves.", + link: "https://ai.kinic.io", imageUrl: "/img/ai-chain/kinic.webp", }, { title: "Elna.ai", - body: "Elna offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo. ", + body: "ELNA is a community-driven decentralized AI agent creation platform that bridges the gap between the development, creation and monetization of AI agents on the blockchain.", + link: "https://www.elna.ai/", imageUrl: "/img/ai-chain/elnaai.webp", }, { title: "Datapond", body: "Datapond offers groundbreaking products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam quis risus eget urna mollis ornare vel eu leo. ", + link: "https://x.com/DataPondAI", imageUrl: "/img/ai-chain/datapond.webp", }, ]; @@ -408,32 +528,6 @@ function AISubPage() { const [manifestoModalOpen, setManifestoModalOpen] = useState(false); const [openProjectIndex, setOpenProjectIndex] = useState(0); - type ContentCardType = { - title: string; - id: string; - }; - const [content, setContent] = useState([]); - const highlight = useScrollSpyMenu(".content-card-with-id"); - - function onItemClick(e, index) { - const target = document.querySelectorAll(`.content-card-with-id`)[index]; - if (target) { - const y = target.getBoundingClientRect().top + window.pageYOffset - 115; - window.scrollTo({ top: y, behavior: "smooth" }); - e.preventDefault(); - } - } - - useEffect(() => { - const cards = document.querySelectorAll(".content-card-with-id"); - const newContent = Array.from(cards).map((card) => ({ - title: card.querySelector("h3")?.textContent, - id: card.id, - image: `/img/ai-chain/${card.id}.webp`, // Assuming you have corresponding images - })); - setContent(newContent); - }, []); - function closeOverlay() { document.body.style.overflow = ""; setManifestoModalOpen(false); @@ -472,7 +566,7 @@ function AISubPage() { />
Secure and Trusted AI on-chain @@ -480,10 +574,9 @@ function AISubPage() { - Explore the fastest growing AI Ecosystem in - Web3 + Fastest growing AI Ecosystem in Web3 - + Al will be at the heart of everything, driving economies and our daily lives. Al on ICP marks a major technological leap by bringing{" "} @@ -577,24 +670,13 @@ function AISubPage() { -
-
- {roadmapData.map((item, index) => ( - - ))} -
-
+ - +
-
- +
+ 01 @@ -608,17 +690,17 @@ function AISubPage() { amounts of input data. 
-
- +
+ 1.000.000x - + more data storage
-
+
-
+
8x @@ -638,7 +720,7 @@ function AISubPage() { faster
-
+
-
-
- +
+
+ 02 @@ -668,30 +750,30 @@ function AISubPage() {
-
+
- + 03 - Optimized AI inference API for more performance.{" "} + Seamless Integration with Web 2.0. {" "} - With the upcoming AI inference API, smart contracts will - be able to run larger AI models more efficiently. This - specialized API brings hardware acceleration features such - as 256-bit SIMD and parallelization across multiple CPU - cores. Future GPU subnets will benefit from GPU - acceleration, making AI models substantially more - efficient to run. + ICP is the only blockchain where smart contracts can + directly connect to Web 2.0 services using{" "} + + HTTPS outcalls + + , which opens the possibility for AI applications running + on ICP to integrate and fetch data from external services.
-
+
coming soon
-
+
-
-
+
+
-
+
- + 04 @@ -728,7 +810,7 @@ function AISubPage() { enterprise-grade AI models directly on-chain.
-
+
coming soon
@@ -747,7 +829,7 @@ function AISubPage() { className="tw-title-sm md:w-[27rem]" variants={transitions.item} > - AI Video Demos + AI Demos
- - - Our ecosystem is building projects along the entire AI value - chain - - - {aiFeatures.map((feature, index) => ( - - ))} - - + @@ -840,7 +916,7 @@ function AISubPage() {
{projects.map((p, i) => ( @@ -848,13 +924,14 @@ function AISubPage() { title={p.title} open={openProjectIndex === i} onClick={() => setOpenProjectIndex(i)} + link={p.link} >
{p.body}
{p.title} ))} @@ -874,7 +951,11 @@ function AISubPage() { " style={{ opacity: i === openProjectIndex ? 1 : 0 }} > - {p.title} + {p.title}
))}
@@ -883,7 +964,7 @@ function AISubPage() {
-
+
DeAI Manifesto - + Created by the ICP community, the DeAI manifesto lays out the principles and reasons for decentralizing AI and advocating for a fair, transparent, and user-centric AI @@ -926,12 +1007,12 @@ function AISubPage() { DEVELOPERS Build your next AI venture on the Internet Computer.{" "} Find all the essentials, including developer documentation, @@ -940,7 +1021,7 @@ function AISubPage() { These resources are designed to help you get started with @@ -954,143 +1035,142 @@ function AISubPage() {
-
- -
-

Learn

-
- - Overview of AI on-chain - - - Docs - -
-
- -
-

Connect

-
-
- - Contribute to the discussion - - - ICP Forum - -
-
- - Join the bi-weekly meeeting - - - Discover - - -
-
- - Join the discussion - - - Technical working group - - -
-
- - Meet the experts IRL - - - Events - - -
-
-
-
- - -
-

Build

-
-
+
+
+ +
+

Learn

+
- Explore the work + Overview of AI on-chain - GitHub + Docs
-
- - Add short title - - - DFX - +
+ +
+

Connect

+
+
+ + Contribute to the discussion + + + ICP Forum + +
+
+ + Join the bi-weekly meeting + + + Discover + +
+
+ + Join the discussion + + + Technical working group + +
+
+ + Meet the experts IRL + + + Events + +
-
- - Add short title - - - BOUNTIES - +
+ + + +
+

Build

+
+
+ + Explore the work + + + GitHub + +
+
+ + Add short title + + + DFX + +
+
+ + Add short title + + + BOUNTIES + +
-
-
-
-

Grow

+
- - Apply for the DeAI grant - - - Grants and Programs - +

Grow

+
+ + Apply for the DeAI grant + + + Grants and Programs + +
-
- + +
-

FAQ

+

FAQ

{faqData.map((item, index) => ( diff --git a/static/img/ai-chain/3a.svg b/static/img/ai-chain/3a.svg index ef81d38a87..878ca498e2 100644 --- a/static/img/ai-chain/3a.svg +++ b/static/img/ai-chain/3a.svg @@ -1,9 +1,7 @@ - - - + - + diff --git a/static/img/ai-chain/4a.svg b/static/img/ai-chain/4a.svg index 83b99388a3..bb82ee8b05 100644 --- a/static/img/ai-chain/4a.svg +++ b/static/img/ai-chain/4a.svg @@ -1,9 +1,7 @@ - - - - + + - + diff --git a/static/img/ai-chain/5a.svg b/static/img/ai-chain/5a.svg index 1de013ed04..4f3a2f6b64 100644 --- a/static/img/ai-chain/5a.svg +++ b/static/img/ai-chain/5a.svg @@ -1,50 +1,7 @@ - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/static/img/ai-chain/data.svg b/static/img/ai-chain/data.svg index a0db712eff..f4a8bf1226 100644 --- a/static/img/ai-chain/data.svg +++ b/static/img/ai-chain/data.svg @@ -1,35 +1,40 @@ - - - - - - + + + - - - - + + + + + + + + - + + - + - + - + - + - + + + + diff --git a/static/img/ai-chain/inference.svg b/static/img/ai-chain/inference.svg index 8275d006f7..13c6dcc022 100644 --- a/static/img/ai-chain/inference.svg +++ b/static/img/ai-chain/inference.svg @@ -1,17 +1,48 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + From 140e54e7370a5a2df1cfd8c0a71e8b113bcb87f0 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Mon, 16 Sep 2024 17:11:02 +0200 Subject: [PATCH 06/60] update images --- static/img/ai-chain/gpu.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/img/ai-chain/gpu.svg b/static/img/ai-chain/gpu.svg index 3bd80bc6da..b48899c136 100644 --- a/static/img/ai-chain/gpu.svg +++ b/static/img/ai-chain/gpu.svg @@ -28,8 +28,8 @@ - - + + From c0940d606eb323e6fe567c7a0856bd9384e3388a Mon Sep 17 00:00:00 2001 From: reigj1 Date: Mon, 16 Sep 2024 17:13:38 +0200 Subject: [PATCH 07/60] rename images --- .../img/ai-chain/{DecideAI.webp => decideai.webp} | Bin static/img/ai-chain/{Kinic.webp => kinic.webp} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename static/img/ai-chain/{DecideAI.webp => decideai.webp} (100%) rename static/img/ai-chain/{Kinic.webp => kinic.webp} (100%) diff --git a/static/img/ai-chain/DecideAI.webp b/static/img/ai-chain/decideai.webp similarity index 100% rename from static/img/ai-chain/DecideAI.webp rename to static/img/ai-chain/decideai.webp diff --git a/static/img/ai-chain/Kinic.webp b/static/img/ai-chain/kinic.webp similarity index 100% rename from static/img/ai-chain/Kinic.webp rename to static/img/ai-chain/kinic.webp From 87c43cbada478c0f2275e0676df415461cfb7538 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Tue, 17 Sep 2024 10:36:52 +0200 Subject: [PATCH 08/60] update logic --- src/pages/capabilities/ai.tsx | 75 ++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 08e5199bbd..0222e16148 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -25,6 +25,7 @@ import { useScrollSpyMenu } from "../../utils/use-scroll-spy-menu"; import AIManifestoModal from "@site/src/components/AIManifestoModal"; import { ArrowIconRight } from "@site/src/components/RoadmapPage/Overlay"; import { useElementSize } from "@site/src/utils/use-element-size"; +import { useLocation } from "@docusaurus/router"; interface FeatureCardProps { imageSrc: string; @@ -70,13 +71,15 @@ const RoadmapItem: React.FC = ({ number, title, date }) => { return (

{number}

-
+

{title}

- + {date && ( + + )}
); @@ -250,24 +253,10 @@ const Collapse: React.FC<{ }} ref={ref} > -
- {children} - - Visit website - -
+
{children}
{children} - - Visit website -
); @@ -527,14 +516,34 @@ const { events, websiteCategory, regions } = eventsData; function AISubPage() { const [manifestoModalOpen, setManifestoModalOpen] = useState(false); const [openProjectIndex, setOpenProjectIndex] = useState(0); + const location = useLocation(); + + useEffect(() => { + if (location.hash === "#manifesto") { + openOverlay(); + } + }, [location]); function closeOverlay() { document.body.style.overflow = ""; setManifestoModalOpen(false); + // Remove the hash from the URL + window.history.pushState( + "", + document.title, + window.location.pathname + window.location.search + ); } + function openOverlay() { document.body.style.overflow = "hidden"; setManifestoModalOpen(true); + // Add #manifesto to the URL + window.history.pushState( + "", + document.title, + window.location.pathname + window.location.search + "#manifesto" + ); } return ( @@ -616,7 +625,7 @@ function AISubPage() { className="tw-title-sm md:tw-title-lg mb-3 md:mb-6" variants={transitions.item} > - AI on-chain - a major technological leap + AI on-chain: a major technological leap
-
+
ICP is the only blockchain where smart contracts can directly connect to Web 2.0 services using{" "} - + HTTPS outcalls , which opens the possibility for AI applications running @@ -926,8 +938,15 @@ function AISubPage() { onClick={() => setOpenProjectIndex(i)} link={p.link} > -
{p.body}
- +
+
{p.body}
+ + Visit website + +
{p.title}
-
+

Learn

@@ -1053,7 +1072,7 @@ function AISubPage() {
-
+

Connect

@@ -1108,7 +1127,7 @@ function AISubPage() { variants={transitions.item} className="space-y-6 flex flex-col h-full" > -
+

Build

@@ -1147,7 +1166,7 @@ function AISubPage() {
-
+

Grow

From 6b3c52e8cab28f06dd1b9cd42c72c5e58ca8c432 Mon Sep 17 00:00:00 2001 From: David Aerne Date: Tue, 17 Sep 2024 14:12:19 +0200 Subject: [PATCH 09/60] center logo --- src/pages/capabilities/ai.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 0222e16148..aba525f9a2 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -794,13 +794,13 @@ function AISubPage() {
-
-
-
+
+
+
From 33dad9f1d90d9662b4c20ed6012ad83a8be22075 Mon Sep 17 00:00:00 2001 From: David Aerne Date: Tue, 17 Sep 2024 14:33:37 +0200 Subject: [PATCH 10/60] make border-radius consistant --- src/components/Common/VideoCard/index.tsx | 2 +- src/pages/capabilities/ai.tsx | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/components/Common/VideoCard/index.tsx b/src/components/Common/VideoCard/index.tsx index f1aaf38216..051c15642e 100644 --- a/src/components/Common/VideoCard/index.tsx +++ b/src/components/Common/VideoCard/index.tsx @@ -22,7 +22,7 @@ export const ImageOnlyVideoCard: React.FC<{ diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index aba525f9a2..9ca49ebcf6 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -69,7 +69,7 @@ interface RoadmapItemProps { const RoadmapItem: React.FC = ({ number, title, date }) => { return ( -
+

{number}

@@ -99,7 +99,7 @@ const AIFeatureCard: React.FC = ({ features, }) => { return ( -
+
{" "}
{number} @@ -280,7 +280,7 @@ const FaqItem: React.FC = ({ question, answer }) => { const ContactCard: React.FC = () => { return ( -

Privately share documents with other organizations and - customers, using on-chain encryption enabled by VETKeys. + customers, using onchain encryption enabled by VETKeys.

@@ -459,7 +459,7 @@ function EnterprisePage() { ORIGYN Foundation, they are building a solution on the Internet Computer to improve their “100% made in Italy” verification service. Consumers benefit from product authenticity of origin - certificates stored fully on-chain and protected by tamperproof + certificates stored fully onchain and protected by tamperproof smart contracts.

@@ -151,7 +151,7 @@ function EthDenverPage() { className="tw-lead-sm md:tw-lead mb-8 mt-10 md:mt-0" variants={transitions.item} > - Lightning fast and fully on-chain dapps running on the + Lightning fast and fully onchain dapps running on the Internet Computer blockchain, the only true World Computer that enables a fully decentralized ecosystem. @@ -353,7 +353,7 @@ function EthDenverPage() { variants={transitions.item} >

- On-chain Governance for EVM DAOs + Onchain Governance for EVM DAOs

Challenge: explore ways of using the Internet Computer to @@ -903,7 +903,7 @@ function EthDenverPage() { Web3 still runs on Big Tech's cloud. Blockchains can host tokens, but only tiny amounts of data and compute, and no web. But not the Internet Computer blockchain. The IC runs it all - on-chain, fully decentralized — from simple dapps, to high + onchain, fully decentralized — from simple dapps, to high user-volume social networks and games, to oderbook exchanges and enterprise systems, without the need for traditional IT. @@ -928,7 +928,7 @@ function EthDenverPage() { -

100% on-chain Web3

+

100% onchain Web3

Decentralize your Ethereum dapp by hosting frontend and backend data on the Internet Computer. @@ -381,7 +381,7 @@ function EthereumIntegrationPage() { ckETH and ckERC-20 expose ICRC-1 and 2 ledger interfaces (the token standards of ICP), making it simple for all ICP wallets to offer ckETH support. Total value of ckETH is fully backed 1:1 by - ETH, and can always be verified by viewing the on-chain dashboard + ETH, and can always be verified by viewing the onchain dashboard and metrics of the canisters.

@@ -415,7 +415,7 @@ function EthereumIntegrationPage() {

EVM RPC

The EVM RPC canister is an ICP smart contract for communicating - with Ethereum and other EVM blockchains using an on-chain API. It + with Ethereum and other EVM blockchains using an onchain API. It introduces methods that massively simplify the developer experience. The Tritium milestone allows communication with Ethereum, Arbitrum, Optimism and Base. Interoperability can be diff --git a/src/pages/gaming.tsx b/src/pages/gaming.tsx index 4f460e549d..66b20e55b0 100644 --- a/src/pages/gaming.tsx +++ b/src/pages/gaming.tsx @@ -20,7 +20,7 @@ function GamingPage() { return ( @@ -57,7 +57,7 @@ function GamingPage() { shift in gaming, enabling developers, modders and players to build composable, and permissionless game worlds that live on the blockchain forever. Now possible on the Internet Computer — - 100% on-chain. + 100% onchain.

@@ -175,7 +175,7 @@ function GamingPage() { Autonomous Worlds

- Autonomous worlds are on-chain game worlds where all player + Autonomous worlds are onchain game worlds where all player interactions, and digital assets are stored on the blockchain. They enable new forms of gaming experiences and game genres, as these worlds align incentives of developers, modders, and @@ -266,7 +266,7 @@ function GamingPage() { large-scale, extendable game worlds hosted end-to-end on the blockchain. Reverse gas model enables novel revenue models, and lowers the barrier of entry for new players who don’t want to - setup a wallet just to interact with an on-chain game. + setup a wallet just to interact with an onchain game. Build anything on your own unique voxel island saved as a mutable NFT world, or visit the worlds others have built — - 100% on-chain, on the Internet Computer. + 100% onchain, on the Internet Computer. @@ -365,7 +365,7 @@ function GamingPage() { Plethora

- Fully on-chain web3 platformer with the goal of rewarding users + Fully onchain web3 platformer with the goal of rewarding users both with fun gameplay and NFTs. Plethora empowers NFT projects to launch their collections with immersive experiences customized for you. Play now to compete, have fun, and earn @@ -406,7 +406,7 @@ function GamingPage() { loading="lazy" className="w-30" /> -

100% on-chain

+

100% onchain

The Internet Computer enables these worlds to be hosted fully on the blockchain. As canister smart contracts serve web, @@ -482,7 +482,7 @@ function GamingPage() { className="tw-lead-sm md:tw-lead-sm mb-12" variants={transitions.item} > - Since ICP dapps can be 100% on-chain, DAOs on the Internet + Since ICP dapps can be 100% onchain, DAOs on the Internet Computer can govern complete game worlds end-to-end, including a web-based game client. @@ -527,7 +527,7 @@ function GamingPage() { open-sourced game tooling that handles most of the complex smart contract infrastructure, so you can focus on gameplay, and your game client. Player interactions, NFT minting/burning, and the - on-chain game server is managed by BOOM DAO's World Engine + onchain game server is managed by BOOM DAO's World Engine Protocol.

@@ -561,7 +561,7 @@ function GamingPage() { >

ICDex

- First orderbook-based DEX running fully on-chain. Bypass + First orderbook-based DEX running fully onchain. Bypass CEXs and get ICP or CHAT tokens for your BTC.{" "}

diff --git a/src/pages/internet-identity.tsx b/src/pages/internet-identity.tsx index d430ee7e95..6ae3ad9f9c 100644 --- a/src/pages/internet-identity.tsx +++ b/src/pages/internet-identity.tsx @@ -36,7 +36,7 @@ const users = [ target="_blank" rel="noopener noreferrer" > - 100s of next generation fully on-chain dapps + 100s of next generation fully onchain dapps {" "} built end-to-end on the Internet Computer blockchain without needing to create usernames and passwords. Secure and seamless authentication and @@ -104,7 +104,7 @@ const developers = [ }, { icon: "img/internet-identity/features-2.svg", - title: "Build fully on-chain dapps", + title: "Build fully onchain dapps", description: "Build the next generation of secure, tamperproof and fully-on chain web3 applications on the Internet Computer.\ Dynamic web3 experiences (SocialFi, GameFi) built with smart contracts require a new approach to secure \ @@ -618,7 +618,7 @@ function InternetIdentityPage() {

Internet Computer allows anyone to develop and deploy fully - on-chain web applications. With only the browser, users can + onchain web applications. With only the browser, users can operate any dapp and perform transactions beyond the mere transfer of tokens. This design has the following implications: diff --git a/src/pages/nft.tsx b/src/pages/nft.tsx index 618456be2c..1452a22361 100644 --- a/src/pages/nft.tsx +++ b/src/pages/nft.tsx @@ -222,7 +222,7 @@ function NftPage() { Entrepot

- The first NFT marketplace on the Internet Computer. This marketplace has launched 100s of collections with their no-code minting tool, and have over 1TB of assets stored fully on-chain. + The first NFT marketplace on the Internet Computer. This marketplace has launched 100s of collections with their no-code minting tool, and have over 1TB of assets stored fully onchain.

$36M+ in trading @@ -272,7 +272,7 @@ function NftPage() { Make the most out of NFTs

- The Internet Computer enables a wide variety of unique NFTs. Since canister smart contracts can store over 100GB of data, every part of an ICP NFT can be hosted on the blockchain giving complete ownership to collectors. All data and code being on-chain allows developers to make any digital object, even full websites, or chat groups into NFTs. + The Internet Computer enables a wide variety of unique NFTs. Since canister smart contracts can store over 100GB of data, every part of an ICP NFT can be hosted on the blockchain giving complete ownership to collectors. All data and code being onchain allows developers to make any digital object, even full websites, or chat groups into NFTs.

Cost of storing 1GB of NFT - collections on-chain + collections onchain

@@ -455,7 +455,7 @@ function NftPage() { />

Collect digital pets

- There’s no doubt that people love to foster and collect endearing creatures to inhabit their favorite digital universes. Think of Pokémon, Digimon and Axie Infinity. ToyoWorld is creating an on-chain digi monster universe, so you own and collect fun digital pets. + There’s no doubt that people love to foster and collect endearing creatures to inhabit their favorite digital universes. Think of Pokémon, Digimon and Axie Infinity. ToyoWorld is creating an onchain digi monster universe, so you own and collect fun digital pets.

The NNS is one of the world's largest DAOs that governs the - Internet Computer. It is a 100% on-chain, permissionless + Internet Computer. It is a 100% onchain, permissionless system that continuously upgrades the Internet Computer based on the voting of ICP token holders. diff --git a/src/pages/ois.tsx b/src/pages/ois.tsx index 0911e53138..9c1037b95c 100644 --- a/src/pages/ois.tsx +++ b/src/pages/ois.tsx @@ -86,7 +86,7 @@ function OpenChatPage() { An "open internet service" (OIS) keeps all its code, user - experience, compute and data on-chain, and must be + experience, compute and data onchain, and must be transparently configured, updated and instructed by an advanced DAO: a public governance framework called a "service nervous system" (SNS). @@ -149,7 +149,7 @@ function OpenChatPage() { className="container-10 mt-24 md:mt-30 " > , which store and process all its data, and serve the user - experience into web browsers. Because it runs fully on-chain, + experience into web browsers. Because it runs fully onchain, without centralization, an advanced community DAO has taken over responsibility for pushing updates to its software logic.

diff --git a/src/pages/olympus.tsx b/src/pages/olympus.tsx index 6e687187e4..d1ff5aab0d 100644 --- a/src/pages/olympus.tsx +++ b/src/pages/olympus.tsx @@ -25,7 +25,7 @@ const layoutData = [ image: "img/accelerator/image_2.webp", title: "Transparent", description: - "Metrics and reputation are key factors to make informed decisions. OLYMPUS infrastructure provides on-chain growth data for projects and multi-party rating tools to ensure verifiable reputation at all levels. Startups are publicly rated on a range of parameters including team, product, value proposition, business model, and technology.", + "Metrics and reputation are key factors to make informed decisions. OLYMPUS infrastructure provides onchain growth data for projects and multi-party rating tools to ensure verifiable reputation at all levels. Startups are publicly rated on a range of parameters including team, product, value proposition, business model, and technology.", reverse: false, }, { @@ -97,8 +97,8 @@ function AcceleratorPage() { return ( @@ -126,14 +126,14 @@ function AcceleratorPage() { OLYMPUS - The On-Chain Acceleration Platform + The Onchain Acceleration Platform
- OLYMPUS is the first on-chain Web3 acceleration platform + OLYMPUS is the first onchain Web3 acceleration platform connecting founders, investors, mentors and talents across different ecosystems. diff --git a/src/pages/sns/faq.tsx b/src/pages/sns/faq.tsx index 6167e96c7d..90df8a661b 100644 --- a/src/pages/sns/faq.tsx +++ b/src/pages/sns/faq.tsx @@ -97,11 +97,11 @@ function SnsFaqPage() {
  • The design of SNSs is similar to that of the{" "} Network Nervous System (NNS), which - is the on-chain DAO that governs the whole ICP. + is the onchain DAO that governs the whole ICP.
  • A dapp controlled by an SNS DAO is governed by SNS token - holders submitting and voting on on-chain proposals. No one + holders submitting and voting on onchain proposals. No one developer or group of people controls the dapp, rather the dapp is controlled by voting via tokens.
  • @@ -124,11 +124,11 @@ function SnsFaqPage() { {" "} (frontend, backend application logic, and data), so SNS DAOs are unique in that they can fully control (via voting) every aspect - of a dapp, since everything is on-chain. Having fully on-chain + of a dapp, since everything is onchain. Having fully onchain DAOs is important because it enables all decisions to be executed on the blockchain and thus facilitates true decentralization. This is in contrast to existing DAOs - on other blockchains where voting takes place on-chain but the + on other blockchains where voting takes place onchain but the execution of the results are often carried out by developers off-chain.{" "}

    @@ -199,7 +199,7 @@ function SnsFaqPage() { > The most important thing you can do as an SNS DAO member is to - participate in governance. On-chain governance is what + participate in governance. Onchain governance is what differentiates DAOs from traditional web applications, as members play a key role in the DAO's success. DAO members can contribute in many ways, from pushing code, to designing a logo or a UI, to @@ -207,7 +207,7 @@ function SnsFaqPage() { There are many ways members can participate in an SNS DAO, both - on-chain and off-chain. Creating proposals requires coding skills. + onchain and off-chain. Creating proposals requires coding skills. Some examples include:

    • @@ -922,7 +922,7 @@ function SnsFaqPage() { title="Video: Next Generation DAOs" > The Internet Computer is a true world computer. It hosts the - largest collection of Web3 social media services fully on-chain. + largest collection of Web3 social media services fully onchain. Services like OpenChat, DSCVR and distrikt are already well on their way to mass adoption, with over 300,000 users combined. @@ -380,10 +380,10 @@ function SocialMediaDappsPage() { Provides out of the box anonymous authentication system
    • - Store large amounts of data on-chain + Store large amounts of data onchain
    • - Store private data on-chain + Store private data onchain

    diff --git a/src/pages/use-cases.tsx b/src/pages/use-cases.tsx index 75821332be..e23ab4c1f0 100644 --- a/src/pages/use-cases.tsx +++ b/src/pages/use-cases.tsx @@ -77,7 +77,7 @@ function UseCasesPage() { Run your AI models on the blockchain

    - Run AI models entirely on-chain to benefit from the security, + Run AI models entirely onchain to benefit from the security, resilience, and power of the ICP blockchain.

    @@ -92,7 +92,7 @@ function UseCasesPage() {
    DeFi

    - On-chain swaps + Onchain swaps

    Imagine a decentralized order-book exchange built exclusively @@ -120,7 +120,7 @@ function UseCasesPage() {

    An open internet service (OIS) keeps all its code, user - experience, compute and data on-chain, and must be + experience, compute and data onchain, and must be transparently configured, updated and instructed by an advanced DAO. The Internet Computer enables this via a public governance DAO framework called a service nervous system @@ -171,7 +171,7 @@ function UseCasesPage() { shift in gaming, enabling developers, modders and players to build composable, and permissionless game worlds that live on the blockchain forever. Now possible on the Internet Computer - — 100% on-chain. + — 100% onchain.

    NFTs

    - NFT’s live fully on-chain{" "} + NFT’s live fully onchain{" "}

    The Internet Computer is the only blockchain storing all diff --git a/static/mediaVideos.json b/static/mediaVideos.json index 682ec12227..4fe02177ed 100644 --- a/static/mediaVideos.json +++ b/static/mediaVideos.json @@ -1,6 +1,6 @@ [ { - "title": "Fully On-chain with DFINITY - Ep. 01 | Subnets", + "title": "Fully Onchain with DFINITY - Ep. 01 | Subnets", "href": "WxRgm6JAGpQ", "tags": ["interviews"] }, From 7af7fce347485696e664daf579bbd8a8072aeeca Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 11:14:48 +0200 Subject: [PATCH 30/60] revert sidebar ID changes --- sidebars.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sidebars.js b/sidebars.js index 72a2727536..a7770f18d7 100644 --- a/sidebars.js +++ b/sidebars.js @@ -522,8 +522,8 @@ const sidebars = { type: "category", label: "Onchain libraries", items: [ - "developer-docs/developer-tools/onchain/cdks", - "developer-docs/developer-tools/onchain/ic-js", + "developer-docs/developer-tools/on-chain/cdks", + "developer-docs/developer-tools/on-chain/ic-js", ], }, { @@ -1093,7 +1093,7 @@ const sidebars = { label: "Overview", id: "developer-docs/ai/overview", }, - "developer-docs/ai/ai-onchain", + "developer-docs/ai/ai-on-chain", "developer-docs/ai/machine-learning-sample", ], }, From 95c4fad3e509e7c621d84e9e81c5b6a0eb4027f9 Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 11:27:29 +0200 Subject: [PATCH 31/60] revert redirect ID changes --- plugins/utils/redirects.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/utils/redirects.js b/plugins/utils/redirects.js index 7f5ff0a93c..ab88b109b3 100644 --- a/plugins/utils/redirects.js +++ b/plugins/utils/redirects.js @@ -219,7 +219,7 @@ const redirects = ` /docs/current/developer-docs/setup/deploy-mainnet /docs/current/developer-docs/getting-started/deploy/mainnet /docs/current/developer-docs/production/best-practices /docs/current/developer-docs/smart-contracts/best-practices/general /docs/current/references/dev-tools-overview /docs/current/developer-docs/developer-tools/dev-tools-overview - /docs/current/references/cdks /docs/current/developer-docs/developer-tools/onchain/cdks + /docs/current/references/cdks /docs/current/developer-docs/developer-tools/on-chain/cdks /docs/current/developer-docs/agents/ /docs/current/developer-docs/developer-tools/off-chain/agents/overview /docs/current/developer-docs/agents/javascript-intro /docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent /docs/current/developer-docs/agents/nodejs /docs/current/developer-docs/developer-tools/off-chain/agents/nodejs From 3fedc789033b1b6f7ec22e6333b134b4ab0d7049 Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 11:46:42 +0200 Subject: [PATCH 32/60] revert on-chain to onchain in some URLS --- blog/news-and-updates/2024-02-14-update.mdx | 2 +- blog/news-and-updates/2024-05-29-update.mdx | 2 +- community/communityProjects.ts | 2 +- docs/developer-docs/ai/overview.mdx | 2 +- docs/developer-docs/multi-chain/faq/user-faq.mdx | 2 +- plugins/data/contentful-mock.json | 4 ++-- roadmap/roadmap.json | 6 +++--- src/pages/ai.tsx | 2 +- src/pages/capabilities.tsx | 2 +- src/pages/sns/faq.tsx | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/blog/news-and-updates/2024-02-14-update.mdx b/blog/news-and-updates/2024-02-14-update.mdx index 377cf1a400..3f1d479e91 100644 --- a/blog/news-and-updates/2024-02-14-update.mdx +++ b/blog/news-and-updates/2024-02-14-update.mdx @@ -46,7 +46,7 @@ You can read the [full release notes on Github](https://github.com/dfinity/pocke ![221Bravo.App](../../static/img/blog/221Bravo.png) -You can read more about [221Bravo.App on the forum](https://forum.dfinity.org/t/221bravo-a-fully-onchain-explorer-for-icp-tokens/27586). +You can read more about [221Bravo.App on the forum](https://forum.dfinity.org/t/221bravo-a-fully-on-chain-explorer-for-icp-tokens/27586). That'll wrap up this week. Tune back in next week for more developer updates! diff --git a/blog/news-and-updates/2024-05-29-update.mdx b/blog/news-and-updates/2024-05-29-update.mdx index 339deb0e89..963c4f87c5 100644 --- a/blog/news-and-updates/2024-05-29-update.mdx +++ b/blog/news-and-updates/2024-05-29-update.mdx @@ -41,7 +41,7 @@ Over the past few weeks, several new documentation pages have been released! Amo - [idl2json](/docs/current/developer-docs/developer-tools/cli-tools/idl2json) -- [ic-js](/docs/current/developer-docs/developer-tools/onchain/ic-js) +- [ic-js](/docs/current/developer-docs/developer-tools/on-chain/ic-js) - [Hardware wallet CLI tool](/docs/current/developer-docs/defi/wallets/self-custody/hardware-wallet-cli) diff --git a/community/communityProjects.ts b/community/communityProjects.ts index 9d7524b0c8..879b5cc072 100644 --- a/community/communityProjects.ts +++ b/community/communityProjects.ts @@ -1603,7 +1603,7 @@ const communityProjects: SampleItem[] = [ languages: ["motoko"], contentType: ["code samples", "community repo"], image: - "/img/community-projects/onchain-system-of-record-with-public-notary.png", + "/img/community-projects/on-chain-system-of-record-with-public-notary.png", }, { index: 98, diff --git a/docs/developer-docs/ai/overview.mdx b/docs/developer-docs/ai/overview.mdx index b88314645b..527354754e 100644 --- a/docs/developer-docs/ai/overview.mdx +++ b/docs/developer-docs/ai/overview.mdx @@ -62,7 +62,7 @@ Running AI models onchain is too compute and memory-intensive for traditional bl 3. Powerful node hardware with a standardized specification. Nodes have 32-core CPUs, 512GiB RAM, and 30TB NVMe. Currently, ICP supports onchain inference of small models using AI libraries such as [Sonos Tract](https://github.com/sonos/tract) that compile to WebAssembly. -Check out the [image classification example](/docs/current/developer-docs/ai/ai-onchain) to learn how it works. +Check out the [image classification example](/docs/current/developer-docs/ai/ai-on-chain) to learn how it works. The long-term [vision of DeAI on ICP](https://internetcomputer.org/roadmap#Decentralized%20AI-start) is to support onchain GPU compute to enable both training and inference of larger models. ## Technical working group: DeAI diff --git a/docs/developer-docs/multi-chain/faq/user-faq.mdx b/docs/developer-docs/multi-chain/faq/user-faq.mdx index 1137022bbe..b3e80fce86 100644 --- a/docs/developer-docs/multi-chain/faq/user-faq.mdx +++ b/docs/developer-docs/multi-chain/faq/user-faq.mdx @@ -166,7 +166,7 @@ Yes! Please see documentation here on using Ledger Nanos and other hardware wall - [How to acquire ckETH](https://medium.com/dfinity/how-to-acquire-cketh-02d863c835fc#e10f) - [https://internetcomputer.org/blog/2023/12/06/news-and-updates/update#cketh-now-live](https://internetcomputer.org/blog/2023/12/06/news-and-updates/update#cketh-now-live). - [Internet Computer Ethereum integration](https://internetcomputer.org/ethereum-integration) -- [Securing cross-chain communication from Ethereum to the Internet Computer with an onchain Light Client](https://medium.com/dfinity/securing-cross-chain-communication-from-ethereum-to-the-internet-computer-with-an-onchain-light-fedfb4fb24b4#1329) +- [Securing cross-chain communication from Ethereum to the Internet Computer with an onchain Light Client](https://medium.com/dfinity/securing-cross-chain-communication-from-ethereum-to-the-internet-computer-with-an-on-chain-light-fedfb4fb24b4#1329) - [SourThe Future: Chain-key ERC-20 tokens](https://internetcomputer.org/how-it-works/chain-key-tokens#the-future-chain-key-erc-20-tokens) - [Swapping between tokens](/docs/current/tutorials/hackathon-prep-course/integrating-with-tokens#swapping-between-tokens) - [Team spotlight - Financial integration](https://internetcomputer.org/blog/news-and-updates/team-spotlight-fi) diff --git a/plugins/data/contentful-mock.json b/plugins/data/contentful-mock.json index 0ca44730cf..f5a82cd742 100644 --- a/plugins/data/contentful-mock.json +++ b/plugins/data/contentful-mock.json @@ -227,7 +227,7 @@ "date": "2024-04-10", "dateHuman": "Apr 10, 2024", "press": "MPost", - "url": "https://mpost.io/dfinity-foundation-develops-onchain-ai-chatbot-plans-chain-fusion-enhancement-and-web3-incubator-program-expansion/", + "url": "https://mpost.io/dfinity-foundation-develops-on-chain-ai-chatbot-plans-chain-fusion-enhancement-and-web3-incubator-program-expansion/", "tags": [ "Press Coverage" ], @@ -526,7 +526,7 @@ "date": "2024-01-11", "dateHuman": "Jan 11, 2024", "press": "tech.eu", - "url": "https://tech.eu/2024/01/11/bitfinity-raises-7m-to-advance-bitcoin-and-ordinal-assets-onchain-security/", + "url": "https://tech.eu/2024/01/11/bitfinity-raises-7m-to-advance-bitcoin-and-ordinal-assets-on-chain-security/", "tags": [ "Press Coverage" ], diff --git a/roadmap/roadmap.json b/roadmap/roadmap.json index 21ab702e5b..7d3e216246 100644 --- a/roadmap/roadmap.json +++ b/roadmap/roadmap.json @@ -1078,7 +1078,7 @@ "forum": "", "proposal": "", "wiki": "", - "docs": "https://medium.com/@dfinity/the-next-step-for-deai-onchain-inference-enabling-face-recognition-589183203fc2", + "docs": "https://medium.com/@dfinity/the-next-step-for-deai-on-chain-inference-enabling-face-recognition-589183203fc2", "is_community": false, "in_beta": false, "milestone_id": "Cyclotron" @@ -1091,7 +1091,7 @@ "forum": "", "proposal": "", "wiki": "", - "docs": "https://medium.com/@dfinity/the-next-step-for-deai-onchain-inference-enabling-face-recognition-589183203fc2", + "docs": "https://medium.com/@dfinity/the-next-step-for-deai-on-chain-inference-enabling-face-recognition-589183203fc2", "is_community": false, "in_beta": false, "milestone_id": "Cyclotron" @@ -1104,7 +1104,7 @@ "forum": "", "proposal": "", "wiki": "", - "docs": "https://medium.com/@dfinity/the-next-step-for-deai-onchain-inference-enabling-face-recognition-589183203fc2", + "docs": "https://medium.com/@dfinity/the-next-step-for-deai-on-chain-inference-enabling-face-recognition-589183203fc2", "is_community": false, "in_beta": false, "milestone_id": "Cyclotron" diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index 93f9992657..bb071d3231 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -694,7 +694,7 @@ let result = model.run( dateHuman: "July 15,2024", press: "DFINITY", details: `The replica version e4eeb3 that was approved by the community in Proposal 13094 completes the Cyclotron milestone from ICP’s roadmap.`, - url: "https://medium.com/dfinity/the-next-step-for-deai-onchain-inference-enabling-face-recognition-589183203fc2", + url: "https://medium.com/dfinity/the-next-step-for-deai-on-chain-inference-enabling-face-recognition-589183203fc2", imageUrl: "/img/decentralized-ai/news-7.webp", }} linkLabel="Read Now" diff --git a/src/pages/capabilities.tsx b/src/pages/capabilities.tsx index bebc517e66..6cc39d0ff2 100644 --- a/src/pages/capabilities.tsx +++ b/src/pages/capabilities.tsx @@ -120,7 +120,7 @@ const cardsData: CardData[] = [ description: "Search engines like Google can’t index smart contracts running on other blockchains. As developers have to use centralized cloud providers to store the frontends, at least those become searchable. A compromise. The Internet Computer hosts smart contracts that can directly be indexed by all popular search engines. No frontends on public cloud required. This is how true Web3 works.", image: "/img/features/seo-image.webp", - href: "https://medium.com/dfinity/seo-support-for-100-onchain-websites-built-on-the-internet-computer-19c951d73853", + href: "https://medium.com/dfinity/seo-support-for-100-on-chain-websites-built-on-the-internet-computer-19c951d73853", refText: "Read the blog", imageSide: "right", }, diff --git a/src/pages/sns/faq.tsx b/src/pages/sns/faq.tsx index 90df8a661b..c6153a92d3 100644 --- a/src/pages/sns/faq.tsx +++ b/src/pages/sns/faq.tsx @@ -922,7 +922,7 @@ function SnsFaqPage() { title="Video: Next Generation DAOs" > Date: Thu, 19 Sep 2024 12:01:36 +0200 Subject: [PATCH 33/60] change spacings --- src/pages/capabilities/ai.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index ce93c8b528..2ba24b94b2 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -1120,7 +1120,7 @@ function AISubPage() {

    -
    +

    Grow

    From abc1656adf538838819e1797746b565b0b69348d Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 13:49:50 +0200 Subject: [PATCH 34/60] change alignement of illustrations --- src/pages/capabilities/ai.tsx | 6 ++--- static/img/ai-chain/data.svg | 41 +---------------------------------- 2 files changed, 4 insertions(+), 43 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 2ba24b94b2..6b41ca51ea 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -693,17 +693,17 @@ function AISubPage() { amounts of input data. 
    -
    +
    1.000.000x - + more data storage
    -
    +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file From 3944c4aa91e23beb5942abe171642f13bd6217a8 Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 13:59:22 +0200 Subject: [PATCH 35/60] change alignement of illustrations --- src/pages/capabilities/ai.tsx | 14 ++++++++++---- static/img/ai-chain/data.svg | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 6b41ca51ea..0949752b28 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -576,10 +576,10 @@ function AISubPage() { - Fastest growing AI Ecosystem in Web3 + Fastest growing AI Ecosystem in Web3 - + Ecosystem @@ -904,6 +904,12 @@ function AISubPage() { security. ICP's unique capabilities have made it a preferred platform for builders of AI dapps. + + Fastest growing AI Ecosystem in Web3 + \ No newline at end of file + \ No newline at end of file From 8759dd69c64ff7df4b674b35a709cf4da5905575 Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 14:07:46 +0200 Subject: [PATCH 36/60] change alignement of illustrations --- src/pages/capabilities/ai.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 0949752b28..18338bb051 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -678,7 +678,7 @@ function AISubPage() {
    -
    +
    01 @@ -732,7 +732,7 @@ function AISubPage() {
    -
    +
    02 @@ -777,7 +777,7 @@ function AISubPage() {
    -
    +
    -
    +
    web gpu Date: Thu, 19 Sep 2024 14:18:16 +0200 Subject: [PATCH 37/60] change alignement of illustrations --- src/pages/capabilities/ai.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 18338bb051..7f64fbeba8 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -561,11 +561,11 @@ function AISubPage() { >
    -
    +
    ai chain logo
    Date: Thu, 19 Sep 2024 14:21:37 +0200 Subject: [PATCH 38/60] change alignement of illustrations --- src/pages/capabilities/ai.tsx | 2 +- static/img/ai-chain/gpu.svg | 124 +++++++++++++++--------------- static/img/ai-chain/inference.svg | 49 +----------- 3 files changed, 64 insertions(+), 111 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 7f64fbeba8..829f16f1c5 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -777,7 +777,7 @@ function AISubPage() {
    -
    +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/static/img/ai-chain/inference.svg b/static/img/ai-chain/inference.svg index 13c6dcc022..a4c202922d 100644 --- a/static/img/ai-chain/inference.svg +++ b/static/img/ai-chain/inference.svg @@ -1,48 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file From 671cbf9001d94af494035618902427103876270b Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 14:32:10 +0200 Subject: [PATCH 39/60] fix padding on slider --- src/pages/capabilities/ai.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 829f16f1c5..da64271c87 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -927,7 +927,7 @@ function AISubPage() { variants={transitions.item} className="flex overflow-auto sm:overflow-visible -mx-6 sm:mx-0 sm:gap-2/10 xl:relative sm:min-h-[40vw] xl:min-h-[450px]" > -
    +
    {projects.map((p, i) => ( Date: Thu, 19 Sep 2024 15:12:02 +0200 Subject: [PATCH 40/60] fix padding on slider --- src/pages/capabilities/ai.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index da64271c87..5fb67c7889 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -906,7 +906,7 @@ function AISubPage() { Fastest growing AI Ecosystem in Web3 From 6185723df7d4e0dd0d1fc6e0172bd8f1fe480e33 Mon Sep 17 00:00:00 2001 From: David Aerne Date: Thu, 19 Sep 2024 19:55:50 +0200 Subject: [PATCH 41/60] change spacing under title --- src/pages/capabilities/ai.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 5fb67c7889..41b04e4aeb 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -561,7 +561,7 @@ function AISubPage() { >
    -
    +
    ai chain logo
    Secure and Trusted AI onchain From f6f25dcb0db1af9914bf51369e16e19e44dd7f8d Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 20 Sep 2024 10:34:14 +0200 Subject: [PATCH 42/60] update ecosystem tags --- plugins/validate-showcase.js | 2 +- showcase.json | 1945 ++++++++-------------------------- src/pages/ecosystem.tsx | 20 +- 3 files changed, 445 insertions(+), 1522 deletions(-) diff --git a/plugins/validate-showcase.js b/plugins/validate-showcase.js index 45edf054d6..65f12bd61e 100644 --- a/plugins/validate-showcase.js +++ b/plugins/validate-showcase.js @@ -12,7 +12,7 @@ const maximumDescriptionLength = 500; const tags = [ "SocialFi", - "Chainfusion", + "Chain Fusion", "Bitcoin", "Ethereum", "AI", diff --git a/showcase.json b/showcase.json index 78fb6ef5bd..2ce34c466c 100644 --- a/showcase.json +++ b/showcase.json @@ -4,88 +4,55 @@ "name": "Helix Markets", "oneLiner": "Bringing true ownership and full transparency to crypto trading", "website": "https://www.helixmarkets.io/", - "tags": [ - "Ethereum", - "Bitcoin", - "DeFi", - "Chainfusion" - ], + "tags": ["Ethereum", "Bitcoin", "DeFi", "Chain Fusion"], "display": "Large", "stats": "2,000+ users", "twitter": "https://twitter.com/HelixMarkets", "description": "Helix Markets is a decentralized exchange that aims to bring true ownership and full transparency to crypto trading.", "usesInternetIdentity": true, "logo": "/img/showcase/helix_logo.webp", - "screenshots": [ - "/img/showcase/helix_screenshot.png" - ] + "screenshots": ["/img/showcase/helix_screenshot.png"] }, { "id": "bioniq", "name": "Bioniq", "oneLiner": "The fastest Ordinals marketplace", "website": "https://bioniq.io/", - "tags": [ - "Bitcoin", - "Enterprise", - "NFT", - "Chainfusion" - ], + "tags": ["Bitcoin", "Enterprise", "NFT", "Chain Fusion"], "description": "Bioniq is the fastest Ordinals marketplace. Buy, sell, and trade with no gas fees, near-instant finality, and decentralized secure token bridging..", "display": "Large", "stats": "45,000+ users", "logo": "/img/showcase/bioniq-logo.jpeg", - "screenshots": [ - "/img/showcase/bioniq-screenshot-min.png" - ] + "screenshots": ["/img/showcase/bioniq-screenshot-min.png"] }, { "id": "openchat", "name": "OpenChat", "oneLiner": "Decentralized alternative to WhatsApp", "website": "https://oc.app/", - "tags": [ - "SocialFi", - "Bitcoin", - "DAO", - "Chainfusion" - ], + "tags": ["SocialFi", "Bitcoin", "DAO", "Chain Fusion"], "description": "OpenChat is a fully decentralized real-time messaging service that is indistinguishable from Web2 chat apps while living 100% on the blockchain. This allows users to send crypto to each other - including Bitcoin - and own a part of OpenChat through CHAT tokens.", "usesInternetIdentity": true, "display": "Large", "stats": "80,000+ users", "logo": "/img/showcase/openchat_logo.webp", - "screenshots": [ - "/img/showcase/openchat-screenshot.webp" - ] + "screenshots": ["/img/showcase/openchat-screenshot.webp"] }, { "id": "icpswap", "name": "ICPSwap", "website": "https://icpswap.com", - "tags": [ - "DeFi", - "Wallet", - "Bitcoin", - "Ethereum", - "DAO", - "Chainfusion" - ], + "tags": ["DeFi", "Wallet", "Bitcoin", "Ethereum", "DAO", "Chain Fusion"], "description": "ICPSwap is an AMM DEX built completely onchain that is the premier hub for full-stack financial and DAO services on ICP", "usesInternetIdentity": true, "logo": "/img/showcase/icpswap_logo.webp", - "screenshots": [ - "/img/showcase/icpswap_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/icpswap_screenshot_0.webp"] }, { "id": "orally-network", "name": "Orally", "oneLiner": "The fully onchain oracles for secure and reliable decentralized data feeding and automation across multiple chains.", - "tags": [ - "Tools / Infrastructure", - "DeFi" - ], + "tags": ["Tools / Infrastructure", "DeFi"], "description": "The fully onchain oracles for secure and reliable decentralized data feeding and automation across multiple chains. Experience seamless real-world data integration across various blockchains, powering dynamic, secure, and efficient dapps. Elevate your blockchain journey with us!", "usesInternetIdentity": false, "website": "https://orally.network", @@ -94,9 +61,7 @@ "twitter": "https://twitter.com/orally_network", "display": "Large", "logo": "/img/showcase/orally-network_logo.png", - "screenshots": [ - "/img/showcase/orally-network_screenshot_0.webp" - ], + "screenshots": ["/img/showcase/orally-network_screenshot_0.webp"], "submittableId": "35782696" }, { @@ -104,13 +69,7 @@ "name": "Funded", "oneLiner": "Fund your favorite projects and get NFT rewards", "website": "https://funded.app/", - "tags": [ - "SocialFi", - "DeFi", - "Bitcoin", - "Ethereum", - "Chainfusion" - ], + "tags": ["SocialFi", "DeFi", "Bitcoin", "Ethereum", "Chain Fusion"], "twitter": "https://twitter.com/funded_app", "description": "Web3 crowdfunding! Thanks to ICP's low transaction fees and advanced smart contract technology, you can participate in crowdfunding with ICP, BTC and ETH without worrying about losing money on gas fees.", "usesInternetIdentity": true, @@ -124,11 +83,7 @@ "name": "NFID", "oneLiner": "Your digital identity for the modern world.", "website": "https://nfid.one/", - "tags": [ - "Wallet", - "Ethereum", - "Chainfusion" - ], + "tags": ["Wallet", "Ethereum", "Chain Fusion"], "twitter": "https://twitter.com/IdentityMaxis", "description": "Embrace the new era of personal empowerment with NFID, the most advanced digital identity to keep your personal information private and digital assets secure.", "usesInternetIdentity": true, @@ -139,31 +94,21 @@ "name": "Yuku", "oneLiner": "Yuku, your gateway to NFTs, Metaverse, and GameFi!", "website": "https://yuku.app/", - "tags": [ - "NFT", - "Games", - "DAO", - "Metaverse" - ], + "tags": ["NFT", "Games", "DAO", "Metaverse"], "display": "Normal", "stats": "35,222+ users", "twitter": "https://twitter.com/yukuapp", "description": "Unlock Limitless Potential: Yuku, Your Gateway to NFTs,Metaverse, and GameFi!", "usesInternetIdentity": true, "logo": "/img/showcase/yuku_logo.png", - "screenshots": [ - "/img/showcase/yuku_screenshot.webp" - ] + "screenshots": ["/img/showcase/yuku_screenshot.webp"] }, { "id": "golddao", "name": "Gold DAO", "oneLiner": "Gold DAO governs Gold Token (GLDT), a fungible token allowing fractional gold ownership; and a USD-pegged stablecoin (USDG), backed by gold (GLDT).", "website": "https://www.gold-dao.org/", - "tags": [ - "DeFi", - "DAO" - ], + "tags": ["DeFi", "DAO"], "twitter": "https://twitter.com/gldrwa", "description": "Gold DAO governs Gold Token (GLDT), a fungible token allowing fractional gold ownership; and a USD-pegged stablecoin (USDG), backed by gold (GLDT).", "logo": "/img/showcase/golddao_logo.png" @@ -173,11 +118,7 @@ "name": "dragginz", "oneLiner": "Dragginz is a virtual pets game from the creators of Neopets. Hatch and raise Dragginz to accompany you on your adventures.", "website": "https://dragginz.io/", - "tags": [ - "SocialFi", - "Games", - "DAO" - ], + "tags": ["SocialFi", "Games", "DAO"], "twitter": "https://twitter.com/dragginzgame", "description": "Dragginz is a virtual pets game from the creators of Neopets. Hatch and raise Dragginz to accompany you on your adventures..", "logo": "/img/showcase/dragginz_logo.png" @@ -186,11 +127,7 @@ "id": "icdex", "name": "ICDex", "website": "https://avjzx-pyaaa-aaaaj-aadmq-cai.raw.ic0.app/ICDex", - "tags": [ - "DeFi", - "Bitcoin", - "Chainfusion" - ], + "tags": ["DeFi", "Bitcoin", "Chain Fusion"], "description": "ICDex is the flagship product by ICLighthouse, an orderbook-based DEX that runs 100% onchain. The world's first order book DEX - made possible by advanced ICP smart contracts", "usesInternetIdentity": true, "twitter": "https://twitter.com/ICLighthouse", @@ -203,17 +140,12 @@ "name": "Hot or Not", "oneLiner": "Token rewards for both content creators and lurkers", "website": "https://hotornot.wtf/", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "description": "Hot or Not is a decentralized short-form video-based social media platform, which integrates prediction markets for content. In addition to sharing their own videos, users can also speculate on videos of other users by staking tokens and voting whether a video will become 'Hot' or 'Not' to earn rewards.", "usesInternetIdentity": true, "stats": "55,000+ users", "logo": "/img/showcase/hot_or_not_logo.png", - "screenshots": [ - "/img/showcase/hot_or_not_screenshot_0.jpg" - ], + "screenshots": ["/img/showcase/hot_or_not_screenshot_0.jpg"], "videoContentType": "video/mp4", "video": "/img/showcase/hot_or_not_video.mp4" }, @@ -221,21 +153,14 @@ "id": "bitfinity-evm", "name": "Bitfinity EVM", "website": "https://bitfinity.network/", - "tags": [ - "DeFi", - "Tools / Infrastructure", - "Ethereum", - "Chainfusion" - ], + "tags": ["DeFi", "Tools / Infrastructure", "Ethereum", "Chain Fusion"], "twitter": "https://twitter.com/bitfinitynet", "description": "Bitfinity is the EVM compatibility layer for the IC. Using Bitfinity, you can deploy your Solidity smart contracts to the Internet Computer, taking advantage of its many advantageous DeFi capabilities: HTTPS Outcalls, the BTC integration, and more.", "usesInternetIdentity": true, "stats": "1,000+ TPS", "display": "Large", "logo": "/img/showcase/bitfinity_evm.png", - "screenshots": [ - "/img/showcase/bitfinity_showcase.webp" - ] + "screenshots": ["/img/showcase/bitfinity_showcase.webp"] }, { "id": "iclighthouse", @@ -247,7 +172,7 @@ "Bitcoin", "Ethereum", "DAO", - "Chainfusion" + "Chain Fusion" ], "website": "https://iclight.house/", "twitter": "https://twitter.com/ICLighthouse?s=20&t=hL-7QAUfiWo75L8pZzJ7fw", @@ -259,30 +184,21 @@ "name": "Entrepot", "oneLiner": "ICP's most popular NFT marketplace", "website": "https://entrepot.app/", - "tags": [ - "NFT" - ], + "tags": ["NFT"], "twitter": "https://twitter.com/toniqlabs", "description": "Entrepot is a decentralized NFT marketplace developed by ToniqLabs, the creators behind Rise of the Magni, Stoic Wallet, Cronic NFTs, and Exponent. Entrepot provides users with tools and onchain services to design, deploy, and manage NFTs and traditional tokens.", "usesInternetIdentity": false, "stats": "1,000,000+ ICP volume", "display": "Large", "logo": "/img/showcase/entrepot_logo.webp", - "screenshots": [ - "/img/showcase/entrepot_screenshot.webp" - ] + "screenshots": ["/img/showcase/entrepot_screenshot.webp"] }, { "id": "sonic-dex", "name": "Sonic DEX", "oneLiner": "Sonic DEX is an AMM and Perpetual trading platform", "website": "https://sonic.ooo/", - "tags": [ - "Ethereum", - "DeFi", - "DAO", - "Chainfusion" - ], + "tags": ["Ethereum", "DeFi", "DAO", "Chain Fusion"], "description": "Sonic DEX, a multichain decentralized exchange built on the Internet Computer Protocol (ICP), offers a wide range of DeFi services. Users can easily trade tokens and perpetuals, provide liquidity, and participate in the LBP token sale. Users can engage in DAO governance, stake for rewards, and vote on platform decisions.", "usesInternetIdentity": true, "github": "https://github.com/sonicdex/sonic-v1", @@ -290,9 +206,7 @@ "stats": "$10M+ Trade Volume", "display": "Normal", "logo": "/img/showcase/sonic-dex_logo.webp", - "screenshots": [ - "/img/showcase/sonic-dex_screenshot.webp" - ] + "screenshots": ["/img/showcase/sonic-dex_screenshot.webp"] }, { "id": "plug", @@ -305,7 +219,7 @@ "Tools / Infrastructure", "Bitcoin", "Ethereum", - "Chainfusion" + "Chain Fusion" ], "description": "Your Plug into the #InternetComputer Identity + Wallet in one Principal ID Hold, send, swap, deposit cycles, ICP, NFTs and log into IC apps in a click! Available on mobile IOS & Android, and as a browser extension on Chrome & Firefox.", "github": "https://github.com/Psychedelic/plug", @@ -314,48 +228,35 @@ "logo": "/img/showcase/plug_logo.webp", "video": "/img/showcase/plug_video.mp4", "videoContentType": "video/mp4", - "screenshots": [ - "/img/showcase/plug_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/plug_screenshot_0.webp"] }, { "id": "catalyze", "name": "Catalyze", "website": "https://aqs24-xaaaa-aaaal-qbbea-cai.ic0.app/", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "description": "Catalyze is building the new Web3 social learning hub: Communities, Events & Seamless Token Transfer. Now onboarding KOLs.", "usesInternetIdentity": true, "oneLiner": "Manage your Web3 communities and events", "display": "Large", "stats": "360+ Communities", "logo": "/img/showcase/catalyze_logo.png", - "screenshots": [ - "/img/showcase/catalyze_screenshot.png" - ] + "screenshots": ["/img/showcase/catalyze_screenshot.png"] }, { "id": "juno", "name": "Juno", "oneLiner": "Build Web3 at Lightning Speed", "website": "https://juno.build", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "twitter": "https://twitter.com/junobuild", "github": "https://github.com/junobuild/juno", "description": "Juno is an open-source platform that combines the power of Web3 with the ease and simplicity of Web2 development, enabling programmers to build decentralized apps faster and easier than ever before.", "display": "Large", "usesInternetIdentity": true, - "authOrigins": [ - "https://console.juno.build" - ], + "authOrigins": ["https://console.juno.build"], "logo": "/img/showcase/juno_logo.svg", - "screenshots": [ - "/img/showcase/juno_social_image.jpg" - ], + "screenshots": ["/img/showcase/juno_social_image.jpg"], "youtube": "https://www.youtube.com/watch?v=mr_9XArcG9Y" }, { @@ -363,29 +264,18 @@ "name": "Bitfinity Wallet", "oneLiner": "A wallet to store and manage NFTs, Tokens, and connect to dapps on the Internet Computer.", "website": "https://wallet.infinityswap.one/", - "tags": [ - "Wallet", - "Bitcoin", - "Ethereum", - "Chainfusion" - ], + "tags": ["Wallet", "Bitcoin", "Ethereum", "Chain Fusion"], "description": "The Bitfinity Wallet is a multi-chain wallet built and open-sourced by InfinitySwap. It is a browser extension that allows you to store and transfer your BTC, ICP, SNS-1, NFT, and other tokens - as well as log into Internet Computer dapps with a single click. The InfinitySwap Wallet also supports Internet Identity, the powerful authentication framework provided by the Internet Computer.", "display": "Large", "logo": "/img/showcase/bitfinitywallet_logo.webp", "videoContentType": "video/mp4", - "screenshots": [ - "/img/showcase/bitfinitywallet_screenshot.webp" - ] + "screenshots": ["/img/showcase/bitfinitywallet_screenshot.webp"] }, { "id": "taggr", "name": "TAGGR", "website": "https://taggr.link", - "tags": [ - "SocialFi", - "Tools / Infrastructure", - "DAO" - ], + "tags": ["SocialFi", "Tools / Infrastructure", "DAO"], "twitter": "https://twitter.com/TaggrNetwork", "description": "Fully onchain and fully autonomous SocialFi network. A simple way to publish content on a public compute infrastructure. No Ponzinomics - TAGGR has a sustainable tokenomics model that rewards quality posts and removes the incentive to spam.", "usesInternetIdentity": true, @@ -397,41 +287,26 @@ "stats": "24,000+ posts", "logo": "/img/showcase/taggr_logo.webp", "oneLiner": "Blending forums and blogs - controlled by a DAO", - "screenshots": [ - "/img/showcase/taggr_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/taggr_screenshot_0.webp"] }, { "id": "stoicwallet", "name": "Stoic Wallet", "website": "https://www.stoicwallet.com/", - "tags": [ - "Wallet", - "Ethereum", - "Chainfusion" - ], + "tags": ["Wallet", "Ethereum", "Chain Fusion"], "description": "Stoic Wallet by Toniq Labs allows anyone to create a digital wallet, authenticating users through a variety of methods, one of those being Internet Identity. Create accounts, keep an address book, and more. ", "usesInternetIdentity": true, "logo": "/img/showcase/stoicwallet_logo.webp", - "screenshots": [ - "/img/showcase/stoicwallet_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/stoicwallet_screenshot_0.webp"] }, { "id": "kleverio", "name": "Klever.io", "website": "https://klever.io/", - "tags": [ - "Wallet", - "DeFi", - "Ethereum", - "Chainfusion" - ], + "tags": ["Wallet", "DeFi", "Ethereum", "Chain Fusion"], "description": "Klever.io is a non-custodial mobile wallet that supports dozens of protocols and is tying them all together with the Internet Computer blockchain. Manage, store, stake, transfer, and in the future, swap ICP right within Klever.io. Klever has integrated with the Internet Computer's Network Nervous System in order to support staking with voting rewards. ", "logo": "/img/showcase/kleverio_logo.webp", - "screenshots": [ - "/img/showcase/kleverio_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/kleverio_screenshot_0.webp"] }, { "id": "nnsfront-enddapp", @@ -444,7 +319,7 @@ "Tools / Infrastructure", "Bitcoin", "Ethereum", - "Chainfusion" + "Chain Fusion" ], "description": "The NNS front-end dapp allows anyone to interact with the Internet Computer's Network Nervous System with a user-friendly UI. Served completely end-to-end through blockchain, this dapp allows you to manage ICP, stake neurons, participate in voting, and earn governance rewards.", "usesInternetIdentity": true, @@ -456,12 +331,7 @@ "oneLiner": "Browser-based multi-chain wallet", "website": "https://oisy.com", "github": "https://github.com/dfinity/oisy-wallet", - "tags": [ - "Ethereum", - "DeFi", - "Wallet", - "Chainfusion" - ], + "tags": ["Ethereum", "DeFi", "Wallet", "Chain Fusion"], "description": "Oisy is a new browser-based, self-custodial and multi-chain wallet powered by Internet Computer's chain fusion technology.", "usesInternetIdentity": true, "logo": "/img/showcase/oisy_logo.svg" @@ -469,10 +339,7 @@ { "id": "trax", "name": "Trax", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "twitter": "https://twitter.com/onlyontrax", "description": "Trax is a content aggregator and social marketplace, catering specifically to music artists and their die-hard fans, often referred to as “superfans”. By facilitating exclusive content drops and events, TRAX aims to help artists cultivate closer relationships with their superfans and generate higher revenue. ", "website": "https://trax.so/", @@ -484,11 +351,7 @@ "name": "W3NS - Multichain", "oneLiner": "An omnichannel notification service on the Internet Computer for any IC, EVM or off-chain application", "website": "https://www.argonstudios.xyz", - "tags": [ - "Tools / Infrastructure", - "Ethereum", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Ethereum", "Chain Fusion"], "description": "A service to support sending of email, SMS and push notifications (both mobile and web) via Internet Computer for IC, EVM (currently supports Polygon, more to come) and off-chain applications wanting to use a distributed and open source sending mechanism. Simply integrate our Polygon contract, or our IC canister, to use it today...", "stats": "3 early launch partners sending notifications from Polygon", "logo": "/img/showcase/w3ns_logo.png", @@ -502,18 +365,14 @@ "name": "RuBaRu", "oneLiner": "Building Onchain Regenerative Creator-Consumer Economy", "website": "https://rubaru.app/", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "RuBaRu aims to create a vibrant 100% Onchain DAO-based tokenized economy owned & governed by the community, where creators, influencers, consumers, and brands coexist harmoniously. By doing so, we unlock new opportunities, reshape digital creativity, drive economic growth, and foster a thriving ecosystem of shared prosperity.", "logo": "/img/showcase/rubaru_logo.png", "display": "Large", "usesInternetIdentity": true, "youtube": "https://youtu.be/CBumSMJRV08", "twitter": "https://twitter.com/RuBaRu_app", - "screenshots": [ - "/img/showcase/rubaru_dapp_screenshots.png" - ], + "screenshots": ["/img/showcase/rubaru_dapp_screenshots.png"], "video": "/img/showcase/rubaru_video.mp4", "videoContentType": "video/mp4", "submittableId": "39223821" @@ -523,11 +382,7 @@ "name": "Ethereum Canister", "website": "https://www.eiger.co/", "oneLiner": "A fully trustless access to the Ethereum blockchain data.", - "tags": [ - "Ethereum", - "Tools / Infrastructure", - "Chainfusion" - ], + "tags": ["Ethereum", "Tools / Infrastructure", "Chain Fusion"], "description": "The Ethereum canister offers a secure and trustless way to access Ethereum blockchain data within the ICP ecosystem. Behind the scenes, it leverages the helios light Ethereum client which is equipped with the capability to validate the authenticity of fetched data.", "stats": "17M+ blocks", "usesInternetIdentity": false, @@ -543,48 +398,30 @@ "name": "Origyn", "oneLiner": "NFT-Based Authentication for Luxury Goods ", "website": "https://www.origyn.com/", - "tags": [ - "NFT", - "Tools / Infrastructure", - "DAO" - ], + "tags": ["NFT", "Tools / Infrastructure", "DAO"], "twitter": "https://twitter.com/ORIGYNTech", "description": "The Origyn Foundation is blending luxury goods with NFTs by providing digital verifications for physical objects. Only possible on the Internet Computer. ", "github": "https://github.com/origyn-sa", "logo": "/img/showcase/origyn_logo.webp", - "screenshots": [ - "/img/showcase/origyn_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/origyn_screenshot_0.webp"] }, { "id": "finterest", "name": "Finny", "website": "https://tyhcm-sqaaa-aaaah-abjya-cai.raw.ic0.app/#/", - "tags": [ - "DeFi", - "Bitcoin", - "Chainfusion" - ], + "tags": ["DeFi", "Bitcoin", "Chain Fusion"], "twitter": "https://twitter.com/finterestICP", "description": "Lend and borrow against your crypto without bridging it across chains. Yes, even Bitcoin", "stats": "$1.5M+ Raised", "logo": "/img/showcase/finterest_logo.webp", - "screenshots": [ - "/img/showcase/finterest_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/finterest_screenshot_0.webp"] }, { "id": "boom-dao", "name": "Boom DAO", "oneLiner": "Powering the next generation of fully onchain games, and providing a collaborative hub for all things web3 gaming.", "website": "https://boomdao.xyz/", - "tags": [ - "Games", - "DAO", - "Tools / Infrastructure", - "NFT", - "Metaverse" - ], + "tags": ["Games", "DAO", "Tools / Infrastructure", "NFT", "Metaverse"], "description": "BOOM DAO is an all-in-one web3 game platform and protocol running 100% onchain on the Internet Computer. We are on a mission to build the gaming vertical of the Internet Computer blockchain, power the next generation of fully onchain games on ICP, and provide a collaborative hub for all things web3 gaming.", "stats": "23,000+ DAO Members", "logo": "/img/showcase/boom-dao-logo.webp", @@ -593,9 +430,7 @@ "github": "https://github.com/BoomDAO/", "youtube": "https://www.youtube.com/watch?v=LHVVi4pN6CI", "twitter": "https://twitter.com/boomdaosns", - "screenshots": [ - "/img/showcase/boom-dao-screenshot0.webp" - ], + "screenshots": ["/img/showcase/boom-dao-screenshot0.webp"], "video": "/img/showcase/boom-dao-video.mp4", "videoContentType": "video/mp4", "submittableId": "" @@ -604,20 +439,14 @@ "id": "plethora", "name": "Plethora", "website": "https://plethora.game/", - "tags": [ - "Games", - "Metaverse", - "NFT" - ], + "tags": ["Games", "Metaverse", "NFT"], "twitter": "https://twitter.com/PlethoraGame", "description": "Plethora is a Web3 platformer with the goal of rewarding users both with fun gameplay and NFTs. Plethora empowers NFT projects to launch their collections with immersive experiences customized for you. Play now to compete, have fun, and earn rewards.", "oneLiner": "3D platformer meets Web3 with NFT rewards", "display": "Large", "stats": "10,000+ users", "logo": "/img/showcase/plethora_logo.webp", - "screenshots": [ - "/img/showcase/plethora_screenshot.webp" - ] + "screenshots": ["/img/showcase/plethora_screenshot.webp"] }, { "id": "decideai", @@ -625,26 +454,19 @@ "oneLiner": "A fullstack decentralized AI platform", "website": "https://decideai.xyz", "twitter": "https://twitter.com/DecideAI_", - "tags": [ - "AI", - "Tools / Infrastructure" - ], + "tags": ["AI", "Tools / Infrastructure"], "stats": "50,000+ inference requests", "description": "DecideAI is an ecosystem that consists of three products, Decide Protocol, Decide ID, and Decide Cortex, designed to meet the needs of the high-end, specialized LLM market.", "usesInternetIdentity": true, "logo": "/img/showcase/decideai_logo.png", - "screenshots": [ - "/img/showcase/decideai_screenshot_0.png" - ], + "screenshots": ["/img/showcase/decideai_screenshot_0.png"], "github": "https://github.com/modclub-app" }, { "id": "querio", "name": "Querio", "website": "https://querio.io/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Querio is the most advanced web3.0 search engine of exceptional speed and accuracy, that empowers its users to search over the Internet Computer.", "logo": "/img/showcase/Querio_Logo.webp", "screenshots": [] @@ -654,18 +476,13 @@ "name": "Cubetopia", "oneLiner": "Build and own an NFT World on the blockchain", "website": "https://kqwp7-2yaaa-aaaah-abyna-cai.raw.ic0.app/", - "tags": [ - "Games", - "Metaverse" - ], + "tags": ["Games", "Metaverse"], "twitter": "https://twitter.com/TheCubetopia", "description": "Cubetopia is a Web3 building game where players can create anything on unique blocky islands. Each island is a mutable NFT stored on the Internet Computer blockchain. Anyone can visit these islands onchain, while the owner of the NFT ownership handles building permissions.", "stats": "32,500+ ICP volume", "display": "Large", "logo": "/img/showcase/cubetopia_logo.webp", - "screenshots": [ - "/img/showcase/cubetopia_screenshot.webp" - ] + "screenshots": ["/img/showcase/cubetopia_screenshot.webp"] }, { "id": "airgap", @@ -673,9 +490,7 @@ "oneLiner": "Self custody made simple and secure. Turn a spare smartphone into a cold wallet.", "description": "Self-custody made simple and secure. Turn a spare smartphone into a cold wallet that can store a plethora of tokens including ICP and ckBTC. Using AirGap, you can stake ICP directly on the NNS and participate in governance.", "website": "https://airgap.it/", - "tags": [ - "Wallet" - ], + "tags": ["Wallet"], "usesInternetIdentity": false, "logo": "/img/showcase/airgap_logo.webp" }, @@ -690,11 +505,7 @@ "id": "taurus", "oneLiner": "Banking-grade custody for digital asset management.", "stats": "Powering 15+ banks", - "tags": [ - "Wallet", - "Tools / Infrastructure", - "Enterprise" - ], + "tags": ["Wallet", "Tools / Infrastructure", "Enterprise"], "usesInternetIdentity": false, "github": "", "twitter": "", @@ -706,51 +517,36 @@ "name": "Azle", "oneLiner": "TypeScript CDK for the Internet Computer", "website": "https://demergent-labs.github.io/azle/azle.html", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Azle is a TypeScript Canister Development Kit (CDK) for the Internet Computer. In other words, it's a TypeScript/JavaScript runtime for building applications on the IC.", "usesInternetIdentity": false, "logo": "/img/showcase/azle_logo.svg", "github": "https://github.com/demergent-labs/azle", - "screenshots": [ - "/img/showcase/azle_screenshot_0.jpg" - ] + "screenshots": ["/img/showcase/azle_screenshot_0.jpg"] }, { "id": "internetidentity", "name": "Internet Identity", "oneLiner": "Decentralized Anonymous Blockchain Authentication", "website": "https://identity.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Internet Identity is a privacy-enhancing authentication framework for applications on the Internet Computer. It provides users with a easy-to-use and secure anonymizing login to Web3 services running on ICP without being tracked across dapps.", "github": "https://github.com/dfinity/internet-identity", "usesInternetIdentity": true, "stats": "1,000,000+ users", "logo": "/img/showcase/internetidentity_logo.webp", - "screenshots": [ - "/img/showcase/internetidentity_screenshot_0.gif" - ] + "screenshots": ["/img/showcase/internetidentity_screenshot_0.gif"] }, { "id": "Arth", "name": "Arth", - "tags": [ - "DeFi", - "Wallet", - "Bitcoin", - "Chainfusion" - ], + "tags": ["DeFi", "Wallet", "Bitcoin", "Chain Fusion"], "description": "The mobile payments app that combines the power of Bitcoin with the convenience of mobile payments. With ckBTC, you can easily swap ckBTC from Bitcoin, view balances, and seamlessly make payments using QR codes.", "usesInternetIdentity": true, "website": "https://play.google.com/store/apps/details?id=com.foo.arth&pli=1", "display": "Normal", "logo": "/img/showcase/arth_logo.png", - "screenshots": [ - "/img/showcase/arth_ss.webp" - ], + "screenshots": ["/img/showcase/arth_ss.webp"], "submittableId": "36143434" }, { @@ -764,24 +560,20 @@ "Bitcoin", "NFT", "Ethereum", - "Chainfusion" + "Chain Fusion" ], "description": "ME wallet securing your assets without seed phrase across any devices.", "github": "https://github.com/AstroxNetwork", "twitter": "https://twitter.com/astrox_network", "logo": "/img/showcase/astroxme_logo.webp", "display": "Normal", - "screenshots": [ - "/img/showcase/astrox_me_screenshot.webp" - ] + "screenshots": ["/img/showcase/astrox_me_screenshot.webp"] }, { "id": "autoroyale", "name": "AutoRoyale", "website": "https://cm6iy-sqaaa-aaaam-abmxq-cai.icp0.io/", - "tags": [ - "Games" - ], + "tags": ["Games"], "twitter": "", "description": "Jump into this proof of concept battle royale 2D shooter on ICP. Grab gear, outplay the competition, and stay alive as the battleground shrinks. It's all about thinking a few steps ahead. Upgrade weapons, toss grenades, and pull off sneaky ambushes. Invite your pals for a quick match and make sure you play the tutorial to get used to the mechanics.", "usesInternetIdentity": true, @@ -798,16 +590,12 @@ "description": "Signals is a location based chat app for making connections, creating communities, and discovering events. ", "website": "https://signalsicp.com/", "logo": "/img/showcase/signals_logo.webp", - "screenshots": [ - "/img/showcase/signals_screenshot.webp" - ], + "screenshots": ["/img/showcase/signals_screenshot.webp"], "display": "Normal", "id": "signals", "oneLiner": "A location based app for empowering local communities", "stats": "5,000+ users", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "usesInternetIdentity": true, "twitter": "https://twitter.com/signalsicp", "submittableId": "35639473" @@ -816,9 +604,7 @@ "id": "stakedicp", "name": "StakedICP", "oneLiner": "Non-custodial liquid staking for ICP", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "StakedICP is the liquid-staking protocol revolutionizing staking on the Internet Computer, putting control in investors' hands. ICP is staked in the NNS DAO, and stakers receive rewards just by holding the stICP token. The stICP token is DeFi-compatible, to support protocols building on the Internet Computer, and always fully-backed by ICP staked in the NNS.", "usesInternetIdentity": false, "website": "https://stakedicp.com", @@ -832,9 +618,7 @@ "id": "canscale", "name": "CanScale", "description": "Worried about data being persisted or how your data structure will scale across canisters? CanScale can help you focus more on building out your vision, and spend less time thinking about how to scale out your multi-canister architecture on the IC.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "website": "https://www.canscale.dev", "twitter": "https://twitter.com/can_scale", "logo": "/img/showcase/canscale_logo.webp", @@ -844,9 +628,7 @@ "id": "cycleops", "name": "CycleOps", "description": "Proactive, automated, no-code canister management for the Internet Computer.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "stats": "450 canisters monitored", "github": "https://github.com/CycleOperators/CycleOps/", "website": "https://cycleops.dev", @@ -859,29 +641,21 @@ "name": "DSCVR", "oneLiner": "Social portals, community airdrops, crypto tipping onchain", "website": "https://dscvr.one/", - "tags": [ - "SocialFi", - "Ethereum", - "Chainfusion" - ], + "tags": ["SocialFi", "Ethereum", "Chain Fusion"], "twitter": "https://twitter.com/DSCVR1?s=20&t=qrUKGHeyFLGiBQjpj3iI9A", "description": "DSCVR is an end-to-end decentralized Web3 social media platform that allows communities to form into groups called Portals. These Portals can be NFT gated, airdrop fungible and non-fungible tokens to their members and much more. DSCVR also allows for tipping posts in a growing number of cryptos, supporting ckBTC, a Bitcoin twin living on the Internet Computer.", "usesInternetIdentity": true, "stats": "200,000+ users", "display": "Normal", "logo": "/img/showcase/dscvr_logo.webp", - "screenshots": [ - "/img/showcase/dscvr_screenshot.webp" - ] + "screenshots": ["/img/showcase/dscvr_screenshot.webp"] }, { "id": "canistergeek", "name": "Canistergeek", "oneLiner": "IC canister management tool", "description": "Top up your canisters, monitor cycles, memory, logs, and get your monthly reports in one place.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "website": "https://canistergeek.app/", "github": "https://github.com/usergeek/canistergeek_ic_rust", @@ -901,9 +675,7 @@ "id": "mops", "oneLiner": "Onchain package manager for Motoko", "stats": "100,000+ downloads", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "github": "https://github.com/ZenVoich/mops", "twitter": "https://twitter.com/mops_one", @@ -915,27 +687,21 @@ "name": "BeamFi", "oneLiner": "Real Time Micro Payments solution for creators", "website": "https://beamfi.app", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "BeamFi is an open source DeFi protocol, bringing Autonomous Stream Payment solution to Internet Computer, allowing users to send or receive a constant stream of ICP or XTC in BeamFi DApp or BeamFi Meeting App in Zoom while a meeting is in progress", "usesInternetIdentity": false, "logo": "/img/showcase/beamfi_logo.webp", "github": "https://github.com/BeamFi/BeamFiProtocol", "youtube": "https://youtu.be/85TWP4QHHBg", "twitter": "https://twitter.com/BeamFiApp", - "screenshots": [ - "/img/showcase/beamfi_screenshot_0.webp" - ], + "screenshots": ["/img/showcase/beamfi_screenshot_0.webp"], "submittableId": "33086681" }, { "id": "eimolad", "name": "Eimolad", "description": "This is an amazing world inhabited by humans, dwarves, orcs, elves, and other fantastic creatures. This is a world of magic and valor. This world is full of mysteries, dangers, and incredible adventures. ", - "tags": [ - "Games" - ], + "tags": ["Games"], "website": "https://eimolad.com/", "twitter": "https://twitter.com/eimolad", "discord": "https://discord.gg/qD3R5nDXDZ", @@ -947,16 +713,12 @@ "name": "MORA", "oneLiner": "A Web3 space for writers to express autonomy of thought ", "website": "https://mora.app", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "Mora allows users to create a unique Web3 space where they can have independent content data, subscription relationships, financial information, and even complex algorithms. From its inception, a planet will be monitored by Launch Trail to ensure compliance with the protocol and establish trust. The Launch Trail will be controlled by the Mora Dao Canister.", "usesInternetIdentity": true, "stats": "2,000+ articles", "logo": "/img/showcase/mora_logo.png", - "screenshots": [ - "/img/showcase/mora_banner.jpg" - ], + "screenshots": ["/img/showcase/mora_banner.jpg"], "youtube": "https://www.youtube.com/watch?v=rQIGanE7WxA", "twitter": "https://twitter.com/Mora_App" }, @@ -964,9 +726,7 @@ "id": "dsocial", "name": "DSocial", "website": "https://DSocial.app", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "DSocial is a decentralized version of YouTube -- enabling content creators to be fairly rewarded for their work, and engagement. This Web3 media platform is hosted end-to-end on the Internet Computer interoperating with Arweave for decentralized video content.", "usesInternetIdentity": true, "display": "Normal", @@ -980,11 +740,7 @@ "name": "UnfoldVR", "oneLiner": "Decentralizing asset Creation and Discovery for the Metaverse", "website": "https://jmorc-qiaaa-aaaam-aaeda-cai.ic0.app/", - "tags": [ - "Metaverse", - "NFT", - "Tools / Infrastructure" - ], + "tags": ["Metaverse", "NFT", "Tools / Infrastructure"], "twitter": "https://twitter.com/unfold_vr", "description": "UnfoldVR empowers creators to author 3D NFTs using easy-to-use tools both on the Web and in Virtual Reality.", "usesInternetIdentity": true, @@ -1000,17 +756,13 @@ "description": "A forum for critical thinkers, builders and writers. Earn by providing human-to-human feedback. ", "website": "https://3ysab-rqaaa-aaaan-qaewq-cai.ic0.app/", "logo": "/img/showcase/kawak_logo.webp", - "screenshots": [ - "/img/showcase/kawak_screenshot.webp" - ], + "screenshots": ["/img/showcase/kawak_screenshot.webp"], "video": "/img/showcase/kawak_video.mp4", "videoContentType": "video/mp4", "display": "Normal", "oneLiner": "Acess real human feedback. Earn while helping others", "stats": "100+ Topics ", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "twitter": "https://twitter.com/KawaK_ICP", "youtube": "", @@ -1020,10 +772,7 @@ "id": "seers", "name": "Seers", "website": "https://seers.social/", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "description": "What if there was decentralized Twitter that included prediction markets? Seers is a Web3 social media platform hosted 100% onchain combining social media features with prediction markets.", "usesInternetIdentity": true, "stats": "10,000 users + TVL", @@ -1035,62 +784,43 @@ "id": "pokedstudiobots", "name": "PokedStudio Bots", "website": "https://entrepot.app/marketplace/poked", - "tags": [ - "NFT" - ], + "tags": ["NFT"], "description": "PokedStudio Bots is a collection of 10,000 unique bots designed by acclaimed digital artist, Jonathan Ball. The Ultimate Master Bot which sold for 3,000 ICP (~$172,140), marks the largest single NFT purchase on the Internet Computer and is one of the largest across all blockchain projects to date. The NFT Bots are all unique and possess differing rarities and attributes that will transfer into a future metaverse gaming experience in beautiful technicolor.", "oneLiner": "Record Highest Selling NFT", "display": "Large", "logo": "/img/showcase/pokedstudiobots_logo.webp", - "screenshots": [ - "/img/showcase/pokedstudio-bots.webp" - ] + "screenshots": ["/img/showcase/pokedstudio-bots.webp"] }, { "id": "Caniplay", "name": "Caniplay", "oneLiner": "The world's First NFT Broadcast Station", - "tags": [ - "NFT", - "SocialFi" - ], + "tags": ["NFT", "SocialFi"], "description": "Introducing CaniPlay (Can I Play), the pioneering, fully onchain NFT broadcast station. Submit your audio or video content, reach a global audience, and receive recognition and rewards from your listeners. As a listener, enjoy airdrops for actively participating in curating content", "usesInternetIdentity": true, "github": "https://github.com/orgs/Canistore", "twitter": "https://twitter.com/canistore", "display": "Large", "logo": "/img/showcase/CaniPlay_logo.png", - "screenshots": [ - "/img/showcase/CaniPlay_SS.webp" - ], + "screenshots": ["/img/showcase/CaniPlay_SS.webp"], "submittableId": "41319392" }, { "id": "nuance", "name": "Nuance", "website": "https://exwqn-uaaaa-aaaaf-qaeaa-cai.ic0.app/", - "tags": [ - "SocialFi", - "DAO", - "Bitcoin", - "Chainfusion" - ], + "tags": ["SocialFi", "DAO", "Bitcoin", "Chain Fusion"], "description": "Nuance is a Web3.0 blogging platform that is hosted onchain end-to-end on the Internet Computer. Developed by Aikin Dapps, the alpha of the world's first blogging platform to be hosted entirely on a blockchain has now launched. Nuance aims to bring NFTs into the world of editorial content ownership.", "usesInternetIdentity": true, "logo": "/img/showcase/nuance_logo.webp", - "screenshots": [ - "/img/showcase/nuance_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/nuance_screenshot_0.webp"] }, { "id": "cosmicrafts", "name": "Cosmicrafts", "oneLiner": "Blast through the metaverse with Cosmicrafts, where interstellar mayhem meets epic battles for the ultimate cosmic showdown!", "website": "https://cosmicrafts.com/", - "tags": [ - "Games", - "Metaverse" - ], + "tags": ["Games", "Metaverse"], "twitter": "https://twitter.com/cosmicrafts", "description": "Unleash your inner commander and dominate the metaverse in the action-packed universe of Cosmicrafts. Engage in thrilling interstellar battles, strategize with allies, and conquer the cosmos. Are you ready to claim your place among the stars?", "usesInternetIdentity": true, @@ -1098,19 +828,14 @@ "logo": "/img/showcase/cosmicrafts_logo.webp", "video": "/img/showcase/cosmicrafts_video.mp4", "videoContentType": "video/mp4", - "screenshots": [ - "/img/showcase/cosmicrafts_screenshot1.jpg" - ] + "screenshots": ["/img/showcase/cosmicrafts_screenshot1.jpg"] }, { "id": "kontribute", "name": "Kontribute", "oneLiner": "Web3 storytelling", "website": "https://kontribute.app", - "tags": [ - "SocialFi", - "NFT" - ], + "tags": ["SocialFi", "NFT"], "twitter": "https://twitter.com/TeamBonsai_ICP", "description": "Kontribute is a web3 creators platform that brings story writing and digital art collectibles together. Features include decentralized story storage, likes, tipping, polls, NFT marketplace, and NFT minting.", "github": "https://github.com/teambonsai/bonsai_dapp", @@ -1118,48 +843,35 @@ "stats": "1,000+ users", "display": "Normal", "logo": "/img/showcase/kontribute_logo.webp", - "screenshots": [ - "/img/showcase/kontribute_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/kontribute_screenshot_0.webp"] }, { "id": "dstar", "name": "Dstar", "website": "https://yunqk-aqaaa-aaaai-qawva-cai.ic0.app/", - "tags": [ - "NFT" - ], + "tags": ["NFT"], "description": "Dstar is an Internet Identity (II) trading marketplace. Since each II is unique, the ICP blockchain treats them as NFTs. Users can trade, purchase, or sell their anonymous blockchain-based authentication accounts on this community-built marketplace. Integrated with Plug wallet, users can search for and purchase any coveted Internet Identity numbers which may be up for auction.", "oneLiner": "Internet Identity Marketplace", "display": "Normal", "logo": "/img/showcase/dstar_logo.webp", - "screenshots": [ - "/img/showcase/dstar_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/dstar_screenshot_0.webp"] }, { "id": "sudograph", "name": "Sudograph", "website": "https://i67uk-hiaaa-aaaae-qaaka-cai.raw.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Sudograph is a GraphQL database for the Internet Computer. Its goal is to become the simplest way to develop applications for the IC by providing flexibility and out-of-the-box data management.", "github": "https://github.com/sudograph/sudograph", "logo": "/img/showcase/sudograph_logo.webp", - "screenshots": [ - "/img/showcase/sudograph_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/sudograph_screenshot_0.webp"] }, { "id": "itoka", "name": "ITOKA", "oneLiner": "A Leading Infrastructure for Music3.0", "website": "https://www.itoka.xyz/", - "tags": [ - "NFT", - "SocialFi" - ], + "tags": ["NFT", "SocialFi"], "description": "The ITOKA project seeks to disrupt the centralized music industry by offering a complete infrastructure solution for the web3 music industry. This includes creation tools, data storage, and music streaming services. The goal of ITOKA is to transform the music industry into a decentralized ecosystem, empowering creators with greater control over their content and a fairer share of revenue.", "usesInternetIdentity": false, "github": "https://github.com/Itoka-DAO", @@ -1168,18 +880,14 @@ "logo": "/img/showcase/itoka_logo.svg", "video": "/img/showcase/itoka_video.mp4", "videoContentType": "video/mp4", - "display": "Normal", - "screenshots": [ - "/img/showcase/itoka_screanshot.svg" - ] + "display": "Normal", + "screenshots": ["/img/showcase/itoka_screanshot.svg"] }, { "id": "icdrive", "name": "IC Drive", "website": "https://rglue-kyaaa-aaaah-qakca-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "A decentralized private file storage dapp built on the Internet Computer. Store and securely share any type from anywhere in the world with this decentralized version of Box, or Google Drive. ", "usesInternetIdentity": true, "logo": "/img/showcase/icdrive_logo.webp", @@ -1193,9 +901,7 @@ "name": "Motoko Playground", "oneLiner": "Free IDE to Learn Motoko", "website": "https://m7sm4-2iaaa-aaaab-qabra-cai.raw.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "The Motoko Playground is an IDE for developers to learn Motoko - the native language for the Internet Computer blockchain. Deploy canister smart contracts for free, directly within a browser, without needing to download an SDK or set up a wallet.", "github": "https://github.com/dfinity/motoko-playground", "usesInternetIdentity": false, @@ -1209,25 +915,18 @@ "id": "contentfly", "name": "Content Fly", "website": "https://contentfly.app/", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "Content Fly is a Web3 Job Management Tool & Marketplace. It allows content buyers & creators to work together with the security of an escrow payment and DAO based dispute resolution. IP is protected and transferred as an NFT.", "usesInternetIdentity": true, "display": "Normal", "logo": "/img/showcase/contentfly_logo.webp", - "screenshots": [ - "/img/showcase/contentfly_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/contentfly_screenshot_0.webp"] }, { "id": "scinet", "name": "SCINET", "description": "A licensing application for life-sciences companies. Easily monetize your intellectual property using NFTs.", - "tags": [ - "NFT", - "Tools / Infrastructure" - ], + "tags": ["NFT", "Tools / Infrastructure"], "usesInternetIdentity": false, "website": "https://www.scinet.one/", "twitter": "https://twitter.com/scinet_inc", @@ -1239,10 +938,7 @@ "id": "faefolk", "name": "FaeFolk", "description": "FaeFolk is a multiplayer, slice of life, NFT role-playing game where you use your NFTs to craft tools, and equipment, and train your skills", - "tags": [ - "Games", - "NFT" - ], + "tags": ["Games", "NFT"], "website": "https://medium.com/faefolk", "github": "https://github.com/ICCards/faefolk", "twitter": "https://twitter.com/_faefolk", @@ -1255,9 +951,7 @@ "name": "Factland DAO", "oneLiner": "A Web3 community building decentralized trust in the age of misinformation", "website": "https://factland.org", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Factland is a Web3 DAO with a mission to slow the spread of misinformation online. Factland makes it easy for anyone to flag untrustworthy claims and have them promptly adjudicated by a decentralized community of fact-checkers rewarded in crypto.", "usesInternetIdentity": true, "stats": "50+ claims adjudicated", @@ -1274,9 +968,7 @@ "id": "sagatarot", "name": "Saga Tarot", "website": "https://5nl7c-zqaaa-aaaah-qaa7a-cai.raw.ic0.app/", - "tags": [ - "Games" - ], + "tags": ["Games"], "description": "Have your fortune told on the Internet Computer. Saga Tarot gives you a tarot reading in one click. The user-friendly dapp is built completely on the Internet Computer, accessible from any browser. What will the future hold for you?", "usesInternetIdentity": true, "display": "Normal", @@ -1290,9 +982,7 @@ "name": "ember-cli-dfinity", "description": "An add-on for using the Internet Computer in your EmberJS app.", "website": "https://vkx2r-zaaaa-aaaap-aa55a-cai.icp0.io/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "logo": "/img/showcase/ember-cli-dfinity.png", "github": "https://github.com/onehilltech/ember-cli-dfinity" @@ -1302,39 +992,29 @@ "name": "Kybra", "oneLiner": "Python CDK for the Internet Computer", "website": "https://github.com/demergent-labs/kybra", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Kybra is a Python Canister Development Kit (CDK) for the Internet Computer. In other words, it's a Python runtime for building applications on the IC.", "usesInternetIdentity": false, "logo": "/img/showcase/kybra_logo.svg", - "screenshots": [ - "/img/showcase/kybra_screenshot_0.jpg" - ] + "screenshots": ["/img/showcase/kybra_screenshot_0.jpg"] }, { "id": "icpipeline", "name": "ICPipeline", "website": "https://www.icpipeline.com", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "ICPipeline is your self-contained, n-tiered development and testing platform, designed and built specifically for the Internet Computer ecosystem. On-demand dev tooling for the next generation of IC/Web3 applications.\n", "github": "https://github.com/icpipeline-framework", "usesInternetIdentity": false, "display": "Normal", "logo": "/img/showcase/icpipeline_logo.webp", - "screenshots": [ - "/img/showcase/icpipeline_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/icpipeline_screenshot_0.webp"] }, { "id": "icme", "name": "ICME", "website": "https://sygsn-caaaa-aaaaf-qaahq-cai.raw.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "ICME is a no-code tool that makes it easy for anyone to build and deploy beautiful websites on the Internet Computer. Launch your blog or business's website on the Internet Computer today.", "usesInternetIdentity": true, "logo": "/img/showcase/icme_logo.webp", @@ -1348,9 +1028,7 @@ "name": "iKnows", "oneLiner": "Explore unlimited knowledge, with Q&A interaction between you and me!", "website": "https://ffxwx-3yaaa-aaaah-qajua-cai.ic0.app", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "iKnows is a decentralized application platform built on the Internet Computer (IC), based on the IC network, with knowledge as the core, and through a social approach.", "usesInternetIdentity": true, "logo": "/img/showcase/iknows_logo.png", @@ -1363,17 +1041,13 @@ "name": "Metamob", "oneLiner": "Together we can change the world! One campaign at time.", "description": "A decentralized web3 app, running 100% onchain on the Internet Computer, that lets any user start mobilizations by creating campaigns of four different kinds: donations, votes, signatures, and fundraising.", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "website": "https://site.metamob.app/", "github": "https://github.com/av1ctor/metamob", "twitter": "https://twitter.com/metamob_app", "discord": "https://discord.com/invite/8zhj7umRpD", "logo": "/img/showcase/metamob_logo.webp", - "screenshots": [ - "/img/showcase/metamob_screenshot_0.webp" - ], + "screenshots": ["/img/showcase/metamob_screenshot_0.webp"], "submittableId": 32331652 }, { @@ -1381,48 +1055,34 @@ "name": "Sand Bless", "oneLiner": "Sandblasting and serigraphy artworks", "website": "https://qob3k-7yaaa-aaaao-aahdq-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Sandblasting and glass serigraphy. Artistic and craftsmen artworks signed with unique verifiable mark numbers and linked imprints using Internet Computer Canisters technology.", "github": "https://github.com/branciard/SandBlessCanisters", "usesInternetIdentity": false, "logo": "/img/showcase/sandbless_logo.webp", - "screenshots": [ - "/img/showcase/sandbless_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/sandbless_screenshot_0.webp"] }, { "id": "icpexplorer", "name": "ICP Explorer", "website": "https://www.icpexplorer.org/#/datacenters", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "ICP Explorer, a project started in 2018, is an open-source, community-built dashboard and explorer for the Internet Computer, providing live information and statistics about the network, governance, and the ICP utility token, including account and transaction information.", "logo": "/img/showcase/icpexplorer_logo.webp", "video": "/img/showcase/icpexplorer_video.mp4", "videoContentType": "video/mp4", - "screenshots": [ - "/img/showcase/icpexplorer_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/icpexplorer_screenshot_0.webp"] }, { "id": "bitshop", "name": "Bitshop", "oneLiner": "Internet Computer blockchain as a Bitcoin e-shop", "website": "https://ughim-6qaaa-aaaah-qc7qa-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure", - "Bitcoin", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Bitcoin", "Chain Fusion"], "description": "A proof of concept project that demonstrates capabilities of the Internet Computer blockchain to serve as a Bitcoin e-shop.", "usesInternetIdentity": false, "logo": "/img/showcase/bitshop_logo.webp", - "screenshots": [ - "/img/showcase/bitshop.webp" - ], + "screenshots": ["/img/showcase/bitshop.webp"], "github": "https://github.com/lukasvozda/bitshop", "twitter": "https://twitter.com/bitshopicp" }, @@ -1430,53 +1090,39 @@ "id": "missionispossible", "name": "Mission Is Possible", "website": "https://to3ja-iyaaa-aaaai-qapsq-cai.raw.ic0.app/", - "tags": [ - "Games" - ], + "tags": ["Games"], "description": "Mission is Possible - 3rd place winner of the DSCVR Hackathon Season 2 - is a PVP third-person shooter hosted on the Internet Computer blockchain. The John Wick-inspired game is built using the Unity 3D Game Engine and hosted on the IC enabling decentralized login with Internet Identity. ", "usesInternetIdentity": true, "oneLiner": "3rd Place DSCVR Hackathon", "display": "Normal", "logo": "/img/showcase/missionispossible_logo.webp", - "screenshots": [ - "/img/showcase/missionispossible_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/missionispossible_screenshot_0.webp"] }, { "id": "canlista", "name": "Canlista", "oneLiner": "Internet Computer Canister Registry", "website": "https://k7gat-daaaa-aaaae-qaahq-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "The Internet Computer community canister registry. Find, publish, and extend applications and services built on the Internet Computer. Log in with Internet Identity. ", "usesInternetIdentity": true, "logo": "/img/showcase/canlista_logo.webp", - "screenshots": [ - "/img/showcase/canlista_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/canlista_screenshot_0.webp"] }, { "id": "nnscat", "name": "NNSCat", "website": "https://iz6s6-kqaaa-aaaae-qaakq-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "An intuitive email-style inbox for NNS proposals", "logo": "/img/showcase/nnscat_logo.png", - "screenshots": [ - "/img/showcase/nnscat_screenshot_0.jpg" - ] + "screenshots": ["/img/showcase/nnscat_screenshot_0.jpg"] }, { "id": "icdevs.org", "name": "ICDevs.org ", "description": "ICDevs.org seeks to provide the general public with community organization, educational resources, funding, and scientific discovery", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "website": "https://icdevs.org", "github": "https://github.com/icdevs/Icdevs_fleeksite", "logo": "/img/showcase/icdevs.org_logo.webp", @@ -1487,11 +1133,7 @@ "name": "Uniswap Frontend on ICP", "website": "https://yrog5-xqaaa-aaaap-qa5za-cai.ic0.app/#/swap", "github": "https://github.com/domwoe/uniswap_ui_on_ic", - "tags": [ - "DeFi", - "Ethereum", - "Chainfusion" - ], + "tags": ["DeFi", "Ethereum", "Chain Fusion"], "description": "Uniswap's frontend hosted on the Internet Computer with canister-based wallet integration. Thanks to the Internet Computer, traditional DeFi solutions can now be completely decentralized, having their frontend hosted on ICP. There is no longer a need to include centralized cloud providers in a decentralized application.", "usesInternetIdentity": true, "oneLiner": "Front-End Onchain", @@ -1506,42 +1148,30 @@ "name": "Difibase", "oneLiner": "Difibase - NoSQL database management system on the Internet Computer", "website": "https://7wwjw-5iaaa-aaaan-qbguq-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Difibase is a database provider (NoSQL). You can use the system's database or integrate your own!", "usesInternetIdentity": false, "display": "Normal", "logo": "/img/showcase/difibase_logo.webp", - "screenshots": [ - "/img/showcase/difibase_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/difibase_screenshot_0.webp"] }, { "id": "nftanvil", "name": "NFTAnvil", "website": "https://nftanvil.com", - "tags": [ - "NFT", - "Games" - ], + "tags": ["NFT", "Games"], "description": "NFTAnvil is a wallet, mint & marketplace in the Anvil ecosystem. It's built from scratch and has an alternative & genuine approach to NFTs. It uses Anvil's auto-scaling multi-canister token architecture.", "github": "https://github.com/infu/nftanvil", "usesInternetIdentity": true, "display": "Normal", "logo": "/img/showcase/nftanvil_logo.webp", - "screenshots": [ - "/img/showcase/nftanvil_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/nftanvil_screenshot_0.webp"] }, { "id": "aviatelabs", "name": "Aviate Labs", "description": "Stop worrying about system failures and slow performance. Our data center standby team is here to keep your nodes running at top speed, with round-the-clock monitoring and troubleshooting. Currently managing 70 nodes in 3 datacenters.", - "tags": [ - "Tools / Infrastructure", - "Enterprise" - ], + "tags": ["Tools / Infrastructure", "Enterprise"], "website": "https://www.aviatelabs.co/", "github": "https://github.com/aviate-labs?q=&type=all&language=go&sort=stargazers", "logo": "/img/showcase/aviatelabs_logo.webp", @@ -1551,9 +1181,7 @@ "id": "goagent", "name": "Go Agent ", "website": "https://github.com/aviate-labs/agent-go", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Go Agent provides the toolbox needed to interact with the Internet Computer from Go. It is a collection of packages that can be used to build applications that interact with canister smart contracts.", "github": "https://github.com/aviate-labs/agent-go", "usesInternetIdentity": false, @@ -1564,31 +1192,23 @@ "id": "javaagent", "name": "Java Agent ", "website": "https://github.com/ic4j/ic4j-agent", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Java Agent for the Internet Computer is an open source library. This developer tool enables Java applications to connect remotely to any canister smart contract on the Internet Computer and execute query and update calls.", "github": "https://github.com/ic4j/ic4j-agent", "usesInternetIdentity": false, "logo": "/img/showcase/javaagent_logo.webp", - "screenshots": [ - "/img/showcase/javaagent_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/javaagent_screenshot_0.webp"] }, { "id": "icevent", "name": "ICEvent", "description": "Decentralized Calendar Solution (ticket, appointment, itinerary, schedule)", "website": "https://icevent.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "stats": "3,000+", "logo": "/img/showcase/icevent_logo_112x112.png", - "screenshots": [ - "/img/showcase/icevent_screenshot.PNG" - ], + "screenshots": ["/img/showcase/icevent_screenshot.PNG"], "twitter": "https://twitter.com/vansdaynet", "submittableId": "22168376" }, @@ -1597,9 +1217,7 @@ "name": "Bink", "oneLiner": "Superior alternative to Linktree", "website": "https://b.ink", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "Connect, engage and inspire your audience while owning your data and your identity.", "usesInternetIdentity": true, "logo": "/img/showcase/bink_logo.webp" @@ -1608,33 +1226,25 @@ "id": "pythonagent", "name": "Python Agent", "website": "https://github.com/rocklabs-io/ic-py", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "This Python Agent built for the Internet Computer opens the door for Python developers to more easily become Web3 builders. Featuring basic modules to interact with canisters on the Internet Computer, this Agent, still under development, was a prize winner at the Warpspeed Internet Computer ecosystem hackathon in China.", "github": "https://github.com/rocklabs-io/ic-py", "display": "Normal", "logo": "/img/showcase/pythonagent_logo.webp", - "screenshots": [ - "/img/showcase/pythonagent_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/pythonagent_screenshot_0.webp"] }, { "id": "icpulse", "name": "ICPulse", "oneLiner": "Visual metrics for IC's software activity data", "website": "https://icpulse.io/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": " ICPulse increases the transparency on ICP’s developer ecosystem by aggregating the activity data from GitHub and displaying visual metrics in an effective dashboard.", "usesInternetIdentity": false, "logo": "/img/showcase/icpulse_logo.svg", "github": "https://github.com/CrossChainLabs-ICP", "twitter": "https://twitter.com/CrossChain_Labs/status/1626495037734285312?s=20", - "screenshots": [ - "static/img/showcase/ICPulse_screenshot.jpg" - ], + "screenshots": ["static/img/showcase/ICPulse_screenshot.jpg"], "submittableId": "32418389" }, { @@ -1642,28 +1252,20 @@ "name": "SLY", "oneLiner": "Seamless CLI for the Internet Computer", "website": "https://sly.ooo/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "twitter": "https://twitter.com/psychedelicDAO", "description": "SLY, developed by PsychedelicDAO, is a seamless Command Line Interface (CLI) for the Internet Computer. SLY is an open-source, and collaborative CLI - providing abstractions, templates, and tools to kick-start and speed up Internet Computer development.", "github": "https://github.com/psychedelic/sly", "display": "Normal", "logo": "/img/showcase/sly_logo.svg", - "screenshots": [ - "/img/showcase/sly_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/sly_screenshot_0.webp"] }, { "id": "obsidian-tears", "name": "Obsidian Tears", "oneLiner": "Obsidian Tears is a 2D RPG similar to old-time classics, complete with NFT and blockchain integration on the Internet Computer.", "website": "https://obsidiantears.xyz/", - "tags": [ - "Games", - "NFT", - "Metaverse" - ], + "tags": ["Games", "NFT", "Metaverse"], "description": "Obsidian Tears is a 2D adventure featuring original art, story, music, and over 50 collectible NFT artifacts. Our mission is to make a great story after our favorite old-time classics, and to empower others to do the same.", "logo": "/img/showcase/obsidian-tears-logo.webp", "display": "Large", @@ -1671,9 +1273,7 @@ "github": "https://github.com/obsidian-tears", "youtube": "https://youtu.be/PqlVY9Qy74M", "twitter": "https://twitter.com/obsidian__tears", - "screenshots": [ - "/img/showcase/obsidian-tears-screenshot0.webp" - ], + "screenshots": ["/img/showcase/obsidian-tears-screenshot0.webp"], "video": "/img/showcase/obsidian-tears-trailer.mp4", "videoContentType": "video/mp4", "submittableId": "25983021" @@ -1682,9 +1282,7 @@ "id": "polycrypt", "name": "PolyCrypt", "description": "We develop cryptographic decentralized off-chain solutions which tackle scalability challenges enabling mass adoption of blockchains.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "website": "https://perun.network", "github": "https://github.com/perun-network/perun-icp-canister", "twitter": "https://twitter.com/PolyCrypt_", @@ -1695,9 +1293,7 @@ "id": "codebase", "name": "CODEBASE", "description": "Decentralized Git hosting and software collaboration, powered by permissionless protocols.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "website": "https://codebase.org/", "github": "https://github.com/paulyoung/icfs", "twitter": "https://twitter.com/CodebaseLabs", @@ -1708,9 +1304,7 @@ "name": "Usergeek", "oneLiner": "Product analytics for IC dapps", "description": "See your product main metrics, such as DAU, WAU, MAU, new users, retention, and usage frequency.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "website": "https://usergeek.app/", "github": "https://github.com/usergeek/usergeek-ic-js", @@ -1723,9 +1317,7 @@ "name": "Configeek", "oneLiner": "Remote configuration tool", "description": "Change the appearance and behaviour of your product in real-time.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "website": "https://configeek.app/", "github": "https://github.com/usergeek/configeek-ic-js", @@ -1737,40 +1329,28 @@ "id": "ics", "name": "ICS", "website": "https://internetcomputerservices.com/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Build scalable DApps on internet computer with ease. Build, manage, and ship dapps with just a few clicks", "usesInternetIdentity": false, "display": "Normal", "logo": "/img/showcase/ics_logo.webp", - "screenshots": [ - "/img/showcase/ics_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/ics_screenshot_0.webp"] }, { "id": "thewall", "name": "The Wall", "website": "https://rivyl-6aaaa-aaaaf-qaapq-cai.raw.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "The Wall is a dapp built on the Internet Computer blockchain, which blends Ethereum's MetaMask authentication with the Internet Computer's native Internet Identity blockchain authentication system. This first example of ETH x ICP allows users to leave any message on the wall for all eternity.", "github": "https://github.com/kristoferlund/ic-wall", "logo": "/img/showcase/thewall_logo.webp", - "screenshots": [ - "/img/showcase/thewall_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/thewall_screenshot_0.webp"] }, { "id": "canister-store", "name": "Canister Store", "oneLiner": "Empowering Users to Easily Deploy Canisters on the Internet Computer", - "tags": [ - "Tools / Infrastructure", - "NFT", - "Wallet" - ], + "tags": ["Tools / Infrastructure", "NFT", "Wallet"], "description": "Canister Store is a groundbreaking platform that empowers developers/users in the Internet Computer ecosystem and beyond. With its innovative self-deploy feature, users can effortlessly access and deploy canisters, including pre-built images such as Tokens, NFTs, dapps, and various other tools.", "usesInternetIdentity": true, "website": "https://canister.app", @@ -1779,9 +1359,7 @@ "twitter": "https://twitter.com/canister_app", "display": "Large", "logo": "/img/showcase/canister-store_logo.png", - "screenshots": [ - "/img/showcase/canister-store_screenshot_0.png" - ], + "screenshots": ["/img/showcase/canister-store_screenshot_0.png"], "video": "/img/showcase/canister-store_video.mp4", "videoContentType": "video/mp4", "submittableId": "35750450" @@ -1791,17 +1369,13 @@ "description": "cyql.io is a curated list of decentralized applications and projects built on the Internet Computer. The main goal of the project is to be a common place to explore projects, along with providing information about the NFT collections and upcoming events. ", "website": "https://cyql.io/", "logo": "/img/showcase/cyqlio_logo.svg", - "screenshots": [ - "/img/showcase/cyqlio_screenshot.webp" - ], + "screenshots": ["/img/showcase/cyqlio_screenshot.webp"], "video": "", "display": "Normal", "id": "cyqlio", "oneLiner": "Curated Internet Computer projects gallery.", "stats": "5,000+ users", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/tomkoom/cyql.io", "twitter": "https://twitter.com/cyqlio", @@ -1813,25 +1387,18 @@ "name": "Dank", "oneLiner": "Decentralized Cycles Bank", "website": "https://dank.ooo/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "twitter": "https://twitter.com/psychedelicDAO", "description": "Dank is the first Decentralized Bank built on the Internet Computer, developed by Fleek. Through a collection of Open Internet Services for users and developers, Dank makes cycles management seamless.", "logo": "/img/showcase/dank_logo.webp", - "screenshots": [ - "/img/showcase/dank_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/dank_screenshot_0.webp"] }, { "id": "icmojiorigins", "name": "ICmoji Origins", "oneLiner": "NFT Based Multiplayer Game Onchain", "website": "https://icmojis.com/", - "tags": [ - "Games", - "NFT" - ], + "tags": ["Games", "NFT"], "description": "ICmoji Origins is an NFT-based multiplayer game built end-to-end onchain on the Internet Computer. The winner of the DSCVR Hackathon Season 2 features one of the first NFTs on the Internet Computer, ICMojis.", "usesInternetIdentity": false, "display": "Normal", @@ -1844,9 +1411,7 @@ "id": "dbox", "name": "Dbox", "description": "The decentralized inbox built on Internet Computer", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "website": "https://dbox.foundation/", "twitter": "https://twitter.com/DBOXFoundation?s=20&t=AlMLUWAfM1UU2f_mRzwqCg", @@ -1858,9 +1423,7 @@ "id": "icnaming", "name": "ICNaming", "website": "https://app-testnet.icnaming.com/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "ICNaming is a testnet that is enabling the Internet Computer ecosystem to register domain names on the Internet Computer Name Service. Similar to the Ethereum Name Servce (ENS), ICNaming aims to offer a decentralized name service for users to pseudonomize their wallet addresses on ICP, as well as domain names, and canister smart contract IDs. ", "github": "https://github.com/IC-Naming", "usesInternetIdentity": true, @@ -1872,9 +1435,7 @@ "id": "icadashboard", "name": "ICA Dashboard", "website": "https://dashboard.internetcomputer.org/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "The Internet Computer Association maintains a public dashboard where anyone can track the latest statistics for the Internet Computer blockchain. Tracking everything from blocks per second, to NNS proposals and their information and voting record, as well the latest state of the network, and transaction data. ", "oneLiner": "ICA Official Dashboard", "display": "Normal", @@ -1886,19 +1447,13 @@ "name": "ICP Coins", "oneLiner": "DEX stats aggregator", "website": "https://icpcoins.com", - "tags": [ - "Tools / Infrastructure", - "DeFi", - "DAO" - ], + "tags": ["Tools / Infrastructure", "DeFi", "DAO"], "description": "IC coins by market cap. Aggregates stats from all Internet Computer based DEXes. Price, Volume & liquidity score charts.", "usesInternetIdentity": false, "stats": "1,000+ users", "logo": "/img/showcase/icpcoins_logo.png", "github": "https://github.com/vvv-interactive/icpcoins", - "screenshots": [ - "/img/showcase/icpcoins_screenshot_0.jpg" - ] + "screenshots": ["/img/showcase/icpcoins_screenshot_0.jpg"] }, { "id": "internetcomputerorgwebsite", @@ -1906,9 +1461,7 @@ "oneLiner": "Educational website for the Internet Computer", "website": "https://internetcomputer.org", "github": "https://github.com/dfinity/portal", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "The website you're scrolling now, internetcomputer.org is itself a dapp hosted 100% on the Internet Computer - including images and videos.", "display": "Normal", "logo": "/img/showcase/internetcomputerorgwebsite_logo.webp", @@ -1921,10 +1474,7 @@ "name": "DGDG", "oneLiner": "The most comprehensive browsing experience for NFTs. Sort & filter by price and rarity, expose floors, and much more.", "website": "https://www.dgastonia.com/nfts/collections/", - "tags": [ - "NFT", - "Tools / Infrastructure" - ], + "tags": ["NFT", "Tools / Infrastructure"], "description": "The most comprehensive browsing experience for NFTs. Browse any NFT collection on the Internet Computer, sort & filter by price or rarity, expose floors, and much more.", "usesInternetIdentity": false, "logo": "/img/showcase/dgdg_logo.webp" @@ -1933,101 +1483,72 @@ "id": "jumpymotoko", "name": "Jumpy Motoko", "website": "https://65t4u-siaaa-aaaal-qbx4q-cai.ic0.app/", - "tags": [ - "Games" - ], + "tags": ["Games"], "description": "Unity play to earn game on Internet Computer. Comes with code sample so you can deploy your own Unity play to earn game too.", "github": "https://github.com/therealbryanho/IC-Code-Sample-Unity-Play-to-Earn-Game", "display": "Normal", "logo": "/img/showcase/jumpymotoko_logo.webp", - "screenshots": [ - "/img/showcase/jumpymotoko_screenshot.webp" - ] + "screenshots": ["/img/showcase/jumpymotoko_screenshot.webp"] }, { "id": "windowsic", "name": "Windows IC", "website": "https://3ix2y-naaaa-aaaad-qap6a-cai.raw.ic0.app/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Windows IC is a React Dapp built on the Internet Computer. Mimicking what a chromebook can do, but for a mimic of the Windows Operating System, this decentralized desktop allows anyone to access some of their favorite programs from any browser.", "logo": "/img/showcase/windowsic_logo.webp", - "screenshots": [ - "/img/showcase/windowsic_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/windowsic_screenshot_0.webp"] }, { "id": "tipjar", "name": "Tipjar", "website": "https://tipjar.rocks", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "A tool to donate cycles to canisters as well as keep them monitored.", "github": "https://github.com/ninegua/tipjar", "usesInternetIdentity": true, "display": "Normal", "logo": "/img/showcase/tipjar_logo.webp", - "screenshots": [ - "/img/showcase/tipjar_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/tipjar_screenshot_0.webp"] }, { "id": "welcomeintothemetaverse", "name": "Welcome Into the Metaverse", "website": "https://lc7ip-3iaaa-aaaah-aafva-cai.ic0.app/", - "tags": [ - "Games" - ], + "tags": ["Games"], "description": "Prize winner of the DSCVR hackathon for the Internet Computer - this game brings digital community into a unified virtual space. Find anecdotes from founding ecosystem members, and go through a series of quests.", "logo": "/img/showcase/welcomeintothemetaverse_logo.webp", - "screenshots": [ - "/img/showcase/welcomeintothemetaverse_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/welcomeintothemetaverse_screenshot_0.webp"] }, { "id": "lo-fiplayer", "name": "Lo-Fi Player", "website": "https://hl2zz-gyaaa-aaaad-qas3a-cai.raw.ic0.app/", - "tags": [ - "Games" - ], + "tags": ["Games"], "description": "Lo-Fi Player is a dapp hosted on the Internet Computer that lets users listen to relaxing beats delivered by blockchain. The back-end is using machine learning to build and develop the AI produced tunes, and users can interact within the player to change the sound to their liking. ", "logo": "/img/showcase/lo-fiplayer_logo.webp", - "screenshots": [ - "/img/showcase/lo-fiplayer_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/lo-fiplayer_screenshot_0.webp"] }, { "id": "reversi", "name": "Reversi", "website": "https://ivg37-qiaaa-aaaab-aaaga-cai.ic0.app/#!/play", - "tags": [ - "Games" - ], + "tags": ["Games"], "description": "Reversi is one of the first canister smart contracts deployed to the Internet Computer and is a completely decentralized multiplayer game. Play against a friend (or foe) in real-time, from any browser, anywhere in the world. ", "github": "https://github.com/ninegua/reversi", "logo": "/img/showcase/reversi_logo.webp", - "screenshots": [ - "/img/showcase/reversi_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/reversi_screenshot_0.webp"] }, { "id": "gooble", "name": "Goblin Studio", "description": "Onchain Goblin Maker, Goblin Translator & Goblintown Travel Companion.", "website": "https://gooble.app/", - "tags": [ - "SocialFi", - "NFT" - ], + "tags": ["SocialFi", "NFT"], "usesInternetIdentity": false, "stats": "4,000+ goblins", "logo": "/img/showcase/gooble_logo.webp", - "screenshots": [ - "/img/showcase/gooble_screenshot.webp" - ], + "screenshots": ["/img/showcase/gooble_screenshot.webp"], "twitter": "https://twitter.com/vger_ic" }, { @@ -2035,14 +1556,10 @@ "name": "FootballGod", "description": "A weekly sweepstake where players predict Premier League scores.", "website": "https://43loz-3yaaa-aaaal-qbxrq-cai.ic0.app/", - "tags": [ - "Games" - ], + "tags": ["Games"], "usesInternetIdentity": true, "logo": "/img/showcase/football-god_logo.webp", - "screenshots": [ - "/img/showcase/football-god_screenshot.webp" - ], + "screenshots": ["/img/showcase/football-god_screenshot.webp"], "twitter": "https://twitter.com/beadle1989" }, { @@ -2050,14 +1567,10 @@ "name": "EMC Protocol", "description": "EMC (EdgeMatrix Computing blockchain) is a Layer-2 protocol on the Internet Computer Protocol (ICP) blockchain. It is an innovative decentralized computing network that is changing the way people use AI applications. EMC's vision is to eliminate the digital divide, eliminate centralized monopolies, and unlock the full potential of AI for everyone. The future of AI will be accessible to everyone, and everyone will be a part of it!", "website": "http://edgematrix.pro/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "logo": "/img/showcase/emc_logo.svg", - "screenshots": [ - "/img/showcase/emc_screenshot.png" - ], + "screenshots": ["/img/showcase/emc_screenshot.png"], "github": "https://github.com/EMCprotocol/emc_java_sdk", "twitter": "https://twitter.com/EMCprotocol" }, @@ -2065,10 +1578,7 @@ "id": "PHASMA", "name": "PHASMA", "website": "https://toniq.io/marketplace/phasma", - "tags": [ - "Metaverse", - "NFT" - ], + "tags": ["Metaverse", "NFT"], "description": "curated collection of 1,500 unique NFTs on the Internet Computer.", "logo": "/img/showcase/phasma_logo.webp", "twitter": "https://twitter.com/phasmafuture" @@ -2078,9 +1588,7 @@ "name": "One Block", "description": "Public profile(links, bio, inbox...) for individual/organization", "website": "https://oneblock.page/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "logo": "/img/showcase/oneblock.png", "screenshots": [], @@ -2091,11 +1599,7 @@ "name": "Block List", "description": "Open fleet market for P2P trading by leveraging open escrow service", "website": "https://vfclb-tyaaa-aaaap-aawna-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure", - "DeFi", - "NFT" - ], + "tags": ["Tools / Infrastructure", "DeFi", "NFT"], "usesInternetIdentity": true, "logo": "/img/showcase/blocklist.png", "github": "https://github.com/ICEvent/Escrow" @@ -2104,9 +1608,7 @@ "id": "vibeverse", "name": "Vibeverse", "oneLiner": "a learning mobile app that teaches ppl how to be creative with ai", - "tags": [ - "AI" - ], + "tags": ["AI"], "description": "Vibeverse is a vibrant digital playground where creators, filmmakers, and artists harness AI tools to craft, share, and celebrate unique content in a decentralized community.", "stats": "", "logo": "/img/showcase/vibeverse_logo.png", @@ -2126,16 +1628,12 @@ "description": "Collaborative Product Design Innovation Hub", "website": "https://dsign.ooo", "logo": "/img/showcase/dsign_logo.webp", - "screenshots": [ - "/img/showcase/dsign_screenshot.webp" - ], + "screenshots": ["/img/showcase/dsign_screenshot.webp"], "video": "", "display": "Normal", "id": "dsign", "oneLiner": "Collaborative Product Design Innovation Hub", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/cybrowl/dsign-components", "twitter": "", @@ -2147,9 +1645,7 @@ "name": "Metaforo ICP deployment", "oneLiner": "Deploy the frontend of a web3 forum system - metaforo.io on ICP", "website": "https://can1.metaforo.io/", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "Metaforo: a Web3 forum prioritizing decentralization, community ownership, and token-gated governance. By shifting the Front-End to IC, we boost reliability, security, and scalability, enabling a seamless user experience without intermediaries.", "stats": "1,000+ users", "logo": "/img/showcase/metaforo-icp_logo.png", @@ -2172,16 +1668,11 @@ "stats": "$100k+ TVL", "website": "https://rakeoff.io/", "logo": "/img/showcase/rakeoff_logo.webp", - "screenshots": [ - "/img/showcase/rakeoff_screenshot.webp" - ], + "screenshots": ["/img/showcase/rakeoff_screenshot.webp"], "display": "Normal", "id": "rakeoff", "oneLiner": "Rakeoff is a cryptocurrency staking rewards application built on the ICP blockchain.", - "tags": [ - "DeFi", - "Wallet" - ], + "tags": ["DeFi", "Wallet"], "usesInternetIdentity": true, "github": "https://github.com/rakeoff-labs", "twitter": "https://twitter.com/rakeoff_app" @@ -2191,15 +1682,11 @@ "name": "Tswaanda", "oneLiner": "Bridging farmers to profitable markets, empowering growth through trade and financing", "website": "https://tswaanda.com", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "Tswaanda is revolutionizing African agriculture by connecting smallholder farmers to profitable markets, empowering growth through trade and financial inclusion.", "logo": "/img/showcase/tswaanda_logo.jpg", "usesInternetIdentity": true, - "authOrigins": [ - "https://4qia7-eaaaa-aaaal-qb34a-cai.icp0.io" - ], + "authOrigins": ["https://4qia7-eaaaa-aaaal-qb34a-cai.icp0.io"], "github": "https://github.com/Tswaanda/tswaanda-marketplace", "youtube": "https://www.youtube.com/@tswaanda", "twitter": "https://twitter.com/tswaanda", @@ -2215,11 +1702,7 @@ "id": "chainsight", "name": "Chainsight Demo", "oneLiner": "Interchain Data Processing Layer", - "tags": [ - "Tools / Infrastructure", - "Ethereum", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Ethereum", "Chain Fusion"], "description": "Chainsight is an interchain data processing layer that makes blockchain data available for decentralized applications. It allows time series analysis and forecasting based on historical data to be incorporated into onchain application logic in a trustless manner.", "usesInternetIdentity": false, "website": "https://demo.chainsight.network", @@ -2227,9 +1710,7 @@ "twitter": "https://twitter.com/Chainsight_", "display": "Large", "logo": "/img/showcase/chainsight_logo.webp", - "screenshots": [ - "/img/showcase/chainsight_screenshot.webp" - ], + "screenshots": ["/img/showcase/chainsight_screenshot.webp"], "submittableId": "36057758" }, { @@ -2237,19 +1718,13 @@ "name": "SCOGÉ Universe", "oneLiner": "T.A.O.S City’s finest distributor of Luxury Fashion and Consumer goods", "website": "https://uqjdj-siaaa-aaaag-aaoxq-cai.icp0.io", - "tags": [ - "NFT", - "Metaverse", - "Games" - ], + "tags": ["NFT", "Metaverse", "Games"], "description": "SCOGÉ is a cutting-edge fashion-centric gamified metaverse platform that revolutionizes the way styles are born, stories are told, and interaction between users. Users embark on an enthralling journey, wielding unique powers to craft thrilling experiences while discovering T.A.O.S City and the evolving SCOGÉ Universe.", "logo": "/img/showcase/scoge_logo.webp", "display": "Large", "usesInternetIdentity": false, "twitter": "https://twitter.com/_scoge_", - "screenshots": [ - "/img/showcase/scoge_screenshots.webp" - ], + "screenshots": ["/img/showcase/scoge_screenshots.webp"], "video": "/img/showcase/scoge_video.mp4", "videoContentType": "video/mp4", "submittableId": "34276514" @@ -2264,9 +1739,7 @@ "video": "", "display": "Normal", "oneLiner": "Transparent, tamper-proof voting on blockchain.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/NewbMiao/dvote", "twitter": "", @@ -2277,17 +1750,11 @@ "id": "evmonicp", "name": "EVM on ICP", "website": "https://fxa77-fiaaa-aaaae-aaana-cai.raw.ic0.app/evm/", - "tags": [ - "Tools / Infrastructure", - "Ethereum", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Ethereum", "Chain Fusion"], "description": "An Ethereum Virtual Machine (EVM) demo built and hosted on the Internet Computer blockchain. P.S. There is a hidden game in the demo. ", "display": "Normal", "logo": "/img/showcase/evmonicp_logo.webp", - "screenshots": [ - "/img/showcase/evmonicp_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/evmonicp_screenshot_0.webp"] }, { "id": "icpp-pro", @@ -2295,16 +1762,12 @@ "description": "C++ Canister Development Kit (CDK). Seamlessly develop, debug, test & deploy your C++ Canisters from Windows, Linux or Mac.", "website": "https://docs.icpp.world/", "logo": "/img/showcase/icpp-logo.dracula-cyan.112x112.png", - "screenshots": [ - "/img/showcase/icpp-pro-screenshot.1024x576.png" - ], + "screenshots": ["/img/showcase/icpp-pro-screenshot.1024x576.png"], "video": "", "display": "Normal", "oneLiner": "Seamlessly develop, debug, test & deploy your C++ Canisters from Windows, Linux or Mac.", "stats": "10,000 Downloads", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "github": "", "twitter": "https://twitter.com/icpp_pro", @@ -2315,11 +1778,7 @@ "id": "nftstudio", "name": "NFT Studio", "website": "https://7xw5z-uqaaa-aaaad-qaqcq-cai.raw.ic0.app/", - "tags": [ - "Metaverse", - "NFT", - "Tools / Infrastructure" - ], + "tags": ["Metaverse", "NFT", "Tools / Infrastructure"], "description": "NFT Studio is the first to develop 3D NFTs. This means that the NFTs themselves are living 3D code, as opposed to a .GIF recording of a 3D rendered image. This is only possible thanks to the ICP blockchain as NFTs can run code, not just link to an image. NFT Studio has had features in major media for the 3D NFT minting tools that are being built for global creators.", "display": "Normal", "logo": "/img/showcase/nftstudio_logo.webp", @@ -2337,9 +1796,7 @@ "display": "Normal", "id": "nacdb-database", "oneLiner": "A distributed database that allows seamless scanning", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "github": "https://github.com/vporton/NacDB", "twitter": "https://twitter.com/NacDB_Database", @@ -2352,25 +1809,19 @@ "name": "Fleek", "oneLiner": "Blockchain Version of Netlify", "website": "https://fleek.co/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Fleek brings decentralized web-hosting to the Internet Computer. With thousands of webpages deployed, Fleek enables anyone to deploy their content on Web3.0", "usesInternetIdentity": false, "stats": "1,000+ websites", "logo": "/img/showcase/fleek_logo.webp", - "screenshots": [ - "/img/showcase/fleek_screenshot_0.webp" - ] + "screenshots": ["/img/showcase/fleek_screenshot_0.webp"] }, { "id": "ichub", "name": "IC HUB", "oneLiner": "Your gateway to web3 apps: connect, chat and explore all in one place", "website": "https://md7ke-jyaaa-aaaak-qbrya-cai.ic0.app/", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "Welcome to IC Hub! Your dapp for connecting with friends, chatting, joining groups, and managing tokens & NFTs. For developers, register your projects easily without seeking permission. Empowering you to connect, transact, and build in a user-friendly ecosystem.", "usesInternetIdentity": true, "stats": "50+ Projects", @@ -2384,10 +1835,8 @@ { "id": "hashkeydid", "name": "HashKey DID", - "website": "http://icp.hashkey.id", - "tags": [ - "SocialFi" - ], + "website": "http://icp.hashkey.id", + "tags": ["SocialFi"], "description": "The uniquely-designed DID is your passport in web3. Your data and assets will be connected to HashKey DID and your private information will be kept in your own hands.", "stats": "1,200,000 users, 3,200,000 Credentials, 30 Eco-members", "logo": "/img/showcase/hashkeydid_logo.svg", @@ -2399,11 +1848,7 @@ "id": "nnsdao", "name": "NnsDAO Protocol", "website": "https://www.nnsdao.org/", - "tags": [ - "DAO", - "Tools / Infrastructure", - "Metaverse" - ], + "tags": ["DAO", "Tools / Infrastructure", "Metaverse"], "description": "The boundaryless autonomous organization.", "logo": "/img/showcase/nnsdao_logo.png", "usesInternetIdentity": false, @@ -2416,10 +1861,7 @@ "name": "ICpodcast", "website": "https://looncast.com/", "oneLiner": "Launch a podcast and tap into web3.", - "tags": [ - "NFT", - "SocialFi" - ], + "tags": ["NFT", "SocialFi"], "description": "The Decentralized Podcast Protocol for Creators on the IC.", "stats": "10+ Podcaster", "usesInternetIdentity": false, @@ -2427,9 +1869,7 @@ "twitter": "https://twitter.com/Looncasts", "display": "Large", "logo": "/img/showcase/icpodcast_logo.png", - "screenshots": [ - "/img/showcase/icpodcast_screenshot.png" - ], + "screenshots": ["/img/showcase/icpodcast_screenshot.png"], "video": "/img/showcase/icpodcast_demo.mp4", "videoContentType": "video/mp4", "submittableId": "33308492" @@ -2439,9 +1879,7 @@ "name": "MotokoPilot", "website": "https://d7dm6-sqaaa-aaaag-qcgma-cai.icp0.io/", "oneLiner": "Your AI-powered companion for simplifying and streamlining the Motoko coding experience.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "MotokoPilot is an AI-driven tool designed to streamline code completion, documentation, and debugging in Motoko. It simplifies the process for newcomers to Motoko development while enabling seasoned developers to write code with greater speed and efficiency.", "stats": "10,000+ lines of training data", "usesInternetIdentity": true, @@ -2449,9 +1887,7 @@ "youtube": "https://www.youtube.com/@ICPCS", "twitter": "https://twitter.com/icpcsnft", "logo": "/img/showcase/motokopilot_logo.png", - "screenshots": [ - "/img/showcase/motokopilot_screenshot.jpg" - ], + "screenshots": ["/img/showcase/motokopilot_screenshot.jpg"], "submittableId": "35960849" }, { @@ -2459,10 +1895,7 @@ "name": "AgorApp", "oneLiner": "Learn how to build on ICP on an interactive platform that provides a browser-based IDE for all-things-web3-engineering.", "website": "https://agorapp.dev/", - "tags": [ - "Tools / Infrastructure", - "NFT" - ], + "tags": ["Tools / Infrastructure", "NFT"], "description": "AgorApp is a Codecademy-style interactive coding environment where users can learn to develop smart contracts on ICP and, then, test their skills by participating in web3 CTFs and smart contract optimization contests.", "usesInternetIdentity": false, "stats": "600+ users", @@ -2477,16 +1910,10 @@ "name": "Zondax Unreal", "oneLiner": "Enhancing Gaming development on IC.", "website": "https://zondax.ch/", - "tags": [ - "Tools / Infrastructure", - "Metaverse", - "Games" - ], + "tags": ["Tools / Infrastructure", "Metaverse", "Games"], "description": "Enabling game developer communities to integrate their C++ native projects with the IC interface onchain, using our wrapper for seamless interaction. Easy deployment using Unreal Engine, or other C++ native projects. Our mission is to bridge the gap, enhancing IC's accessibility and inviting a broader community of creators. Using Zondax Unreal, game devs can fully unlock IC's potential. ", "logo": "/img/showcase/zondax-unreal_logo.webp", - "screenshots": [ - "/img/showcase/zondax-unreal_screenshot_0.webp" - ], + "screenshots": ["/img/showcase/zondax-unreal_screenshot_0.webp"], "display": "Large", "usesInternetIdentity": false, "github": "https://github.com/Zondax/icp-client-cpp", @@ -2499,9 +1926,7 @@ "name": "Pluto", "oneLiner": "HTTP router on blockchain", "website": "https://t5mcf-cqaaa-aaaag-qcjna-cai.raw.icp0.io/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Pluton is an HTTP router implemented on the Internet Computer to facilitate working with HTTP. This router is a framework that allows you to write REST API applications on the blockchain in almost the same way as in Web 2", "logo": "/img/showcase/pluto_logo.webp", "usesInternetIdentity": false, @@ -2512,9 +1937,7 @@ "id": "motoko-book", "name": "The Motoko Programming Language Book", "oneLiner": "Writing Web3 Applications on the Internet Computer", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "This book guides beginners into the world of Web3 programming in Motoko on the Internet Computer. It covers a broad range of concepts from the very basics to advanced async programming.", "stats": "100 monthly users", "logo": "/img/showcase/motoko-book_logo.png", @@ -2528,9 +1951,7 @@ "name": "InfinitiNote", "oneLiner": "InfinitiNote: Where the Unbounded Universe of Blockchain and AI Enhances Your Notes with Endless Insights.", "website": "https://jqajc-hiaaa-aaaak-qck5a-cai.icp0.io/#/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "InfinitiNote is an ICP-based AI-enabled Note taking application, that allows users to create Notebooks, store Notes, and collaboratively edit in real-time with the capability for file uploads and enhanced by LLAMA AI.", "logo": "/img/showcase/in_logo.jpg", "usesInternetIdentity": "true", @@ -2543,18 +1964,13 @@ "description": "NobleBlocks, a DeSci project, aims to reshape scientific publishing using the Internet Computer's decentralized technology. We focus on fair and transparent reviewing and editing processes, guided by community-led DAOs. Our objective is to make scientific research more efficient and easily accessible to all.", "website": "https://www.nobleblocks.com", "logo": "/img/showcase/nobleblocks_logo.webp", - "screenshots": [ - "/img/showcase/nobleblocks_screenshot.webp" - ], + "screenshots": ["/img/showcase/nobleblocks_screenshot.webp"], "video": "", "display": "Normal", "id": "nobleblocks", "oneLiner": "A Community-Driven DeSci Project for Scientific Publishing", "stats": "", - "tags": [ - "SocialFi", - "Tools / Infrastructure" - ], + "tags": ["SocialFi", "Tools / Infrastructure"], "usesInternetIdentity": true, "github": "", "twitter": "https://twitter.com/nobleblocks", @@ -2566,16 +1982,12 @@ "description": "Safenote is an open-source service that enables secure exchange of the most sensitive communication and leaves no trace. It enables any user to encrypt their message and forward it to another, potentially insecure, platform. Safenote can be thought of as a self-destructible sticky notes system.", "website": "https://safenote.store", "logo": "/img/showcase/safenote_logo.webp", - "screenshots": [ - "/img/showcase/safenote_screenshot.webp" - ], + "screenshots": ["/img/showcase/safenote_screenshot.webp"], "video": "", "display": "Normal", "id": "safenote", "oneLiner": "A tool for secure notes exchanging. Built with privacy in mind.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "github": "https://github.com/khejit/Safenote", "twitter": "", @@ -2587,18 +1999,13 @@ "description": "John Dao is community community-controlled twitter/X account. You can post tweet proposals and vote on what the next tweet should be. If your tweet wins you get paid with ICP!", "website": "https://johndao.gg", "logo": "/img/showcase/john-dao_logo.webp", - "screenshots": [ - "/img/showcase/john-dao_screenshot.webp" - ], + "screenshots": ["/img/showcase/john-dao_screenshot.webp"], "video": "", "display": "Normal", "id": "john-dao", "oneLiner": "A Twitter/X account controlled by a DAO on the Internet Computer", "stats": "25.000+ views", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "usesInternetIdentity": true, "github": "", "twitter": "https://twitter.com/JohnDao_gg", @@ -2616,9 +2023,7 @@ "id": "ics2", "oneLiner": "store and organize your files in IC ecosystem", "stats": "100+ users", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "github": "https://github.com/sergeybykov85/ic-storage-service/tree/main/ic-ss", "twitter": "", @@ -2630,16 +2035,12 @@ "description": "aVa: Action-Based Decentralized Reputation Landscape.\nEach step you take alters the collective reputation of projects, services, products, or individuals, all within a transparent and decentralized setting.\nImmerse in projects using Internet Identity, and observe your reputation escalate in tandem with your accomplishments.", "website": "https://ksayv-myaaa-aaaan-qedxq-cai.icp0.io", "logo": "/img/showcase/ava_logo.webp", - "screenshots": [ - "/img/showcase/ava_screenshot.webp" - ], + "screenshots": ["/img/showcase/ava_screenshot.webp"], "video": "", "display": "Normal", "id": "ava", "oneLiner": "aVa: Action-Based Decentralized Reputation Landscape.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/ava-vs", "twitter": "https://twitter.com/ava_projects?t=-ZSMuS6rJLoUucHWynaLeg&s=09", @@ -2656,10 +2057,7 @@ "display": "Normal", "id": "open-internet-metaverse", "oneLiner": "Create Your Virtual Space as a 3D-Website on the Internet Computer", - "tags": [ - "Tools / Infrastructure", - "Metaverse" - ], + "tags": ["Tools / Infrastructure", "Metaverse"], "usesInternetIdentity": true, "github": "https://github.com/Bebb-Protocol-and-Apps/PWS", "twitter": "", @@ -2671,11 +2069,7 @@ "id": "Faceless", "name": "Faceless Project", "oneLiner": "An infrastructure that brings Web 2.0 user experience to Web 3.0", - "tags": [ - "Tools / Infrastructure", - "SocialFi", - "Enterprise" - ], + "tags": ["Tools / Infrastructure", "SocialFi", "Enterprise"], "logo": "/img/showcase/faceless_logo.png", "description": "Faceless provides a cross-platform private payment system based on human-readable identifiers in the IC ecosystem. It brings regulation-compliant financial services to users while still preserving users' privacy.", "usesInternetIdentity": true, @@ -2691,17 +2085,11 @@ "description": "FishVerse is a revolutionary W2E fishing game that is an open world, decentralized, and built on ICP technology. It brings together fishing and GameFi enthusiasts inside of a vibrant community where people can monetize by catching and utilizing NFT fishes, competing in tournaments, missions, providing services, and more...", "website": "https://thefishverse.com/", "logo": "/img/showcase/fishverse_logo.webp", - "screenshots": [ - "/img/showcase/fishverse_screenshot.webp" - ], + "screenshots": ["/img/showcase/fishverse_screenshot.webp"], "display": "Normal", "oneLiner": "FishVerse is a W2E fishing game that is built on ICP technology", "stats": "5,000 players", - "tags": [ - "NFT", - "Metaverse", - "Games" - ], + "tags": ["NFT", "Metaverse", "Games"], "usesInternetIdentity": true, "twitter": "https://twitter.com/TheFishverse", "youtube": "https://www.youtube.com/channel/UCdMLfGmuLAsQlVPg9QROfcQ", @@ -2716,10 +2104,7 @@ "id": "sama_network", "oneLiner": "A blockchain OS with high throughput, business data full-stack encryption, and distributed computing capabilities.", "stats": "Private alpha testnet has been launched; the network and user interface are ready for operation.", - "tags": [ - "Tools / Infrastructure", - "Enterprise" - ], + "tags": ["Tools / Infrastructure", "Enterprise"], "usesInternetIdentity": false, "twitter": "https://twitter.com/sama_network", "youtube": "https://www.youtube.com/@sama_network", @@ -2730,19 +2115,13 @@ "description": "Home for ICP Data-Detectives. Token Stats, Visual Explorer, Account Searching and more.", "website": "https://221Bravo.app", "logo": "/img/showcase/bravo-app_logo.webp", - "screenshots": [ - "/img/showcase/bravo-app_screenshot.webp" - ], + "screenshots": ["/img/showcase/bravo-app_screenshot.webp"], "video": "", "display": "Normal", "id": "bravo-app", "oneLiner": "Token Stats, Blockchain Visual Explorer, Account Searching and more..", "stats": "1,024 members", - "tags": [ - "NFT", - "Tools / Infrastructure", - "DeFi" - ], + "tags": ["NFT", "Tools / Infrastructure", "DeFi"], "usesInternetIdentity": false, "twitter": "https://twitter.com/221BravoApp", "youtube": "", @@ -2758,9 +2137,7 @@ "id": "tali-ai", "oneLiner": "Tali is a Discord Support bot that answers common developer queries.", "stats": "100k+ devs", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "twitter": "https://twitter.com/TryTaliAI", "submittableId": "38502751", @@ -2772,17 +2149,13 @@ "description": "Welcome to the adrenaline-fueled world of \"CARMANIA\" the ultimate automotive customization and racing experience!\nIn this immersive game, you can build-customize your dream car and compete against players from around the globe to dominate the leaderboards.", "website": "https://3tnyu-iiaaa-aaaal-aczcq-cai.raw.icp0.io/", "logo": "/img/showcase/carmania_logo.webp", - "screenshots": [ - "/img/showcase/carmania_screenshot.webp" - ], + "screenshots": ["/img/showcase/carmania_screenshot.webp"], "video": "/img/showcase/carmania_video.mp4", "display": "Normal", "id": "carmania", "oneLiner": "The ultimate automotive customization and racing experience!", "stats": "10,000+ users", - "tags": [ - "Games" - ], + "tags": ["Games"], "usesInternetIdentity": false, "twitter": "https://twitter.com/Carmania_Game", "youtube": "https://youtu.be/KM5Fc-OjTxU", @@ -2795,21 +2168,13 @@ "description": "BPMN workflows on ICP. Automate interactions between organizations. Build user forms, define scriptable decisions, schedule payments and more.", "website": "https://dcentra.io/dflow", "logo": "/img/showcase/dflow_logo.png", - "screenshots": [ - "/img/showcase/dflow_screenshot.png" - ], + "screenshots": ["/img/showcase/dflow_screenshot.png"], "video": "https://youtu.be/Ik9FSpgHREw?t=139", "display": "Normal", "id": "dflow", "oneLiner": "Automate interactions between organizations.", "stats": "", - "tags": [ - "Tools / Infrastructure", - "DeFi", - "DAO", - "SocialFi", - "Enterprise" - ], + "tags": ["Tools / Infrastructure", "DeFi", "DAO", "SocialFi", "Enterprise"], "usesInternetIdentity": true, "twitter": "", "youtube": "https://youtu.be/Ik9FSpgHREw?t=139", @@ -2820,15 +2185,11 @@ "description": "Reward your kids with DooCoins for their good behaviour, completing chores, and personal achievements.\n", "website": "https://www.doo.co", "logo": "/img/showcase/doocoins_logo.webp", - "screenshots": [ - "/img/showcase/doocoins_screenshot.webp" - ], + "screenshots": ["/img/showcase/doocoins_screenshot.webp"], "display": "Normal", "id": "doocoins", "oneLiner": "Kids rewards dapp", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "usesInternetIdentity": true, "github": "https://github.com/jakepeg/doocoins-pwa", "twitter": "https://twitter.com/DooCoins", @@ -2846,9 +2207,7 @@ "id": "ic-websocket", "oneLiner": "Send updates from canisters to your users", "stats": "", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/omnia-network/ic-websocket-gateway", "twitter": "https://twitter.com/ic_websocket", @@ -2860,16 +2219,11 @@ "description": "An NFT Trilogy and community-curated garden inspired by the French Artist, Ludo.", "website": "https://fpdao.app", "logo": "/img/showcase/fpdao_logo.png", - "screenshots": [ - "/img/showcase/fpdao_screenshot.png" - ], + "screenshots": ["/img/showcase/fpdao_screenshot.png"], "display": "Normal", "id": "fpdao", "oneLiner": "The story of blockchain, told in Art.", - "tags": [ - "NFT", - "DAO" - ], + "tags": ["NFT", "DAO"], "usesInternetIdentity": true, "github": "https://github.com/flowerpowerdao/", "twitter": "https://twitter.com/btcflower" @@ -2879,19 +2233,12 @@ "description": "An asset management protocol that leverages data-driven strategies to effectively manage and reallocate assets among various parties. It encompasses smart contracts residing on EVM blockchains (and eventually non-EVM blockchains), a trio of interconnected canisters for state maintenance and a bespoke data protocol to behave as inter-system glue.", "website": "https://go.usher.so/ccamp", "logo": "/img/showcase/ccamp_logo.webp", - "screenshots": [ - "/img/showcase/ccamp_screenshot.webp" - ], + "screenshots": ["/img/showcase/ccamp_screenshot.webp"], "video": "", "display": "Normal", "id": "ccamp", "oneLiner": "Modular, and custom data-driven Cross-chain Asset Management Protocol", - "tags": [ - "Bitcoin", - "Tools / Infrastructure", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "Tools / Infrastructure", "DeFi", "Chain Fusion"], "usesInternetIdentity": false, "github": "https://github.com/usherlabs/ccamp", "twitter": "https://twitter.com/usher_web3", @@ -2903,17 +2250,12 @@ "description": "A new, Open and Cross-Platform Game Store, where games become ownable assets that can be traded, lent, resold, or otherwise repurposed. Find unlimited games that can be browsed, downloaded, and played, on the Isotopic Game Store.", "website": "https://isotopic.io/game-store", "logo": "/img/showcase/isotopic-game-store_logo.webp", - "screenshots": [ - "/img/showcase/isotopic-game-store_screenshot.webp" - ], + "screenshots": ["/img/showcase/isotopic-game-store_screenshot.webp"], "video": "", "display": "Normal", "id": "isotopic-game-store", "oneLiner": "The first Decentralized & Cross-Platform Game Store.", - "tags": [ - "NFT", - "Games" - ], + "tags": ["NFT", "Games"], "usesInternetIdentity": false, "github": "https://github.com/IsotopicIO/icp-store", "twitter": "https://twitter.com/isotopic12", @@ -2925,10 +2267,7 @@ "name": "TaxLint", "oneLiner": "A decentralised, private, and secure automated Tax Report aimed to help users to count ICP and ICRC1 token transactions.", "website": "https://www.taxlint.online/", - "tags": [ - "DeFi", - "Tools / Infrastructure" - ], + "tags": ["DeFi", "Tools / Infrastructure"], "description": "A decentralised, private, and secure automated Tax Report aimed to help users to count ICP and ICRC1 token transactions.", "usesInternetIdentity": true, "logo": "/img/showcase/taxlint_logo.png", @@ -2936,9 +2275,7 @@ "twitter": "https://twitter.com/taxlint", "display": "Normal", "stats": "150+ users", - "screenshots": [ - "/img/showcase/taxlint_screenshot.png" - ], + "screenshots": ["/img/showcase/taxlint_screenshot.png"], "submittableId": "43956470" }, { @@ -2946,18 +2283,12 @@ "description": "InheritX is a blockchain-based application developed on Internet Computer (ICP) that allows users to create a digital will and bequeath their assets to designated beneficiaries in the event of their death.", "website": "https://inherit-x.vercel.app/", "logo": "/img/showcase/inheritx_logo.webp", - "screenshots": [ - "/img/showcase/inheritx_screenshot.webp" - ], + "screenshots": ["/img/showcase/inheritx_screenshot.webp"], "video": "https://www.youtube.com/watch?v=S-VYBLeOoA0", "display": "Normal", "id": "inheritx", "oneLiner": "Empowers seamless & confident digital asset succession for individuals", - "tags": [ - "Bitcoin", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "DeFi", "Chain Fusion"], "usesInternetIdentity": false, "twitter": "https://twitter.com/icpdelta", "youtube": "https://www.youtube.com/@inheritX_0101", @@ -2967,9 +2298,7 @@ "id": "icp-explorer", "name": "ICP Explorer", "website": "https://icp.footprint.network/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "stats": "1000 users", "usesInternetIdentity": false, "description": "ICP Explorer is a Block Explorer and Analytics Platform for Internet Computer, a decentralized smart contracts platform.", @@ -2983,20 +2312,13 @@ "name": "ICPsig", "oneLiner": "Multisig for Internet Computer", "website": "https://icpsig.in/", - "tags": [ - "Wallet", - "Bitcoin", - "DAO", - "Chainfusion" - ], + "tags": ["Wallet", "Bitcoin", "DAO", "Chain Fusion"], "twitter": "https://twitter.com/premiurly", "description": "ICPsig is multisig dapp for internet computer. ICPsig allows multiple principals to control funds in one address.", "usesInternetIdentity": true, "display": "Normal", "logo": "/img/showcase/icpsig_logo.png", - "screenshots": [ - "/img/showcase/icpsig_screenshot.png" - ], + "screenshots": ["/img/showcase/icpsig_screenshot.png"], "submittableId": "41506799" }, { @@ -3004,18 +2326,12 @@ "description": "A curated marketplace for buying and selling digital artwork. Built on the Internet Computer leveraging the Bitcoin Ordinals Protocol", "website": "https://bitbasel.com/", "logo": "/img/showcase/bitbasel-art-marketplace_logo.webp", - "screenshots": [ - "/img/showcase/bitbasel-art-marketplace_screenshot.webp" - ], + "screenshots": ["/img/showcase/bitbasel-art-marketplace_screenshot.webp"], "display": "Normal", "id": "bitbasel-art-marketplace", "oneLiner": "A curated marketplace for buying and selling digital artwork.", "stats": "100+ artworks", - "tags": [ - "Bitcoin", - "NFT", - "Chainfusion" - ], + "tags": ["Bitcoin", "NFT", "Chain Fusion"], "usesInternetIdentity": false, "github": "https://github.com/BitBasel", "twitter": "https://twitter.com/bitbaselart?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor", @@ -3026,17 +2342,12 @@ "description": "With Hobbi, you can create a profile and record all the multimedia content you consume. Whether it's a movie, a book, or even a video game, register and share your profile with whomever you want.", "website": "https://hobbi.me", "logo": "/img/showcase/hobbi_logo.png", - "screenshots": [ - "/img/showcase/hobbi_screenshot.png" - ], + "screenshots": ["/img/showcase/hobbi_screenshot.png"], "display": "Normal", "id": "hobbi", "oneLiner": "Hobbi, the web3 social platform", "stats": "100% on chain", - "tags": [ - "SocialFi", - "NFT" - ], + "tags": ["SocialFi", "NFT"], "usesInternetIdentity": true, "github": "https://github.com/Zona-Tres/Hobbi/", "submittableId": "36099620" @@ -3046,19 +2357,12 @@ "description": "Loka is a platform that enables retail investors to acquire BTC at better than market prices through co-investing with Bitcoin miners. The arrangement is based on a trustless non-custodial escrow solution, which eliminates any exposure to centralized party risk.", "website": "https://lokamining.com", "logo": "/img/showcase/loka_icon.png", - "screenshots": [ - "/img/showcase/loka_screen.jpg" - ], + "screenshots": ["/img/showcase/loka_screen.jpg"], "display": "Normal", "id": "loka", "oneLiner": "Trustless Non-Custodial Bitcoin Mining Platform built on IC", "stats": "100+ users, 10+ global miners", - "tags": [ - "Bitcoin", - "Tools / Infrastructure", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "Tools / Infrastructure", "DeFi", "Chain Fusion"], "usesInternetIdentity": false, "github": "https://github.com/lokaverse", "twitter": "https://twitter.com/lokamining", @@ -3069,20 +2373,13 @@ "description": "icRouter is a cross-chain network of assets based on threshold signature technology, with no off-chain bridges, supporting Bitcoin, IC, and EVM networks (e.g., Ethereum).", "website": "https://iclight.io/account", "logo": "/img/showcase/icrouter_logo.webp", - "screenshots": [ - "/img/showcase/icrouter_screenshot.webp" - ], + "screenshots": ["/img/showcase/icrouter_screenshot.webp"], "video": "", "display": "Normal", "id": "icrouter", "oneLiner": "icRouter: A cross-chain network of assets", "stats": "", - "tags": [ - "Bitcoin", - "Ethereum", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "Ethereum", "DeFi", "Chain Fusion"], "usesInternetIdentity": true, "github": "https://github.com/iclighthouse/icRouter", "twitter": "https://twitter.com/ICLighthouse", @@ -3094,29 +2391,21 @@ "name": "Kinic", "oneLiner": "The world's first Web3 search engine", "website": "https://74iy7-xqaaa-aaaaf-qagra-cai.ic0.app/", - "tags": [ - "Tools / Infrastructure", - "DAO", - "AI" - ], + "tags": ["Tools / Infrastructure", "DAO", "AI"], "twitter": "https://twitter.com/kinic_app?s=20&t=PVKALcCRCdZIgr0U4sDWeg", "description": "Kinic provides artificial intelligence tooling for the new web. Deploy vector databases, machine learning instances, and much more leveraging web3.", "stats": "3,000,000+ searches", "display": "Large", "usesInternetIdentity": true, "logo": "/img/showcase/kinic_logo.webp", - "screenshots": [ - "/img/showcase/kinic_screenshot.webp" - ] + "screenshots": ["/img/showcase/kinic_screenshot.webp"] }, { "id": "vault-k8s", "name": "Vault k8s Canister", "website": "https://github.com/Zondax/vault-k8s-canister", "oneLiner": "IC-based secret sharing, ensuring flexible, secure management.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "POC of a decentralized secret management solution that leverages Internet Computer (IC) technology. It aims to provide a means for services to share secrets in a flexible, transparent, and secure way. It simplifies the flow of secret management between consumers in the cluster as well as rotate secrets based on config for added security.", "stats": "100% on chain ACL", "usesInternetIdentity": true, @@ -3124,9 +2413,7 @@ "youtube": "https://youtu.be/99MahI1SO7c", "twitter": "https://twitter.com/_zondax_", "logo": "/img/showcase/zondax-logo.jpg", - "screenshots": [ - "/img/showcase/vault-k8s.jpg" - ], + "screenshots": ["/img/showcase/vault-k8s.jpg"], "submittableId": "40715473" }, { @@ -3134,14 +2421,10 @@ "description": "Allows you to seamlessly launch your file storage smart contracts on ICP and interact with them via a file explorer in the browser.", "website": "https://h3cjw-syaaa-aaaam-qbbia-cai.ic0.app/", "logo": "/img/showcase/asset-app_logo.png", - "screenshots": [ - "/img/showcase/asset-app.jpg" - ], + "screenshots": ["/img/showcase/asset-app.jpg"], "id": "ubin", "oneLiner": "Allows you to seamlessly launch your file storage smart contracts on ICP and interact with them via a file explorer in the browser.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true }, { @@ -3149,10 +2432,7 @@ "name": "Outrank", "oneLiner": "Working group with a vision to develop correct rarity metrics for all types of NFTs", "website": "https://www.outrank.io", - "tags": [ - "NFT", - "Tools / Infrastructure" - ], + "tags": ["NFT", "Tools / Infrastructure"], "description": "Open-source code, onchain rarity calculator, and empirical research to allow users to better understand NFT rarity", "logo": "/img/showcase/Outrank_logo.jpg", "usesInternetIdentity": false, @@ -3167,9 +2447,7 @@ "website": "https://github.com/blueberryxtech/ic-mind-body-canister", "oneLiner": "tooling for uploading and accessing mind and body data from a firebase API onto ICP canister, blueberry data as a reference example", "logo": "/img/showcase/ic-mind-body-canister.png", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "POC of a decentralized mind and body data management tooling that leverages Internet Computer (IC) technology. This POC provides methods and interface to submit HTTP Outcall requests to a proxy API that interfaces with a Firebase FIrestore database. It provides an example front end react application that interacts with a motoko backend.", "usesInternetIdentity": true, "github": "https://github.com/blueberryxtech/ic-mind-body-canister", @@ -3182,10 +2460,7 @@ "website": "https://icgpt.icpp.world/", "description": "A llama2 LLM, trained on the tiny Stories dataset is running in a canister. You can interact with it via a ChatGPT style frontend, served from an IC canister. You provide the start of a story as the prompt, and the LLM will generate a tiny story.", "stats": "15M parameter llama2", - "tags": [ - "Tools / Infrastructure", - "AI" - ], + "tags": ["Tools / Infrastructure", "AI"], "logo": "/img/showcase/icpp-logo.dracula-cyan.112x112.png", "usesInternetIdentity": true, "github": "https://github.com/icppWorld/icgpt", @@ -3202,9 +2477,7 @@ "id": "ping", "oneLiner": "Stay updated on ICP dapps with Ping!", "stats": "5 and counting!", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/QuezarHQ/pingICP", "twitter": "https://twitter.com/quezarHQ", @@ -3215,18 +2488,13 @@ "description": "Alphaday is a powerful crypto workflow aggregator that pulls in news, onchain data, social media, web3 services and much more into one customizable UI.", "website": "https://app.alphaday.com/b/dfinity/", "logo": "/img/showcase/Alphaday_logo.png", - "screenshots": [ - "/img/showcase/Alphaday_screenshot.png" - ], + "screenshots": ["/img/showcase/Alphaday_screenshot.png"], "video": "/img/showcase/Alphaday_video.mp4", "display": "Normal", "id": "alphaday", "oneLiner": "The one tool you need to stay up to date and with crypto.", "stats": "15,000+ Active Users", - "tags": [ - "SocialFi", - "Tools / Infrastructure" - ], + "tags": ["SocialFi", "Tools / Infrastructure"], "usesInternetIdentity": false, "github": "https://github.com/AlphadayHQ ", "twitter": "https://twitter.com/AlphadayHQ ", @@ -3239,19 +2507,13 @@ "description": "Advancing Web3 literacy and diversity with a streamlined data pipeline, integrating robust databases, interactive visualizations, and accessible open-source tools.", "website": "https://sunshineluyao.github.io/icp-nns/", "logo": "/img/showcase/Metaversity_logo.webp", - "screenshots": [ - "/img/showcase/Metaversity_screenshot.webp" - ], + "screenshots": ["/img/showcase/Metaversity_screenshot.webp"], "video": "", "display": "Normal", "id": "Metaversity", "oneLiner": "Boosting Web3 Skills & Inclusion with Clear Data & Visuals", "stats": "Web3 for All", - "tags": [ - "AI", - "Tools / Infrastructure", - "DAO" - ], + "tags": ["AI", "Tools / Infrastructure", "DAO"], "usesInternetIdentity": false, "github": "https://github.com/sunshineluyao/icp-nns", "twitter": "https://twitter.com/sunshineluyao", @@ -3263,18 +2525,13 @@ "description": "Datanome is a decentralized data platform aimed at simplifying the buying, selling, and working with data. It is essentially a decentralized version of Snowflake with a simplified version of Deepnote on top.", "website": "https://app.datanome.com", "logo": "/img/showcase/datanome-logo.png", - "screenshots": [ - "/img/showcase/datanome-screenshot.png" - ], + "screenshots": ["/img/showcase/datanome-screenshot.png"], "video": "", "display": "Normal", "id": "datanome", "oneLiner": "Decentralized data marketplace", "stats": "Alpha phase", - "tags": [ - "NFT", - "DeFi" - ], + "tags": ["NFT", "DeFi"], "usesInternetIdentity": false, "github": "https://github.com/datanomeproject", "twitter": "https://twitter.com/datanomeproject", @@ -3287,19 +2544,13 @@ "description": "An easy-to-use solution for community leaders and members to perform holder verification of NFTs and tokens on Discord.", "website": "https://github.com/glue-org", "logo": "/img/showcase/glue_logo.webp", - "screenshots": [ - "/img/showcase/glue_screenshot.webp" - ], + "screenshots": ["/img/showcase/glue_screenshot.webp"], "video": "/img/showcase/glue_video.mp4", "display": "Normal", "id": "glue", "oneLiner": "Holder verification for tokens and NFTs for discord.", "stats": "9000+ users", - "tags": [ - "NFT", - "Tools / Infrastructure", - "DAO" - ], + "tags": ["NFT", "Tools / Infrastructure", "DAO"], "usesInternetIdentity": false, "github": "https://github.com/glue-org", "twitter": "https://twitter.com/glue_org", @@ -3316,11 +2567,7 @@ "id": "ICSoccerWorld", "oneLiner": "Physics Based Soccer Simulation.", "stats": "Community Dev Demo", - "tags": [ - "NFT", - "Metaverse", - "Games" - ], + "tags": ["NFT", "Metaverse", "Games"], "usesInternetIdentity": false, "github": "https://github.com/ktimam/ICSimpleSoccer", "twitter": "https://twitter.com/ICSoccerWorld", @@ -3333,16 +2580,12 @@ "description": "Transforming EV Charging Access with a Community-Driven, Blockchain-Enabled Platform", "website": "https://onzmk-taaaa-aaaal-acw4a-cai.icp0.io/", "logo": "/img/showcase/Mapz_logo.png", - "screenshots": [ - "/img/showcase/Mapz_screenshot.png" - ], + "screenshots": ["/img/showcase/Mapz_screenshot.png"], "display": "Normal", "id": "mapz", "oneLiner": "Airbnb for EV charging powered by Blockchain", "stats": "3000+ users", - "tags": [ - "NFT" - ], + "tags": ["NFT"], "usesInternetIdentity": false, "github": "https://github.com/nbelthan/Mapz-navigator", "twitter": "https://twitter.com/Mapzlive", @@ -3354,10 +2597,7 @@ "name": "IcpKit", "oneLiner": "A Swift package for interacting with the IC on iOS and MacOS", "website": "https://github.com/kosta-bity/IcpKit", - "tags": [ - "Wallet", - "Tools / Infrastructure" - ], + "tags": ["Wallet", "Tools / Infrastructure"], "description": "A comprehensive iOS package for writing mobile applications that interact with the Internet Computer Protocol (ICP), written in Swift. IcpKit aims at facilitating the interaction between iOS apps and the ICP blockchain.", "stats": "1 iOS app", "logo": "/img/showcase/icpkit_logo.png", @@ -3372,16 +2612,12 @@ "description": "Provably fair dice rolling game as a testament that randomness can be obtained onchain", "website": "https://icdragon.xyz/", "logo": "/img/showcase/icdragon_logo.png", - "screenshots": [ - "/img/showcase/icdragon_screenshot.png" - ], + "screenshots": ["/img/showcase/icdragon_screenshot.png"], "display": "Normal", "id": "dragon-eyes", "oneLiner": "Provably fair and fun dice rolling game with a quirk", "stats": "1500+ transactions", - "tags": [ - "Games" - ], + "tags": ["Games"], "usesInternetIdentity": false, "github": "https://github.com/icdragoneyes/dragon_canister", "twitter": "https://twitter.com/icdragoneyes", @@ -3393,10 +2629,7 @@ "name": "{r}elinkd", "oneLiner": "Digital identity + scores protocol and dapp", "website": "https://relinkd.xyz/", - "tags": [ - "Tools / Infrastructure", - "SocialFi" - ], + "tags": ["Tools / Infrastructure", "SocialFi"], "description": "Digital identity + scores protocol and dapp. We're building a decentralized identity protocol, aggregating onchain and off-chain credentials into the scores for creating trustworthy self-sovereign identity and personal brand profiles.", "stats": "1000 users", "logo": "/img/showcase/relinkdxyz.png", @@ -3409,19 +2642,13 @@ "name": "ic_siwe (Sign-In with Ethereum)", "oneLiner": "Use your Ethereum wallet to sign in to the Internet Computer!", "website": "https://github.com/kristoferlund/ic-siwe", - "tags": [ - "Tools / Infrastructure", - "Ethereum", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Ethereum", "Chain Fusion"], "description": "Rust support library and canister to enable Ethereum users to easily sign in to the Internet Computer. ic_siwe enhances the interoperability between Ethereum and the Internet Computer platform, enabling developers to build applications that leverage the strengths of both platforms.", "stats": "", "logo": "/img/showcase/ic_siwe_logo.png", "usesInternetIdentity": false, "github": "https://github.com/kristoferlund/ic-siwe", - "screenshots": [ - "/img/showcase/ic_siwe_screenshot.png" - ], + "screenshots": ["/img/showcase/ic_siwe_screenshot.png"], "submittableId": "44265779" }, { @@ -3429,18 +2656,13 @@ "description": "A decentralized synergy of Fiver and Udemy providing a verifiable and trust system for the Web3 GIG Economy built on ICP.", "website": "https://eakazi.africa", "logo": "/img/showcase/ea-kazi_logo.webp", - "screenshots": [ - "/img/showcase/ea-kazi_screenshot.webp" - ], + "screenshots": ["/img/showcase/ea-kazi_screenshot.webp"], "video": "/img/showcase/ea-kazi_video.mp4", "display": "Normal", "id": "ea-kazi", "oneLiner": "Elevating freelancing with trust and verifiability", "stats": "4000", - "tags": [ - "SocialFi", - "NFT" - ], + "tags": ["SocialFi", "NFT"], "usesInternetIdentity": true, "github": "https://github.com/vinayakkalra/eakazi-jobs-icp, https://github.com/vinayakkalra/eakazi-backend", "twitter": "https://twitter.com/eakazijobs", @@ -3456,9 +2678,7 @@ "display": "Normal", "id": "virtuaseal", "oneLiner": "An application that will allow users to submit information to and sign documents leveraging a smart contract on the blockchain.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/KovachTechnologies/ICP-VirtuaSeal/", "twitter": "https://twitter.com/kovachtech", @@ -3472,11 +2692,7 @@ "display": "Normal", "id": "Alexandria", "oneLiner": "Migrating all the World's Books to NFT-form for use in domain-specific AI", - "tags": [ - "Tools / Infrastructure", - "SocialFi", - "AI" - ], + "tags": ["Tools / Infrastructure", "SocialFi", "AI"], "usesInternetIdentity": true, "github": "https://github.com/AlexandriaDAO/", "twitter": "https://x.com/alexandria_lbry", @@ -3490,10 +2706,7 @@ "display": "Normal", "id": "ArcMind", "oneLiner": "A LLM-powered autonomous agent running that uses Chain of thoughts for reasoning, taking actions and completing goals.", - "tags": [ - "Tools / Infrastructure", - "AI" - ], + "tags": ["Tools / Infrastructure", "AI"], "usesInternetIdentity": false, "github": "https://github.com/arcmindai/arcmindai", "twitter": "https://twitter.com/arcmindai", @@ -3507,10 +2720,7 @@ "display": "Normal", "id": "DevinciAI", "oneLiner": "Browser-based personalized AI assistant that redefines the paradigm of digital privacy and trust.", - "tags": [ - "Tools / Infrastructure", - "AI" - ], + "tags": ["Tools / Infrastructure", "AI"], "usesInternetIdentity": false, "github": "https://github.com/patnorris/DecentralizedAIonIC" }, @@ -3522,10 +2732,7 @@ "display": "Normal", "id": "Accelar", "oneLiner": "A unified product development infrastructure that allows for efficient development, launching, and management of web3 features including LLMs on ICP.", - "tags": [ - "Tools / Infrastructure", - "AI" - ], + "tags": ["Tools / Infrastructure", "AI"], "usesInternetIdentity": true, "github": "https://github.com/Accelar-labs", "twitter": "https://twitter.com/accelarlabs", @@ -3539,10 +2746,7 @@ "display": "Normal", "id": "icmnist", "oneLiner": "IC-Mnist provides a frontend for drawing a digit and a backend that performs an inference using a pretrained MNIST model to predict the drawn digit.", - "tags": [ - "Tools / Infrastructure", - "AI" - ], + "tags": ["Tools / Infrastructure", "AI"], "usesInternetIdentity": false, "github": "https://github.com/smallstepman/ic-mnist" }, @@ -3554,11 +2758,7 @@ "display": "Normal", "id": "elnaai", "oneLiner": "ELNA.ai is the world's firsrt fully onchain decentralized GenAI Companion.", - "tags": [ - "Tools / Infrastructure", - "AI", - "DAO" - ], + "tags": ["Tools / Infrastructure", "AI", "DAO"], "usesInternetIdentity": false, "github": "https://github.com/elna-ai", "twitter": "https://twitter.com/elna_live", @@ -3569,14 +2769,7 @@ "name": "VaultBet", "oneLiner": "Redefining online betting on the Internet Computer.", "website": "https://vault-bet.com", - "tags": [ - "Games", - "DeFi", - "Bitcoin", - "Ethereum", - "NFT", - "Chainfusion" - ], + "tags": ["Games", "DeFi", "Bitcoin", "Ethereum", "NFT", "Chain Fusion"], "twitter": "https://twitter.com/VaultBet", "discord": "https://discord.gg/qmr92dup3J", "description": "VaultBet is redefining online betting on the Internet Computer. Hosted completely onchain and built on the IC. Whether it's sports, lottery or arcade - users can experience transparency, security, and community-driven gambling like never before.", @@ -3590,9 +2783,7 @@ "name": "ICP Governor", "oneLiner": "ICP Governor is an application used to manage a single DAO: create proposals, vote, timelock and execute them.", "website": "https://b4umt-saaaa-aaaak-afnpa-cai.icp0.io/", - "tags": [ - "DAO" - ], + "tags": ["DAO"], "github": "https://github.com/redsteep/dfinity-icp-governor", "description": "ICP Governor is an application used to manage a single DAO: create proposals, vote, timelock and execute them.", "usesInternetIdentity": true, @@ -3605,9 +2796,7 @@ "name": "Formyfi", "oneLiner": "Decentralized & fully onchain forms.", "website": "https://formyfi.io", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "github": "https://github.com/Talentum-id/formify", "description": "Decentralized & fully onchain forms. Toolset for conducting surveys in Web3, ensuring security and completeness of data.", "usesInternetIdentity": true, @@ -3620,12 +2809,7 @@ "name": "Blendsafe", "oneLiner": "A MultiSignature wallet and omnichain module designed for cross-chain message signing, suitable for multiple blockchain ecosystems.", "website": "https://blendsafe.com/", - "tags": [ - "Tools / Infrastructure", - "Wallet", - "Ethereum", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Wallet", "Ethereum", "Chain Fusion"], "github": "https://github.com/deep-ink-ventures/blend-safe", "description": "A MultiSignature wallet and omnichain module designed for cross-chain message signing, suitable for multiple blockchain ecosystems.", "usesInternetIdentity": true, @@ -3638,9 +2822,7 @@ "name": "PADO", "oneLiner": "Decentralized computation network based on zkFHE", "website": "https://bupby-pqaaa-aaaam-abykq-cai.icp0.io/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "github": "https://github.com/pado-labs/pado-icp", "twitter": "https://twitter.com/padolabs", "discord": "https://discord.com/invite/FQZFGGq7zv", @@ -3656,10 +2838,7 @@ "name": "OpenFPL", "oneLiner": "Decentralised Fantasy Football.", "website": "https://openfpl.xyz/", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "github": "https://github.com/jamesbeadle/OpenFPL", "twitter": "https://twitter.com/OpenFPL_DAO", "description": "Decentralised Fantasy Football", @@ -3672,10 +2851,7 @@ "name": "ICGhost", "oneLiner": "The First Decentralized Meme Coin on IC", "website": "https://yadjb-mqaaa-aaaan-qaqlq-cai.icp0.io/", - "tags": [ - "DeFi", - "DAO" - ], + "tags": ["DeFi", "DAO"], "description": "The First Decentralized Meme Coin on IC", "usesInternetIdentity": false, "display": "Normal", @@ -3686,10 +2862,7 @@ "name": "sneed", "oneLiner": "The Blank Canvas DAO on the Internet Computer.", "website": "https://icsneed.com/?wp=sneed", - "tags": [ - "DeFi", - "DAO" - ], + "tags": ["DeFi", "DAO"], "description": "The Blank Canvas DAO on the Internet Computer.", "usesInternetIdentity": false, "display": "Normal", @@ -3701,10 +2874,7 @@ "oneLiner": "The retro flavored utility meme.", "website": "https://windoge98.com", "twitter": "https://x.com/windoge_98", - "tags": [ - "DeFi", - "DAO" - ], + "tags": ["DeFi", "DAO"], "description": "Windoge98 is a retro flavored utility meme. A nostalgic portal to the Internet Computer.", "usesInternetIdentity": false, "display": "Normal", @@ -3714,11 +2884,7 @@ "id": "gitcoin-passport-client", "name": "Gitcoin Passport Client", "oneLiner": "A UI that securely retrieves anti-Sybil scoring data from Gitcoin Passport and stores it in a DB.", - "tags": [ - "Tools / Infrastructure", - "Ethereum", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Ethereum", "Chain Fusion"], "website": "https://internet-computer.vporton.name/gitcoin-passport-client/", "github": "https://github.com/vporton/passport-client-dfinity", "description": "A UI that securely retrieves anti-Sybil scoring data from Gitcoin Passport and stores it in a DB.", @@ -3734,9 +2900,7 @@ "github": "https://github.com/Game-Bloc/Gamebloc-ICP", "twitter": "https://twitter.com/game_bloc", "discord": "https://discord.gg/wgRuenwTEK", - "tags": [ - "Games" - ], + "tags": ["Games"], "description": "A decentralised platform for hosting game tournaments which can either be crowdfunded or prepaid.", "usesInternetIdentity": true, "display": "Normal", @@ -3750,9 +2914,7 @@ "website": "https://allkinds.xyz/", "github": "https://github.com/AllKinds/AllkindsICP", "twitter": "https://twitter.com/Allkindsxyz", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "A web3 social network where people find more meaningful connections.", "usesInternetIdentity": true, "display": "Normal", @@ -3764,13 +2926,7 @@ "name": "Dmail Network", "oneLiner": "AI-powered decentralized messaging infrastructure.", "website": "https://dmail.ai", - "tags": [ - "NFT", - "SocialFi", - "AI", - "Enterprise", - "Tools / Infrastructure" - ], + "tags": ["NFT", "SocialFi", "AI", "Enterprise", "Tools / Infrastructure"], "twitter": "https://twitter.com/Dmailofficial", "discord": "https://discord.gg/dmailofficial", "description": "Dmail Network is an AI-powered decentralized communication infrastructure built to provide encrypted emails, unified notifications, and targeted marketing across multiple chains and dApps for users, developers, marketers and influencers", @@ -3784,11 +2940,7 @@ "name": "Datapond", "oneLiner": "A hub for exposing and tracing data used by AI to generate results.", "website": "https://recheck.io/", - "tags": [ - "Tools / Infrastructure", - "Enterprise", - "AI" - ], + "tags": ["Tools / Infrastructure", "Enterprise", "AI"], "twitter": "https://twitter.com/recheck_io", "github": "https://github.com/ReCheck-io/icp-datapond-integration", "description": "DataPond is a hub for exposing and tracing data used by AI to generate results. It enables end users and businesses to store files on Internet Computer and to control how they are consumed by AI tools as input for training, reasoning, or producing answers. DataPond is available as an open-source toolbox for developers who want to bridge their decentralized applications with AI transparently and efficiently.", @@ -3802,11 +2954,7 @@ "name": "B4B", "oneLiner": "A Web3 influencer marketing protocol that brings transparency, ownership, escrow, and onchain history from all socials.", "website": "https://b4b.world", - "tags": [ - "Tools / Infrastructure", - "Enterprise", - "SocialFi" - ], + "tags": ["Tools / Infrastructure", "Enterprise", "SocialFi"], "twitter": "https://twitter.com/b4b_world", "description": "B4B.app is a Web3 influencer marketing protocol that brings transparency, ownership, escrow, and onchain history from all socials", "usesInternetIdentity": true, @@ -3819,11 +2967,7 @@ "id": "pochi", "name": "pochi", "oneLiner": "Fully onchain decentralized human resource management software.", - "tags": [ - "Bitcoin", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "DeFi", "Chain Fusion"], "github": "https://github.com/cosmasken/ic-payroll", "description": "Fully onchain decentralized human resource management software.", "usesInternetIdentity": true, @@ -3836,9 +2980,7 @@ "name": "Front Row", "oneLiner": "Decentralised ticketing platform offering fully onchain, dynamic and tradable digital ticketing to event organisers.", "website": "https://xw7l2-viaaa-aaaal-qditq-cai.icp0.io/", - "tags": [ - "NFT" - ], + "tags": ["NFT"], "twitter": "https://twitter.com/FrontRowIC", "description": "Decentralised ticketing platform offering fully onchain, dynamic and tradable digital ticketing to event organisers.", "usesInternetIdentity": false, @@ -3851,9 +2993,7 @@ "name": "Jobgrader", "oneLiner": "Enabling the crowdworking market to train AI and any other micro tasks onchain.", "website": "https://jobgrader.app", - "tags": [ - "AI" - ], + "tags": ["AI"], "twitter": "https://twitter.com/FrontRowIC", "description": "Enabling the crowdworking market to train AI and any other micro tasks onchain.", "usesInternetIdentity": false, @@ -3866,10 +3006,7 @@ "name": "RentSpace", "oneLiner": "A crypto-friendly property rental platform.", "website": "https://rentb.space/", - "tags": [ - "DeFi", - "SocialFi" - ], + "tags": ["DeFi", "SocialFi"], "twitter": "https://twitter.com/RentSpaceco", "github": "https://github.com/ICP-hub/RentSpace-ICP", "discord": "https://discord.gg/hCFmTWFx85", @@ -3884,11 +3021,7 @@ "name": "MyOrdinals.Loan", "oneLiner": "Peer-to-peer Bitcoin lending using ckBTC. Users borrow or lend ckBTC, securing transactions with unique Ordinal Inscriptions (Ordinals) as collateral.", "website": "https://myordinals.loan/", - "tags": [ - "Bitcoin", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "DeFi", "Chain Fusion"], "twitter": "https://twitter.com/MyOrdinalsLoan", "description": "Peer-to-peer Bitcoin lending using ckBTC. Users borrow or lend ckBTC, securing transactions with unique Ordinal Inscriptions (Ordinals) as collateral.", "usesInternetIdentity": false, @@ -3900,12 +3033,7 @@ "id": "icto", "name": "ICTO", "oneLiner": "ICTO is a one-stop platform automating token operations on the Internet Computer.", - "tags": [ - "Tools / Infrastructure", - "NFT", - "DAO", - "DeFi" - ], + "tags": ["Tools / Infrastructure", "NFT", "DAO", "DeFi"], "description": "ICTO is an automated token management platform that simplifies vesting schedules, recurring payroll distributions, token lock and tokenized crowdfunding for projects building on the Internet Computer. It provides modular smart contracts, allowing any project to transparently handle token operations without technical friction.", "usesInternetIdentity": true, "website": "https://icto.app", @@ -3913,9 +3041,7 @@ "twitter": "https://twitter.com/icto_app", "display": "Large", "logo": "/img/showcase/icto_logo.png", - "screenshots": [ - "/img/showcase/icto_screenshot_0.png" - ], + "screenshots": ["/img/showcase/icto_screenshot_0.png"], "submittableId": "45095733" }, { @@ -3927,7 +3053,7 @@ "Bitcoin", "Ethereum", "DeFi", - "Chainfusion" + "Chain Fusion" ], "description": "First-ever infrastructure layer that allows transferring and swapping of tokens between ICP and blockchains such as Bitcoin, Ethereum, and Solana.", "usesInternetIdentity": true, @@ -3941,9 +3067,7 @@ "id": "gotcha", "name": "Gotcha Captcha", "oneLiner": "CAPTCHAs to distinguish humans and bots on the Internet in the AI era.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "CAPTCHAs to distinguish humans and bots on the Internet in the AI era.", "usesInternetIdentity": false, "website": "https://www.gotcha.land/", @@ -3956,10 +3080,7 @@ "id": "optigames", "name": "OptiGames", "oneLiner": "Flexible framework for fully onchain multiplayer turn-based games. Bulldog Blast is a semi-realtime multiplayer arcade combat game.", - "tags": [ - "Tools / Infrastructure", - "Games" - ], + "tags": ["Tools / Infrastructure", "Games"], "description": "Flexible framework for fully onchain multiplayer turn-based games. Bulldog Blast is a semi-realtime multiplayer arcade combat game.", "usesInternetIdentity": true, "website": "https://tpxio-7yaaa-aaaak-qdbaa-cai.icp0.io/", @@ -3972,9 +3093,7 @@ "id": "zokshpay", "name": "Zoksh Pay", "oneLiner": "A non-custodial payment solution that enables businesses to accept over 1000 currencies across 17 blockchains.", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "A non-custodial payment solution that enables businesses to accept over 1000 currencies across 17 blockchains.", "usesInternetIdentity": false, "website": "https://zoksh.com/", @@ -3988,9 +3107,7 @@ "id": "secureguardescrow", "name": "Secure Guard Escrow", "oneLiner": "A solution in making online transactions safe and sound.", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "A solution in making online transactions safe and sound.", "usesInternetIdentity": false, "website": "https://cojoz-raaaa-aaaao-a3b7q-cai.icp0.io/", @@ -4003,9 +3120,7 @@ "id": "icapproject", "name": "Internet Computer Analytics Platform", "oneLiner": "A framework for users to query and analyze data from various sources in the ICP ecosystem.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "A framework for users to query and analyze data from various sources in the ICP ecosystem.", "usesInternetIdentity": false, "github": "https://github.com/mobr-ai/icap", @@ -4017,12 +3132,7 @@ "id": "swimmingpool", "name": "Swimming Pool", "oneLiner": "Fully onchain permissionless stablecoin protocol, collateralizing your BTC, ETH and other crypto assets.", - "tags": [ - "Bitcoin", - "Ethereum", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "Ethereum", "DeFi", "Chain Fusion"], "description": "Fully onchain permissionless stablecoin protocol, collateralizing your BTC, ETH and other crypto assets.", "usesInternetIdentity": false, "website": "https://swmpool.xyz", @@ -4035,9 +3145,7 @@ "id": "icpnftcreater", "name": "ICP NFT Creater", "oneLiner": "Shopify app designed to streamline the process of creating and launching NFT collections, product certificates, and more on ICP.", - "tags": [ - "NFT" - ], + "tags": ["NFT"], "description": "Shopify app designed to streamline the process of creating and launching NFT collections, product certificates, and more on ICP.", "usesInternetIdentity": false, "github": "https://github.com/tuminfei/ic_nft_creater", @@ -4049,9 +3157,7 @@ "id": "codegov", "name": "codegov", "oneLiner": "Advancing decentralization of ICP through NNS Replica Version Management proposal reviews, informed, independent voting, and NNS tooling.", - "tags": [ - "DAO" - ], + "tags": ["DAO"], "description": "Advancing decentralization of ICP through NNS Replica Version Management proposal reviews, informed, independent voting, and NNS tooling.", "usesInternetIdentity": false, "website": "https://www.codegov.org/", @@ -4064,10 +3170,7 @@ "id": "deaichat", "name": "DeAI Chat", "oneLiner": "A chat and API interface allowing communication with an AI model.", - "tags": [ - "AI", - "SocialFi" - ], + "tags": ["AI", "SocialFi"], "description": "A chat and API interface allowing communication with an AI model.", "usesInternetIdentity": false, "website": "https://deai.chat/", @@ -4079,9 +3182,7 @@ "id": "onicai", "name": "Onicai", "oneLiner": "A B2B Platform for configuring Generative AI white label solutions.", - "tags": [ - "AI" - ], + "tags": ["AI"], "description": "A B2B Platform for configuring Generative AI white label solutions.", "usesInternetIdentity": false, "website": "https://onicai.com/", @@ -4093,10 +3194,7 @@ "id": "spotlabs", "name": "Spotlabs", "oneLiner": "A DeAI app for business tooling and infrastructure.", - "tags": [ - "AI", - "Tools / Infrastructure" - ], + "tags": ["AI", "Tools / Infrastructure"], "description": "A DeAI app for business tooling and infrastructure.", "usesInternetIdentity": true, "github": "https://github.com/SpotLabsAI/SpotLabs/", @@ -4107,10 +3205,7 @@ "id": "vfans", "name": "VFans", "oneLiner": "A decentralized content platform for publishing video/articles and subscribing through mobile payments.", - "tags": [ - "SocialFi", - "NFT" - ], + "tags": ["SocialFi", "NFT"], "description": "A decentralized content platform for publishing video/articles and subscribing through mobile payments.", "usesInternetIdentity": true, "website": "https://www.vfans.org/", @@ -4123,12 +3218,7 @@ "id": "omnitynetwork", "name": "Omnity Network", "oneLiner": "1st 100% trustless omnichain interoperability protocol that connects Bitcoin, Ethereum, Appchains, L1s/L2s/L3s within Omnity Network.", - "tags": [ - "Bitcoin", - "Ethereum", - "Tools / Infrastructure", - "Chainfusion" - ], + "tags": ["Bitcoin", "Ethereum", "Tools / Infrastructure", "Chain Fusion"], "description": "1st 100% trustless omnichain interoperability protocol that connects Bitcoin, Ethereum, Appchains, L1s/L2s/L3s within Omnity Network.", "usesInternetIdentity": false, "website": "https://www.omnity.network/", @@ -4141,18 +3231,12 @@ "description": "ICPanda DAO is dedicated to building the Panda meme brand across the Internet Computer's decentralized ecosystem, enhancing the connection between pandas and humans. Our focus extends beyond the animals themselves, embracing all valuable and praiseworthy ideas, positioning the Panda meme as a symbol of cherished concepts globally.", "website": "https://panda.fans/", "logo": "/img/showcase/icpanda-dao_logo.webp", - "screenshots": [ - "/img/showcase/icpanda-dao_screenshot.webp" - ], + "screenshots": ["/img/showcase/icpanda-dao_screenshot.webp"], "display": "Normal", "id": "icpanda-dao", "oneLiner": "A decentralized Panda meme brand built on the Internet Computer.", "stats": "50,000+ users", - "tags": [ - "DAO", - "SocialFi", - "NFT" - ], + "tags": ["DAO", "SocialFi", "NFT"], "usesInternetIdentity": true, "github": "https://github.com/ldclabs/ic-panda", "twitter": "https://twitter.com/ICPandaDAO" @@ -4161,9 +3245,7 @@ "id": "odoc", "name": "odoc", "oneLiner": "Tasks managment, documentations, and smart contracts for online workers and freelancers.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Odoc is a place where you can hire and work. It is empowering freelancers with transparent and liberating smart contracts on the blockchain.", "usesInternetIdentity": true, "website": "https://lwdq3-vqaaa-aaaal-acwda-cai.icp0.io/", @@ -4176,9 +3258,7 @@ "id": "zkcross-icp-bridge", "name": "ZkCross", "oneLiner": "One-click limitless liquidity across blockchains.", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "One-click limitless liquidity across blockchains.", "usesInternetIdentity": true, "website": "https://zkcross.network/", @@ -4191,9 +3271,7 @@ "id": "icp-coffee-app", "name": "Plural Finance", "oneLiner": "Enabling coffee farmers to submit data reports on their yields and processes for crop insurance purposes.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Enabling coffee farmers to submit data reports on their yields and processes for crop insurance purposes.", "usesInternetIdentity": true, "website": "https://plural.fi/", @@ -4207,9 +3285,7 @@ "id": "icpexchange", "name": "ICPEx", "oneLiner": "Decentralized exchange built entirely on the chain based on the ICP.", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "Decentralized exchange built entirely on the chain based on the ICP.", "usesInternetIdentity": true, "website": "https://icpex.org/", @@ -4224,10 +3300,7 @@ "id": "orderswaplayer2", "name": "Orderswap Layer2", "oneLiner": "A Layer2 built on ICP.", - "tags": [ - "DeFi", - "Tools / Infrastructure" - ], + "tags": ["DeFi", "Tools / Infrastructure"], "description": "A Layer2 built on ICP.", "usesInternetIdentity": true, "github": "https://github.com/deland-labs", @@ -4240,9 +3313,7 @@ "id": "candb", "name": "CanDB", "oneLiner": "Flexible and truly horizontally scalable NoSQL database built for ICP.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "Flexible and truly horizontally scalable NoSQL database built for ICP.", "usesInternetIdentity": false, "website": "https://ykgs2-ziaaa-aaaak-qcfya-cai.icp0.io/", @@ -4254,9 +3325,7 @@ "id": "personal-dao", "name": "Personal DAO", "oneLiner": "A web3 app that functions as a gated DAO, treasury, data storage solution, and more.", - "tags": [ - "DAO" - ], + "tags": ["DAO"], "description": "A web3 app that functions as a gated DAO, treasury, data storage solution, and more.", "usesInternetIdentity": true, "website": "https://fkkq7-siaaa-aaaap-qaaya-cai.ic0.app/", @@ -4269,12 +3338,7 @@ "id": "icp-canister-bridge", "name": "ICP Canister Bridge", "oneLiner": "A bridge powered by ICP that enables seamless swaps between the Lightning Network and EVM-compatible chains.", - "tags": [ - "Bitcoin", - "Ethereum", - "Tools / Infrastructure", - "Chainfusion" - ], + "tags": ["Bitcoin", "Ethereum", "Tools / Infrastructure", "Chain Fusion"], "description": "A bridge powered by ICP that enables seamless swaps between the Lightning Network and EVM-compatible chains.", "usesInternetIdentity": false, "website": "https://vue2j-giaaa-aaaam-ab4bq-cai.icp0.io", @@ -4286,10 +3350,7 @@ "id": "communities-ooo", "name": "Communities.ooo", "oneLiner": "A tool that creates online communities as NFTs owned by the creators.", - "tags": [ - "SocialFi", - "NFT" - ], + "tags": ["SocialFi", "NFT"], "description": "A tool that creates online communities as NFTs owned by the creators", "usesInternetIdentity": false, "website": "https://www.communities.ooo/", @@ -4302,9 +3363,7 @@ "id": "ic-footprint", "name": "IC Footprint", "oneLiner": "A blockchain ESG platform that tracks ICP environmental metrics and provides tooling to reduce the environmental impact of the network.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "A blockchain ESG platform that tracks ICP environmental metrics and provides tooling to reduce the environmental impact of the network.", "usesInternetIdentity": true, "website": "https://owqnd-biaaa-aaaak-qidaq-cai.icp0.io/", @@ -4316,9 +3375,7 @@ "id": "galactic-bridge", "name": "Galactic Bridge", "oneLiner": "A cross-chain bridge that allows users to move between Solana and ICP.", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "A cross-chain bridge that allows users to move between Solana and ICP.", "usesInternetIdentity": false, "website": "https://galactic-bridge-tzbjl.ondigitalocean.app/", @@ -4330,9 +3387,7 @@ "id": "amplify-e2e-platform", "name": "Amplify Platform", "oneLiner": "A platform that enables Twitter (X) accounts to boost post engagement by rewarding interacting users with ICP and select ICRC tokens.", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "A platform that enables Twitter (X) accounts to boost post engagement by rewarding interacting users with ICP and select ICRC tokens.", "usesInternetIdentity": false, "website": "https://amplify-icp.com/", @@ -4344,11 +3399,7 @@ "id": "bitomni", "name": "Bitomni", "oneLiner": "BTCFi-driven omnichain asset management protocol.", - "tags": [ - "Bitcoin", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "DeFi", "Chain Fusion"], "description": "BTCFi-driven omnichain asset management protocol with built-in BTCFi DApps across multiple blockchains.", "usesInternetIdentity": true, "website": "https://bitomni.io", @@ -4360,12 +3411,7 @@ "id": "b3wallet", "name": "B3Wallet", "oneLiner": "A decentralized, multi-chain wallet with unique support for Bitcoin, Ethereum, using Internet Computer's threshold ECDSA.", - "tags": [ - "Tools / Infrastructure", - "Bitcoin", - "Ethereum", - "Chainfusion" - ], + "tags": ["Tools / Infrastructure", "Bitcoin", "Ethereum", "Chain Fusion"], "description": "A decentralized, multi-chain wallet with unique support for Bitcoin, Ethereum, using Internet Computer's threshold ECDSA.", "usesInternetIdentity": true, "website": "https://sehgq-cqaaa-aaaap-ahc4q-cai.icp0.io", @@ -4377,9 +3423,7 @@ "id": "pass", "name": "Pass", "oneLiner": "First blockchain password manager.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "First blockchain password manager.", "usesInternetIdentity": true, "website": "https://www.ic-pass.app/", @@ -4392,9 +3436,7 @@ "id": "hamster", "name": "Hamster", "oneLiner": "One-stop infrastructure, developer toolkit and middleware DevOps service platform", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "description": "One-stop infrastructure, developer toolkit and middleware DevOps service platform", "usesInternetIdentity": true, "website": "https://hamsternet.io/", @@ -4407,16 +3449,12 @@ "description": "MSQ is a MetaMask extension that enables your wallet to work with the Internet Computer (ICP) blockchain. Buy goods, tip for services, donate to charities, and gift coins to your loved ones.", "website": "https://icp.msq.tech", "logo": "/img/showcase/msq-safe-icp-wallet_logo.svg", - "screenshots": [ - "/img/showcase/msq-safe-icp-wallet_screenshot.webp" - ], + "screenshots": ["/img/showcase/msq-safe-icp-wallet_screenshot.webp"], "video": "/img/showcase/msq-safe-icp-wallet_video.mp4", "display": "Normal", "id": "msq-safe-icp-wallet", "oneLiner": "Use the Internet Computer with MetaMask", - "tags": [ - "Wallet" - ], + "tags": ["Wallet"], "usesInternetIdentity": false, "github": "https://github.com/fort-major/msq", "twitter": "https://twitter.com/msqwallet", @@ -4433,9 +3471,7 @@ "display": "Normal", "oneLiner": "A community-owned Web3 application that primarily offers taxi, delivery, and courier services.", "stats": "5000 waitlist signups", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "usesInternetIdentity": true, "twitter": "https://twitter.com/RiideDapp" }, @@ -4447,11 +3483,7 @@ "logo": "/img/showcase/chainkeyx_logo.png", "display": "Normal", "oneLiner": "A crypto neobank that offers fully onchain bitcoin borrowing and lending on ICP.", - "tags": [ - "Bitcoin", - "DeFi", - "Chainfusion" - ], + "tags": ["Bitcoin", "DeFi", "Chain Fusion"], "usesInternetIdentity": true, "twitter": "https://twitter.com/ckexchange", "github": "https://github.com/CKX-dev/CKX_Swap" @@ -4464,9 +3496,7 @@ "logo": "/img/showcase/konecta_logo.png", "display": "Normal", "oneLiner": "A new protocol that gathers notifications and events from all your apps implementing it, and compiles them into a user-specific canister.", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "usesInternetIdentity": true, "twitter": "https://twitter.com/konectA_Dao", "github": "https://github.com/sagcryptoicp/konnectA_canisters" @@ -4479,10 +3509,7 @@ "logo": "/img/showcase/estatedao_logo.png", "display": "Normal", "oneLiner": "A vacation real estate tokenization and rental platform on ICP, enabling users to invest in vacation real estate with investments as low as USD 100.", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "usesInternetIdentity": true, "twitter": "https://twitter.com/estatedao_icp", "github": "https://github.com/Estate-DAO/estate-nft-marketplace" @@ -4495,10 +3522,7 @@ "logo": "/img/showcase/motoko_sns_logo.png", "display": "Normal", "oneLiner": "A community initiative aiming to drive awareness of the Motoko branding.", - "tags": [ - "SocialFi", - "DAO" - ], + "tags": ["SocialFi", "DAO"], "usesInternetIdentity": false }, { @@ -4509,9 +3533,7 @@ "logo": "/img/showcase/motoko_sns_logo.png", "display": "Normal", "oneLiner": "A game where users participate in motorcycle races, develop their riders and improve high-speed tracks.", - "tags": [ - "Games" - ], + "tags": ["Games"], "usesInternetIdentity": false }, { @@ -4519,9 +3541,7 @@ "name": "distrikt", "oneLiner": "Censorship-resistant fully onchain social media platform", "website": "https://distrikt.app", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "twitter": "https://twitter.com/DistriktApp?s=20&t=FIuSJzaUxndtjKLTpwmCEw", "description": "Distrikt is a completely decentralized, community-owned Web3 social media platform. Users of the platform will soon be able to vote on upgrades, and no user data will ever be mined or sold. Create your account, secured by Internet Identity today.", "usesInternetIdentity": true, @@ -4532,19 +3552,14 @@ "display": "Normal", "stats": "110,000+ users", "logo": "/img/showcase/distrikt_logo.webp", - "screenshots": [ - "/img/showcase/distrikt_screenshot.webp" - ] + "screenshots": ["/img/showcase/distrikt_screenshot.webp"] }, { "id": "bipquantum", "name": "bipquantum", "oneLiner": "An AI IP assistant and virtual lawyer that uses ICP to mint IP certificates, including licenses and ownership details.", "website": "https://gdjoy-siaaa-aaaap-qhh2q-cai.icp0.io/", - "tags": [ - "Tools / Infrastructure", - "AI" - ], + "tags": ["Tools / Infrastructure", "AI"], "twitter": "https://twitter.com/BipQuantum", "description": "An AI IP assistant and virtual lawyer that uses ICP to mint IP certificates, including licenses and ownership details.", "usesInternetIdentity": false, @@ -4556,9 +3571,7 @@ "name": "ICPCC DAO LLC", "oneLiner": "A community-owned and fully self-sustaining decentralized conference event series devoted to highlighting the ICP's technology and ecosystem.", "website": "https://osjzm-oaaaa-aaaal-ajcoq-cai.icp0.io/", - "tags": [ - "DAO" - ], + "tags": ["DAO"], "twitter": "https://twitter.com/icp_cc", "description": "A community-owned and fully self-sustaining decentralized conference event series devoted to highlighting the ICP's technology and ecosystem.", "usesInternetIdentity": false, @@ -4570,12 +3583,7 @@ "name": "CLP Finance", "oneLiner": "A liquidity protocol and native stablecoin that allows users to deposit assets, borrow stablecoins at zero interest.", "website": "https://www.clp.finance/", - "tags": [ - "DeFi", - "Bitcoin", - "Ethereum", - "Chainfusion" - ], + "tags": ["DeFi", "Bitcoin", "Ethereum", "Chain Fusion"], "stats": "5,000 accounts", "twitter": "https://twitter.com/CLPFinance721", "description": "A liquidity protocol and native stablecoin that allows users to deposit assets, borrow stablecoins at zero interest.", @@ -4588,10 +3596,7 @@ "name": "SNS Rewards Dashboard by PYOR", "oneLiner": "A data dashboard that displays metrics and charts related to the rewards distributed within the SNS ecosystem.", "website": "https://shrny-laaaa-aaaag-alckq-cai.icp0.io/", - "tags": [ - "Tools / Infrastructure", - "DAO" - ], + "tags": ["Tools / Infrastructure", "DAO"], "twitter": "https://twitter.com/pyorxyz", "description": "A data dashboard that displays metrics and charts related to the rewards distributed within the SNS ecosystem.", "usesInternetIdentity": false, @@ -4603,10 +3608,7 @@ "name": "Replicatr", "oneLiner": "Nostr relay using ICP for inter-relay synchronization.", "website": "https://replicatr.dev/", - "tags": [ - "Tools / Infrastructure", - "SocialFi" - ], + "tags": ["Tools / Infrastructure", "SocialFi"], "twitter": "https://twitter.com/pyorxyz", "github": "https://github.com/Hubmakerlabs/replicatr", "description": "Nostr relay using ICP for inter-relay synchronization.", @@ -4619,9 +3621,7 @@ "name": "Dotmeet", "oneLiner": "A city-based events calendar app helping web3 communities and companies in effectively reaching their target audience within cities.", "website": "https://dotmeet.app/", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "stats": "4,000 users", "twitter": "https://twitter.com/dotmeetapp", "github": "https://github.com/dotmeet/dotmeet-icp", @@ -4635,10 +3635,7 @@ "name": "Syron", "oneLiner": "A USD-pegged stablecoin, overcollateralized with Bitcoin and powered by Chain Fusion.", "website": "https://tyrondao.org", - "tags": [ - "Chainfusion", - "Bitcoin" - ], + "tags": ["Chain Fusion", "Bitcoin"], "twitter": "https://twitter.com/tyrondao_org", "github": "https://github.com/tyrondao/tyron-icp", "description": "A USD-pegged stablecoin, overcollateralized with Bitcoin and powered by Chain Fusion.", @@ -4651,10 +3648,7 @@ "name": "Doxa", "oneLiner": "A multi-stablecoin plartform with the doxa dollar.", "website": "https://i7m4z-gqaaa-aaaak-qddtq-cai.icp0.io/", - "tags": [ - "Chainfusion", - "DeFi" - ], + "tags": ["Chain Fusion", "DeFi"], "twitter": "https://twitter.com/doxa_dollar", "github": "https://github.com/DoxaFoundation/doxa-v3", "description": "A multi-stablecoin plartform with the doxa dollar.", @@ -4667,10 +3661,7 @@ "name": "Tezsign", "oneLiner": "A digital signing platform that offers a seamless signing experience for individuals and enterprises.", "website": "https://www.tezsign.com/", - "tags": [ - "Enterprise", - "Tools / Infrastructure" - ], + "tags": ["Enterprise", "Tools / Infrastructure"], "twitter": "https://twitter.com/TezSign/", "description": "A digital signing platform that offers a seamless signing experience for individuals and enterprises.", "usesInternetIdentity": false, @@ -4682,9 +3673,7 @@ "name": "Brownfi AMM", "oneLiner": "A novel AMM with high capital efficiency and simple UX.", "website": "https://browndex.io/", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "twitter": "https://twitter.com/BrownFidex/", "github": "https://github.com/BrownFi/BrownFi-AMM-ICP", "description": "A novel AMM with high capital efficiency and simple UX.", @@ -4697,10 +3686,7 @@ "name": "Momint", "oneLiner": "Momint enables fractional trade of renewable energy projects through its Asset Marketplace.", "website": "https://www.momint.io", - "tags": [ - "DeFi", - "NFT" - ], + "tags": ["DeFi", "NFT"], "stats": "53,000 users", "twitter": "https://twitter.com/Momint_official", "description": "Momint enables fractional trade of renewable energy projects through its Asset Marketplace.", @@ -4713,9 +3699,7 @@ "name": "ICP Subaccount Indexer (ICSI) by Jagad", "oneLiner": "A tool designed to manage and track ICP sub-accounts on the Internet Computer.", "website": "https://jagad.to/", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "twitter": "https://twitter.com/Jagad_Official", "github": "https://github.com/garudaidr/icp-subaccount-indexer", "description": "A tool designed to manage and track ICP sub-accounts on the Internet Computer.", @@ -4727,10 +3711,7 @@ "id": "ic-side-services", "name": "IC Side Services", "oneLiner": "Enabling DAOs to deploy the services they depend upon and that are currently run on AWS.", - "tags": [ - "Tools / Infrastructure", - "DAO" - ], + "tags": ["Tools / Infrastructure", "DAO"], "github": "https://github.com/omnia-network/ic_akash", "description": "Enabling DAOs to deploy the services they depend upon and that are currently run on AWS.", "usesInternetIdentity": false, @@ -4741,9 +3722,7 @@ "id": "raters", "name": "Raters", "oneLiner": "A SocialFi blockchain-powered platform designed for movie lovers, offering a space to share reviews, ratings, and discover films.", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "website": "https://ratersapp.com/", "twitter": "https://twitter.com/raters_app", "description": "A SocialFi blockchain-powered platform designed for movie lovers, offering a space to share reviews, ratings, and discover films.", @@ -4755,11 +3734,7 @@ "id": "incheon-universe", "name": "Incheon Universe", "oneLiner": "Empowering citizens with NFT-based civic rights and DAO-driven participation, collaboration, and rewards for urban development.", - "tags": [ - "SocialFi", - "DAO", - "NFT" - ], + "tags": ["SocialFi", "DAO", "NFT"], "website": "https://incheon.world/#/main", "twitter": "https://twitter.com//incheon_heroes", "description": "Empowering citizens with NFT-based civic rights and DAO-driven participation, collaboration, and rewards for urban development.", @@ -4771,9 +3746,7 @@ "id": "idempotent-proxy", "name": "Idempotent Proxy", "oneLiner": "Reverse proxy server with build-in idempotency support written in Rust & Cloudflare Worker.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "github": "https://github.com/ldclabs/idempotent-proxy", "twitter": "https://twitter.com//icpandadao", "description": "Reverse proxy server with build-in idempotency support written in Rust & Cloudflare Worker.", @@ -4785,10 +3758,7 @@ "id": "panorama-block", "name": "Panorama Block", "oneLiner": "AI-powered cross-chain analytics. Offering real-time blockchain data, starting with Bitcoin.", - "tags": [ - "Tools / Infrastructure", - "Bitcoin" - ], + "tags": ["Tools / Infrastructure", "Bitcoin"], "website": "https://panoramablock.com", "github": "https://github.com/Panorama-Block/panorama-block-icp", "twitter": "https://twitter.com/panoramablock", @@ -4801,9 +3771,7 @@ "id": "dappradar", "name": "Dapp Radar", "oneLiner": "A dapp discovery portal for blockchain users, provides insights for investors and analysts, and educates visitors about vital blockchain networks.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "website": "https://dappradar.com/", "twitter": "https://twitter.com/dappradar", "description": "A dapp discovery portal for blockchain users, provides insights for investors and analysts, and educates visitors about vital blockchain networks.", @@ -4815,10 +3783,7 @@ "id": "motodex", "name": "Motodex", "oneLiner": "A hyper-casual, motorcycle race game where players develop their riders and improve high-speed tracks.", - "tags": [ - "Games", - "NFT" - ], + "tags": ["Games", "NFT"], "website": "https://motodex.dexstudios.games/", "twitter": "https://twitter.com/openbisea", "description": "A hyper-casual, motorcycle race game where players develop their riders and improve high-speed tracks.", @@ -4830,9 +3795,7 @@ "id": "fomowell", "name": "Fomowell", "oneLiner": "The fairest Web3 project launch platform.", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "stats": "300 users, daily transactions of $3k", "website": "https://fomowell.com/", "twitter": "https://twitter.com/fomowell", @@ -4845,9 +3808,7 @@ "id": "metaviz", "name": "Metaviz", "oneLiner": "A visual project collaboration workspace.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "website": "https://www.metaviz.net/", "github": "https://github.com/dariuszdawidowski/metaviz-server-juno", "twitter": "https://twitter.com/metavizofficial", @@ -4860,9 +3821,7 @@ "id": "alpcafi", "name": "Alpcafi", "oneLiner": "Tools that bring ICP to everyone including AlpacaFi (CoinMarketCap for ICP tokens) and PacaBot (Telegram Trading Bot).", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "website": "https://alpacafi.xyz", "description": "Tools that bring ICP to everyone including AlpacaFi (CoinMarketCap for ICP tokens) and PacaBot (Telegram Trading Bot).", "usesInternetIdentity": false, @@ -4873,10 +3832,7 @@ "id": "waterneuron", "name": "Water Neuron", "oneLiner": "A liquid staking protocol designed for ICP. Staking ICP becomes straightforward and efficient.", - "tags": [ - "DeFi", - "DAO" - ], + "tags": ["DeFi", "DAO"], "website": "https://waterneuron.fi/stake/", "description": "A liquid staking protocol designed for ICP. Staking ICP becomes straightforward and efficient.", "usesInternetIdentity": true, @@ -4887,10 +3843,7 @@ "id": "cyclestransferstation", "name": "CYCLES-TRANSFER-STATION", "oneLiner": "An onchain order-book market, where the market tokens trade against the stable CYCLES. Mint, hold, transfer, and trade the CYCLES at the CTS market.", - "tags": [ - "DeFi", - "DAO" - ], + "tags": ["DeFi", "DAO"], "website": "https://cycles-transfer-station.com", "description": "The CYCLES-TRANSFER-STATION is an onchain order-book market trade platform for ICRC-1 tokens on the world-computer. The key is that the market tokens trade against the native CYCLES, creating a stable trading scenario, and facilitating the general trade of the CYCLES.", "usesInternetIdentity": true, @@ -4901,10 +3854,7 @@ "id": "relation", "name": "Relation", "oneLiner": "Web3 social graph using a graph database built on ICP.", - "tags": [ - "Tools / Infrastructure", - "SocialFi" - ], + "tags": ["Tools / Infrastructure", "SocialFi"], "website": "https://relationlabs.ai/home", "github": "https://github.com/relationlabs/relation-graph-icp", "twitter": "https://twitter.com/relationlabs", @@ -4917,10 +3867,7 @@ "id": "meddle", "name": "Meddle", "oneLiner": "A software-IoT product that deals with data collection from sensors and industrial machinery.", - "tags": [ - "Tools / Infrastructure", - "Enterprise" - ], + "tags": ["Tools / Infrastructure", "Enterprise"], "website": "https://meddleconnect.com", "github": "https://github.com/quinck-io/meddle-icp-be/", "description": "A software-IoT product that deals with data collection from sensors and industrial machinery.", @@ -4932,10 +3879,7 @@ "id": "staexvts", "name": "Staex VTS", "oneLiner": "A vehicle tracking system that serves as an infrastructure to track and invoice vehicles.", - "tags": [ - "Tools / Infrastructure", - "Enterprise" - ], + "tags": ["Tools / Infrastructure", "Enterprise"], "website": "https://staex.io", "github": "https://github.com/staex-io/vts", "twitter": "https://twitter.com/staex_io", @@ -4948,10 +3892,7 @@ "id": "rolodex", "name": "rolodex", "oneLiner": "A self-sovereign directory, giving YOU control of your contact information.", - "tags": [ - "Tools / Infrastructure", - "Enterprise" - ], + "tags": ["Tools / Infrastructure", "Enterprise"], "website": "https://rolodex.weavechain.com/", "github": "https://github.com/weavechain/rolodex3", "twitter": "https://twitter.com/WeavechainWeb3", @@ -4965,9 +3906,7 @@ "name": "Zon Social Media", "oneLiner": "A fusion of social network, marketplace, and Web directory.", "website": "https://zoncircle.com", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "description": "A fusion of social network, marketplace, and Web directory. World as items in folders. On the mission to overcome network effect - well suited for indie authors.", "logo": "/img/showcase/zon_logo.webp", "usesInternetIdentity": true, @@ -4980,9 +3919,7 @@ "name": "NeuronPool", "oneLiner": "Stake your ICP, join the pool and win big rewards!", "website": "https://neuronpool.com/", - "tags": [ - "DeFi" - ], + "tags": ["DeFi"], "description": "Stake your ICP, join the pool and win big rewards!", "logo": "/img/showcase/neuronpool_logo.png", "usesInternetIdentity": true, @@ -4999,9 +3936,7 @@ "name": "Fort Major DAO", "oneLiner": "Fair, Open, Robust and Transparent digital organization with an uplifting vibe.", "website": "https://fort-major.org", - "tags": [ - "DAO" - ], + "tags": ["DAO"], "description": "Let's build something nice together and share the benefits fairly! Sign in, find a task you can tackle, solve it and claim your rewards.", "stats": "150+ Tasks Already Solved", "logo": "/img/showcase/fort-major-dao_logo.svg", @@ -5015,16 +3950,11 @@ "description": "BIT10 is an asset manager which gives it's users the opportunity to buy our Index which tracks the biggest crypto tokens, ordinals and BRC-20's in the Bitcoin DeFi ecosystem. BIT10 offers a pre-picked basket of assets that the user can hold simply buying one token.", "website": "https://www.bit10.app", "logo": "/img/showcase/bit10_logo.webp", - "screenshots": [ - "/img/showcase/bit10_screenshot.webp" - ], + "screenshots": ["/img/showcase/bit10_screenshot.webp"], "video": "/img/showcase/bit10_video.mp4", "display": "Normal", "stats": "500+ user signups", - "tags": [ - "Bitcoin", - "DeFi" - ], + "tags": ["Bitcoin", "DeFi"], "usesInternetIdentity": true, "github": "https://github.com/ZeyaRabani/BIT10", "twitter": "https://x.com/bit10startup", @@ -5040,9 +3970,7 @@ "website": "https://mjlwf-iqaaa-aaaan-qmtna-cai.icp0.io/home", "logo": "/img/showcase/icecube_logo.png", "display": "Normal", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "usesInternetIdentity": true, "github": "https://github.com/NeutronStarDAO/icecube", "twitter": "https://x.com/icecubeapp" @@ -5056,9 +3984,7 @@ "website": "https://alpha.bridge23.app/login", "logo": "/img/showcase/bridge23_logo.png", "display": "Normal", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "github": "https://github.com/bridge-23/Bridge23app.0.1.0-alpha", "twitter": "https://x.com/bridge23inc" @@ -5071,10 +3997,7 @@ "website": "https://attentiondao.app/dao", "logo": "/img/showcase/eventhub_logo.png", "display": "Normal", - "tags": [ - "Tools / Infrastructure", - "DAO" - ], + "tags": ["Tools / Infrastructure", "DAO"], "usesInternetIdentity": true, "github": "https://github.com/Vitiv/event-broadcaster/" }, @@ -5086,11 +4009,7 @@ "website": "https://alpha-gate23.bridge23.app/", "logo": "/img/showcase/Gate23_logo.png", "display": "Normal", - "tags": [ - "Tools / Infrastructure", - "Enterprise", - "Ethereum" - ], + "tags": ["Tools / Infrastructure", "Enterprise", "Ethereum"], "usesInternetIdentity": true, "github": "https://github.com/bridge-23/Gate23", "twitter": "https://x.com/bridge23inc" @@ -5103,9 +4022,7 @@ "website": "https://3356i-cqaaa-aaaao-axdqa-cai.icp0.io/", "logo": "/img/showcase/expeera_logo.jpeg", "display": "Normal", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "github": "https://github.com/Expeera/IC-PayPortal/tree/phase-3" }, @@ -5114,19 +4031,13 @@ "description": "The Aegis Finance is an all-in-one exchange for trading, deposits, and withdrawals.", "website": "https://aegis-finance.vercel.app/", "logo": "/img/showcase/aegis-finance_logo.webp", - "screenshots": [ - "/img/showcase/aegis-finance_screenshot.webp" - ], + "screenshots": ["/img/showcase/aegis-finance_screenshot.webp"], "video": "", "display": "Normal", "id": "aegis-finance", "oneLiner": "Unlocking financial freedom, block by block.", "stats": "100k+ $AEGIS TVL", - "tags": [ - "Bitcoin", - "Ethereum", - "DeFi" - ], + "tags": ["Bitcoin", "Ethereum", "DeFi"], "usesInternetIdentity": true, "github": "https://github.com/AegisFinance", "twitter": "https://x.com/icpdelta", @@ -5141,9 +4052,7 @@ "logo": "/img/showcase/moonshift_logo.png", "display": "Normal", "oneLiner": "Gamified quest board where projects can create “Shifts” or marketing bounties for their community to collect.", - "tags": [ - "SocialFi" - ], + "tags": ["SocialFi"], "usesInternetIdentity": true, "github": "https://github.com/MemeFighterCo/Moonshift", "twitter": "https://x.com/moonshiftapp" @@ -5155,9 +4064,7 @@ "logo": "/img/showcase/icda_logo.png", "display": "Normal", "oneLiner": "Using canisters and threshold signature to build a DA layer compatible with EigenDA.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": false, "github": "https://github.com/C-B-Elite/ICDA" }, @@ -5168,10 +4075,8 @@ "logo": "/img/showcase/pleximail_logo.png", "display": "Normal", "oneLiner": "The end-to-end encrypted, ICP canister-based, trustless secure email service.", - "tags": [ - "Tools / Infrastructure" - ], + "tags": ["Tools / Infrastructure"], "usesInternetIdentity": true, "website": "https://ai-fi.cc" } -] \ No newline at end of file +] diff --git a/src/pages/ecosystem.tsx b/src/pages/ecosystem.tsx index c0158c4efc..6e1dbc0987 100644 --- a/src/pages/ecosystem.tsx +++ b/src/pages/ecosystem.tsx @@ -296,7 +296,25 @@ const tags = Object.entries( } return tags; }, {} as Record) -); +) + .map(([tag, count]): [string, number] => + tag === "Chainfusion" ? ["Chain Fusion", count] : [tag, count] + ) + .sort((a, b) => { + const priorityOrder = ["AI", "Chain Fusion", "Bitcoin", "Ethereum"]; + const indexA = priorityOrder.indexOf(a[0]); + const indexB = priorityOrder.indexOf(b[0]); + + if (indexA !== -1 && indexB !== -1) { + return indexA - indexB; + } else if (indexA !== -1) { + return -1; + } else if (indexB !== -1) { + return 1; + } else { + return a[0].localeCompare(b[0]); + } + }); function ShowcasePage(): JSX.Element { const [queryTag, setQueryTag, queryTagInitialized] = From 55d6478ffebb72386d47869865c5d561deadabab Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 20 Sep 2024 17:18:06 +0200 Subject: [PATCH 43/60] add share image --- src/pages/capabilities/ai.tsx | 29 ++++++++++++--------- static/img/shareImages/share-ai-chain.webp | Bin 0 -> 190832 bytes 2 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 static/img/shareImages/share-ai-chain.webp diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 41b04e4aeb..07b05c8ffa 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -297,7 +297,9 @@ const ContactCard: React.FC = () => { />

    Pierre Samaties

    - Chief Business Officer + + Chief Business Officer +
    @@ -308,7 +310,9 @@ const ContactCard: React.FC = () => { />

    Islam El-Ashi

    - Head of AI Engineering + + Head of AI Engineering +
    @@ -543,9 +547,9 @@ function AISubPage() { return ( - +
    - + Fastest growing AI Ecosystem in Web3 {" "} ICP is the only blockchain where smart contracts can - directly connect to Web 2.0 services using HTTPS outcalls, - which opens the possibility for AI applications running - on ICP to integrate and fetch data from external services. + directly connect to Web 2.0 services using HTTPS outcalls, + which opens the possibility for AI applications running on + ICP to integrate and fetch data from external services. - - + Ecosystem diff --git a/static/img/shareImages/share-ai-chain.webp b/static/img/shareImages/share-ai-chain.webp new file mode 100644 index 0000000000000000000000000000000000000000..cb7ba4fed710d9f75e14386e92bcc494d6d44768 GIT binary patch literal 190832 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

    c;$ENI5p8%ioLQm3aGg0c1 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 literal 0 HcmV?d00001 From 6bb34318701d21e5e720181e0cd6527efa05cd16 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 20 Sep 2024 17:19:09 +0200 Subject: [PATCH 44/60] fix text --- src/pages/capabilities/ai.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx index 07b05c8ffa..3b1b121656 100644 --- a/src/pages/capabilities/ai.tsx +++ b/src/pages/capabilities/ai.tsx @@ -547,7 +547,7 @@ function AISubPage() { return ( From 6d75ffafce2294d6832117d121daa001f24adb3e Mon Sep 17 00:00:00 2001 From: reigj1 Date: Mon, 23 Sep 2024 13:23:45 +0200 Subject: [PATCH 45/60] update ai page, update home, nav --- docusaurus.config.js | 4 +- src/components/LandingPage/Hero/Cards.tsx | 18 +- src/pages/ai.tsx | 1709 +++++++++++++-------- static/img/home/ai.webp | Bin 122252 -> 157942 bytes static/img/nav/featured-ai.webp | Bin 22778 -> 14432 bytes 5 files changed, 1089 insertions(+), 642 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index e923fcfe0e..c801117fe3 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -294,7 +294,7 @@ const marketingNav = { { name: "AI on ICP", href: "/ai", - description: "Run AI models as real smart contracts", + description: "Secure and Trusted AI onchain", }, /* { @@ -334,7 +334,7 @@ const marketingNav = { },*/ ], featured: { - title: "Run AI models as real smart contracts", + title: "Secure and Trusted AI onchain", href: "/ai", image: "/img/nav/featured-ai.webp", }, diff --git a/src/components/LandingPage/Hero/Cards.tsx b/src/components/LandingPage/Hero/Cards.tsx index 5c4ad6d5e4..256543d914 100644 --- a/src/components/LandingPage/Hero/Cards.tsx +++ b/src/components/LandingPage/Hero/Cards.tsx @@ -177,26 +177,26 @@ export const CardsSection = () => {

    -
    +
    -
    +

    - Make AI immune to cyber attacks + Secure and Trusted AI onchain

    - Decentralize Al to make it tamperproof and unstoppable, and - autonomous if needed + Benefit from the security, resilience, and power of the ICP + blockchain.

    - - Find out more + + Build now
    -
    +
    diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index bb071d3231..442a1f0a41 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -1,730 +1,1177 @@ +import React, { useEffect, useRef, useState } from "react"; import Link from "@docusaurus/Link"; -import DarkHeroStyles from "@site/src/components/Common/DarkHeroStyles"; +import AnimateSpawn from "@site/src/components/Common/AnimateSpawn"; +import LinkArrowRight from "@site/src/components/Common/Icons/LinkArrowRight"; +import ShareMeta from "@site/src/components/Common/ShareMeta"; import transitions from "@site/static/transitions.json"; import Layout from "@theme/Layout"; -import { motion } from "framer-motion"; -import React, { useRef } from "react"; -import AnimateSpawn from "../components/Common/AnimateSpawn"; -import LinkArrowRight from "../components/Common/Icons/LinkArrowRight"; -import LinkArrowUpRight from "../components/Common/Icons/LinkArrowUpRight"; -import LinkCardsSection from "../components/Common/LinkCardsSection"; -import ShareMeta from "../components/Common/ShareMeta"; -import { useFontsLoaded } from "@site/src/utils/use-fonts-loaded"; -import VideoCard from "../components/Common/VideoCard/index"; -// import youtubeData from "@site/.docusaurus/youtube/default/youtube.json"; -import { NewsCard } from "../components/NewsPage/Cards"; import clsx from "clsx"; -import CodeBlockString from "../theme/CodeBlock/Content/String"; -import { useDarkHeaderInHero } from "../utils/use-dark-header-in-hero"; +import { motion } from "framer-motion"; +import LightHeroStyles from "@site/src/components/Common/LightHeroStyles"; +import VideoCard, { + ImageOnlyVideoCard, + TitleVideoCard, +} from "@site/src/components/Common/VideoCard"; +import eventsData from "@site/.docusaurus/airtable/default/airtable-events.json"; +import LinkArrowUpRight from "@site/src/components/Common/Icons/LinkArrowUpRight"; +import AIManifestoModal from "@site/src/components/AIManifestoModal"; +import { useElementSize } from "@site/src/utils/use-element-size"; +import { useLocation } from "@docusaurus/router"; -interface TrustCardProps { +interface FeatureCardProps { imageSrc: string; - imageAlt: string; title: string; - description: React.ReactNode; - link?: string; - linkText?: string; + description: string; + badge?: string; } -const MotionLink = motion(Link); +const FeatureCard: React.FC = ({ + imageSrc, + title, + description, + badge, +}) => { + return ( +
    + +
    + {title} + {description} +
    + {badge && ( +
    + {badge} +
    + )} +
    + ); +}; + +interface RoadmapItemProps { + number: string; + title: string; + date?: string; +} + +const RoadmapItem: React.FC = ({ number, title, date }) => { + return ( +
    +

    {number}

    +
    + {date && ( + + )} +

    + {title} +

    +
    +
    + ); +}; + +interface AIFeatureCardProps { + number: string; + icon?: string; + title: string; + features?: string[]; +} + +const AIFeatureCard: React.FC = ({ + number, + icon, + title, + features, +}) => { + return ( +
    + {" "} +
    + {number} + +
    +
    +

    {title}

    +
      + {features.map((item, index) => ( +
    • + + {item} +
    • + ))} +
    +
    +
    + ); +}; + +interface ScrollableItemProps { + number: string; + title: string; + date?: string; + icon?: string; + features?: string[]; +} + +interface ScrollableSectionProps { + items: ScrollableItemProps[]; + type: "roadmap" | "aiFeatures"; + title?: string; +} + +const ScrollableSection: React.FC = ({ + items, + type, + title, +}) => { + const scrollContainerRef = useRef(null); + const [activeIndex, setActiveIndex] = useState(0); + + useEffect(() => { + const handleScroll = () => { + const container = scrollContainerRef.current; + if (container) { + const scrollLeft = container.scrollLeft; + const containerWidth = container.clientWidth; + const scrollWidth = container.scrollWidth; + const itemWidth = + type === "roadmap" ? containerWidth : containerWidth * 0.8; + + let newIndex = Math.round(scrollLeft / itemWidth); + + if (scrollLeft + containerWidth >= scrollWidth - 10) { + newIndex = items.length - 1; + } -const trustCards = [ + setActiveIndex(newIndex); + } + }; + + const container = scrollContainerRef.current; + if (container) { + container.addEventListener("scroll", handleScroll); + return () => container.removeEventListener("scroll", handleScroll); + } + }, [items.length, type]); + + const ItemComponent = type === "roadmap" ? RoadmapItem : AIFeatureCard; + + return ( +
    + {title && ( + {title} + )} +
    +
    + {items.map((item, index) => ( + + ))} +
    +
    +
    + {items.map((_, index) => ( +
    + ))} +
    +
    + ); +}; + +const Collapse: React.FC<{ + title: React.ReactNode; + children: React.ReactNode; + open: boolean; + onClick: () => void; + link: string; +}> = ({ title, children, open, onClick, link }) => { + const ref = useRef(); + const size = useElementSize(ref); + + return ( +
    + +
    +
    {children}
    +
    +
    + {children} +
    +
    + ); +}; + +interface FaqItemProps { + question: string; + answer: string; +} + +const FaqItem: React.FC = ({ question, answer }) => { + return ( +
    +

    + {question} +

    +

    {answer}

    +
    + ); +}; + +const ContactCard: React.FC = () => { + return ( + + ); +}; + +const features: FeatureCardProps[] = [ { - imageSrc: "/img/decentralized-ai/trust-icon-1.svg", - imageAlt: "Tamper-proofness icon", - title: "Tamper-proof", + imageSrc: "/img/ai-chain/1a.svg", + title: "Immune to cyber attacks.", description: - "Computation is replicated across multiple nodes and validated by consensus. There is no single point of trust.", + "Sensitive AI models like in finance and public administration must be protected from centralized control, a prime cause for cyber attacks. ICP's decentralized infrastructure ensures integrity of AI models.", }, { - imageSrc: "/img/decentralized-ai/trust-icon-2.svg", - imageAlt: "Unstoppability icon", - title: "Unstoppable", + imageSrc: "/img/ai-chain/2a.svg", + title: "Verifiable Inputs and Outputs.", description: - "Smart contracts are censorship resistant as they are not controlled by a single entity or legislation.", + "AI solutions built on ICP allow to verify inputs and outputs. For use cases like legal compliance, ICP ensures transparency with auditable, verifiable data.", }, { - imageSrc: "/img/decentralized-ai/trust-icon-3.svg", - imageAlt: "Autonomy icon", - title: "Autonomous", + imageSrc: "/img/ai-chain/3a.svg", + title: "Privacy-preserving.", description: - "Smart contracts can be made immutable turning them into a permanent compute unit in cyberspace.", + "ICP's encryption protects data processed by AI models, making AI useable for confidential data and complying with data protection standards.", + badge: "coming soon", }, { - imageSrc: "/img/decentralized-ai/trust-icon-4.svg", - imageAlt: "Scalability icon", - title: "Scalable", + imageSrc: "/img/ai-chain/4a.svg", + title: "Resilient.", description: - "ICP aims to give smart contracts near native performance and scalability. Currently, smart contracts can execute billions of instructions per message and use 4GiB of the main memory and 400GiB of stable memory. The future vision is to give smart contracts access to AI hardware such as GPUs.", + " AI-driven operations like medical care need constant availability. ICP's decentralized smart contracts ensure high availability, keeping AI models secure and operational.", }, { - imageSrc: "/img/decentralized-ai/trust-icon-5.svg", - imageAlt: "Expressiveness icon", - title: "Expressive", + imageSrc: "/img/ai-chain/5a.svg", + title: "AI-2-X Economy.", description: - "The virtual machine of ICP is WebAssembly that has a growing ecosystem of languages, tools, and libraries. This allows ICP developers to use open source projects such as ", - link: "https://github.com/sonos/tract", - linkText: "Sonos Tract AI inference engine", + " AI models that run as smart contracts, enable them to autonomously participate in the digital economy by interacting with digital assets such as Bitcoin, Ethereum, Stablecoins, and ICP. This facilitates secure, transparent, and automated transactions and contract management without human intervention.", }, ]; -const shortTermRoadmapItems = [ - "Faster deterministic floating-point operations", - "Wasm SIMD (Single-instruction multiple data)", - "Upgrade Wasm memory to 64-bit", +const roadmapData = [ + { + number: "01", + title: "Data storage to run large AI models", + date: "", + }, + { + number: "02", + title: "Optimized floating-point arithmetic for faster AI processing", + date: "", + }, + { + number: "03", + title: "Seamless Integration with Web 2.0", + date: "", + }, + { + number: "04", + title: "GPU acceleration for enterprise-grade AI workloads", + date: "2025", + }, ]; -const longTermRoadmapItems = [ - "Explore API for deterministic AI computation on GPUs.", - "Develop public specification for nodes with GPUs.", - "Add subnets with the new nodes to ICP.", +const aiFeatures = [ + { + number: "01", + icon: "/img/ai-chain/1b.svg", + title: "Infrastructure and resources", + features: ["Compute marketplaces", "Data storage", "AI Smart Contracts"], + }, + { + number: "02", + icon: "/img/ai-chain/2b.svg", + title: "Development and training", + features: ["AI development", "Model training", "Data marketplace"], + }, + { + number: "03", + icon: "/img/ai-chain/3b.svg", + title: "AI inference", + features: ["Data analysis", "Content generation", "AI model marketplace"], + }, + { + number: "04", + icon: "/img/ai-chain/4b.svg", + title: "AI verification and security", + features: [ + "Content provenance", + "Model verification", + "Regulatory compliance", + ], + }, ]; -const TrustCard: React.FC = ({ - imageSrc, - imageAlt, - title, - description, - link, - linkText, -}) => ( -
    - {imageAlt} -
    - {title} -
    - {link && linkText ? ( -
    - {description} - - {linkText} - {" "} - in their smart contracts. -
    - ) : ( -
    {description}
    - )} -
    -); +const projects: { + imageUrl: string; + title: string; + body: React.ReactNode; + link: string; +}[] = [ + { + title: "DecideAI", + body: "DecideAI offers products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace.", + link: "https://decideai.xyz/", + imageUrl: "/img/ai-chain/decideai.webp", + }, + { + title: "Kinic", + body: "Kinic's mission is to bring AI ownership to the world via personal AI. Kinic's Vector Database solution addresses a pressing need for tamperproof data to fine-tune LLM for queries.", + link: "https://ai.kinic.io", + imageUrl: "/img/ai-chain/kinic.webp", + }, + { + title: "Elna.ai", + body: "ELNA provides the fundamental building blocks for AI development like vector database, LLM inference engines, and deployment tools — creators don't have to build from scratch, and instead use these tools to deploy part of their AI application onchain.", + link: "https://www.elna.ai/", + imageUrl: "/img/ai-chain/elnaai.webp", + }, +]; -const RoadMapList: React.FC<{ items: string[] }> = ({ items }) => { - return ( -
      - {items.map((item, index) => ( -
    • - - {item} -
    • - ))} -
    - ); -}; +interface FaqData { + question: string; + answer: string; +} + +const faqData: FaqData[] = [ + { + question: "What is AI onchain and why is it important?", + answer: + "AI onchain refers to running AI models and applications directly on the blockchain, providing decentralized, tamper-proof, and transparent AI solutions. This approach ensures enhanced security, privacy, and data integrity, which are crucial for applications in sectors like finance, healthcare, and beyond.", + }, + { + question: "How does ICP enable AI onchain?", + answer: + "The Internet Computer (ICP) enables AI onchain through its unique architecture that supports scalable, secure, and fully decentralized smart contracts called canisters. These canisters allow AI models to run directly on the blockchain, eliminating the need for traditional cloud-based AI solutions.", + }, + { + question: + "What are the benefits of running AI onchain compared to traditional methods?", + answer: + "Running AI onchain offers several benefits, including enhanced data privacy, resistance to censorship, reduced dependency on centralized cloud providers, and the ability to leverage blockchain's transparency and security features.", + }, + { + question: + "How can developers get started with AI on the Internet Computer?", + answer: + "Developers can start by accessing our comprehensive resources, including developer documentation, sample code, demos, and our GitHub repository. These tools provide step-by-step guidance on building and deploying AI applications on ICP. In addition a good starting point is to connect to the DeAI dev group.", + }, + { + question: + "What tools and programming languages are supported for developing AI on ICP?", + answer: + "ICP supports development in languages such as Motoko and Rust, which are optimized for creating and managing canisters. These canisters can run AI models and connect with external data sources, providing a flexible environment for AI development.", + }, + { + question: "What are the use cases for AI on ICP?", + answer: + "Use cases for AI on ICP span various industries, including finance, healthcare, supply chain management, and more. AI onchain can be used for applications such as fraud detection, predictive analytics, personalized medicine, and automated decision-making systems.", + }, + { + question: + "What makes ICP different from other blockchains for AI applications?", + answer: + "ICP stands out due to its ability to run AI fully onchain, its scalability, and its low-cost computation. Unlike other blockchains that might rely on off-chain solutions, ICP offers a seamless, fully integrated environment for decentralized AI.", + }, + { + question: + "How does ICP ensure the privacy and security of AI models and data?", + answer: + "ICP utilizes advanced cryptographic techniques and a decentralized architecture to protect AI models and data from tampering, unauthorized access, and data breaches, ensuring that sensitive information remains secure.", + }, + { + question: "Can existing AI models be deployed on ICP?", + answer: + "Yes, existing AI models can be adapted and deployed on ICP. Developers may need to convert their models into a compatible format and use ICP's canister technology to run them onchain.", + }, + { + question: + "Where can I find community support and further learning resources?", + answer: + "Developers and entrepreneurs can join our community forums, attend workshops, and participate in webinars. Additionally, our website provides links to detailed tutorials, the latest updates, and a vibrant community ready to support your journey with AI on ICP.", + }, +]; + +const MotionLink = motion(Link); +const { events, websiteCategory, regions } = eventsData; function AIPage() { - const fontLoaded = useFontsLoaded(); - const heroRef = useRef(null); - const isDark = useDarkHeaderInHero(heroRef); + const [manifestoModalOpen, setManifestoModalOpen] = useState(false); + const [openProjectIndex, setOpenProjectIndex] = useState(0); + const location = useLocation(); + + useEffect(() => { + if (location.hash === "#manifesto") { + openOverlay(); + } + }, [location]); + + function closeOverlay() { + document.body.style.overflow = ""; + setManifestoModalOpen(false); + // Remove the hash from the URL + window.history.pushState( + "", + document.title, + window.location.pathname + window.location.search + ); + } + + function openOverlay() { + document.body.style.overflow = "hidden"; + setManifestoModalOpen(true); + // Add #manifesto to the URL + window.history.pushState( + "", + document.title, + window.location.pathname + window.location.search + "#manifesto" + ); + } return (
    - {isDark && } -
    + -
    - - Run AI models as real smart contracts - -
    +
    +
    +
    + ai chain logo +
    - Al can be run truly onchain as Internet Computer smart - contracts, making it tamperproof and unstoppable, and autonomous - if needed + Secure and Trusted AI onchain - {/* + Fastest growing AI Ecosystem in Web3 + + - EXPLORE AI ON ICP - */} -
    -
    -
    -
    - Decentralized AI + + + + Dominic Williams on AI on ICP + + + + Al will be at the heart of everything, driving economies and + our daily lives. Al on ICP marks a major technological leap by + bringing{" "} + Al onchain, + ensuring decentralized, tamper-proof, and privacy-preserving + solutions that address critical issues like security, + transparency, and reliability. + +
    -
    -
    - -
    +
    + +
    - - - - -
    - -
    -
    - + - AI Models on ICP Today - -
    - See a series of demos how the Internet Computer has the - capability of running AI in a smart contract. -
    - - Watch the playlist - -
    -
    + AI onchain: a major technological leap + + + ICP’s advanced AI on chain technology enables five key + attributes that will drive transformative AI use cases across + industries. +
    - -
    - - - -
    -
    - -
    -

    - Try out the AI demo by yourself -

    -

    - Check out the open-source repo on GitHub and tryout the AI - demo by yourself. -

    -

    - - GO TO GITHUB REPO - -

    -
    -
    - - {`let image = imageops::resize( - &image, 160, 160, FilterType::Triangle); - -let tensor = Array4::from_shape_fn( - (1, 3, 160, 160), |(_, c, y, x)| { - image[(x as u32, y as u32)][c] as f32 / 255.0 -}); - -let result = model.run( - tvec!(Tensor::from(tensor).into()))?;`} - -
    + {features.map((feature, index) => ( + + ))}
    -
    -
    -
    + +
    +
    - - A recent study on AI finds that nearly half of the respondents - (49%) are concerned about the misuse of AI for nefarious purposes. - - - Survey in the{" "} + + + TECHNOLOGY + + + R&D at the core of Internet Computer’s AI innovation + {" "} + + AI onchain is made possible by the unique technological + capabilities of the Internet Computer Protocol (ICP). Running AI + as a smart contract on a blockchain is a significant innovation + that is based on DFINITY Foundation’s significant R&D efforts in + this domain. Over the past 6 months, AI computations have been + optimized to run up to 10x faster, enabling larger models to run + onchain. + - Artificial Intelligence Index Report 2024 - {" "} - by Stanford University. - - -
    -
    - -
    -
    - - The Tampering Problem - - -

    - - Research shows - {" "} - that it is possible to tamper with AI models in an - undetectable way. This means that the integrity of the - AI's output can be compromised without anyone - knowing. -

    -
    +
    +
    +
    + + 8x + + + faster + +
    +
    + +
    - -
    - - The Black Box Problem - - -

    - Users have no visibility into how their data is used and - how AI models produce responses. This lack of transparency - makes it difficult for users to trust the technology. -

    -
    +
    +
    + + 02 + + + Optimized floating-point arithmetic for faster AI + processing.{" "} + {" "} + + ICP's next-gen smart contracts provide orders of magnitude + more compute per transaction compared to + current-generation blockchains. In addition, with newly + added support for WebAssembly 128-bit SIMD, smart + contracts can execute multiple floating point operations + in parallel, making running AI models much faster and more + efficient. + +
    -
    - +
    +
    +
    +
    + + 03 + + + Seamless Integration with Web 2.0. + {" "} + + ICP is the only blockchain where smart contracts can + directly connect to Web 2.0 services using HTTPS outcalls, + which opens the possibility for AI applications running on + ICP to integrate and fetch data from external services. + + + More on HTTPS outcalls + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + web gpu +
    +
    +
    +
    + + 04 + + + GPU acceleration for enterprise-grade AI workloads.{" "} + {" "} + + ICP's next-gen smart contracts run on segregated parts of + the Internet Computer known as "subnets". The flexible + architecture of subnets allows the Internet Computer not + only to scale, but to also create subnets with different + characteristics. Work is underway to create subnets with + GPU acceleration, allowing smart contracts to run + enterprise-grade AI models directly onchain. + +
    +
    + coming soon +
    +
    +
    +
    -
    - - What is needed to solve these issues? - +
    - - + + AI Demos + +
    + + Dominic Williams, Chief Scientist and Founder of DFINITY + Foundation, demos advancements in AI smart contracts on ICP + + + More videos on AI + +
    +
    + +
    + -

    Model integrity

    -

    - Users need assurance that their AI prompts are handled by - untampered models. Traditional software integrity methods, such - as source code analysis, are infeasible for AI models because - they consist of complex numerical weights and extensive - matrices, rather than human-readable code, making direct - verification impossible. -

    - - - -

    - Data confidentiality -

    -

    - During training and operation, AI models handle sensitive data, - like medical inquiries or corporate secrets. Users need - guarantees that their information remains secure and doesn't - leak to the model creators, other users, or AI infrastructure - providers. -

    -
    + +
    + + +
    + - -

    Availability

    -

    - AI models will become essential for business processes and - societies in general. As with every critical infrastructure, - solutions must be found to keep AI models resilient to - interruptions and to protect them from censorship. -

    + + Ecosystem + + + The fastest growing AI Ecosystem in Web3. + {" "} + + The ICP ecosystem is home to 60+ AI-related projects. These + dapps cover the entire AI value chain from infrastructure, + development and training, inference to verification and + security. ICP's unique capabilities have made it a preferred + platform for builders of AI dapps. + + + Fastest growing AI Ecosystem in Web3 +
    -
    -
    - - -
    -
    -

    - Making AI trustworthy -

    - - -
    -
    -
    - -
    +
    +
    + + DeAI Manifesto + + + Created by the ICP community, the DeAI manifesto lays out + the principles and reasons for decentralizing AI and + advocating for a fair, transparent, and user-centric AI + ecosystem. Join the movement! + +
    + + Read the full manifesto{" "} + +
    +
    + + + +
    - - What the future holds - - - Blockchain AI is still in its early stages. Currently, smart - contracts can run small AI models like ImageNet for onchain image - classification. Short-term improvements will decrease latency and - support larger models, while the long-term goal is to enable smart - contracts to perform AI computations on GPUs, allowing both - training and inference of large models fully onchain. - - - Short-term - - - - Long-term - - -
    - +
    +
    + + DEVELOPERS + + + Build your next AI venture on the Internet Computer.{" "} + + Find all the essentials, including developer documentation, + code samples, demos, and our GitHub repository. + + + + + These resources are designed to help you get started with + creating decentralized AI applications onchain. Our DeAI + developer community is also a great way to start. + +
    + +
    +
    + +
    +

    Learn

    +
    + + Overview of AI onchain + + + Docs + +
    +
    + +
    +

    Connect

    +
    +
    + + Contribute to the discussion + + + ICP Forum + +
    +
    + + Connect with developers + + + Discord + +
    +
    + + Attend global events + + + Upcoming events + +
    +
    +
    +
    + + +
    +

    Build

    +
    +
    + + Explore the work + + + GitHub + +
    +
    +
    + +
    +
    +

    Grow

    +
    + + Apply for the DeAI grant + + + Grant application + +
    +
    + + Join the accelerator + + + Explore Olympus + +
    +
    +
    +
    +
    +
    - - -
    - - News & media - -
    - - Get all the news from the Internet Computer ecosystem - - - Explore more news - +
    +

    FAQ

    +
    +
    + {faqData.map((item, index) => ( + + ))} +
    +
    +
    -
    - - - - - - - - - - - - {" "} - - - {" "} - - - {" "} - -
    - - - +
    + {manifestoModalOpen && ( + + )} ); diff --git a/static/img/home/ai.webp b/static/img/home/ai.webp index 570e8343f3522a63438d50ba5485ed2cfbd4962c..82fdbb55a4b7810a7e4fe0018dcb818d62a31e0c 100644 GIT binary patch literal 157942 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%0ASOBt?!L7 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�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 bJlLS}<>ApUk|c<$u+dH5Cp`m%|2h8!b2{W6 literal 122252 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μDE`at%4bgZ@4w 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 Date: Mon, 23 Sep 2024 13:26:00 +0200 Subject: [PATCH 46/60] remove prev page --- src/pages/capabilities/ai.tsx | 1189 --------------------------------- 1 file changed, 1189 deletions(-) delete mode 100644 src/pages/capabilities/ai.tsx diff --git a/src/pages/capabilities/ai.tsx b/src/pages/capabilities/ai.tsx deleted file mode 100644 index 3b1b121656..0000000000 --- a/src/pages/capabilities/ai.tsx +++ /dev/null @@ -1,1189 +0,0 @@ -import React, { useEffect, useRef, useState } from "react"; -import Link from "@docusaurus/Link"; -import AnimateSpawn from "@site/src/components/Common/AnimateSpawn"; -import DarkHeroStyles from "@site/src/components/Common/DarkHeroStyles"; -import LinkArrowRight from "@site/src/components/Common/Icons/LinkArrowRight"; -import ShareMeta from "@site/src/components/Common/ShareMeta"; -import { useDarkHeaderInHero } from "@site/src/utils/use-dark-header-in-hero"; -import RightPointer from "@site/static/img/svgIcons/rightPointer.svg"; -import transitions from "@site/static/transitions.json"; -import Layout from "@theme/Layout"; -import clsx from "clsx"; -import { motion } from "framer-motion"; -import { css } from "@site/src/utils/dummy-css"; -import LightHeroStyles from "@site/src/components/Common/LightHeroStyles"; -import VideoCard, { - ImageOnlyVideoCard, - TitleVideoCard, -} from "@site/src/components/Common/VideoCard"; -import { NewsCard } from "@site/src/components/NewsPage/Cards"; -import eventsData from "@site/.docusaurus/airtable/default/airtable-events.json"; -import EventCard from "@site/src/components/GlobalEvents/EventCard"; -import { AirtableEvent } from "@site/src/components/GlobalEvents/types"; -import LinkArrowUpRight from "@site/src/components/Common/Icons/LinkArrowUpRight"; -import { useScrollSpyMenu } from "../../utils/use-scroll-spy-menu"; -import AIManifestoModal from "@site/src/components/AIManifestoModal"; -import { ArrowIconRight } from "@site/src/components/RoadmapPage/Overlay"; -import { useElementSize } from "@site/src/utils/use-element-size"; -import { useLocation } from "@docusaurus/router"; - -interface FeatureCardProps { - imageSrc: string; - title: string; - description: string; - badge?: string; -} - -const FeatureCard: React.FC = ({ - imageSrc, - title, - description, - badge, -}) => { - return ( -
    - -
    - {title} - {description} -
    - {badge && ( -
    - {badge} -
    - )} -
    - ); -}; - -interface RoadmapItemProps { - number: string; - title: string; - date?: string; -} - -const RoadmapItem: React.FC = ({ number, title, date }) => { - return ( -
    -

    {number}

    -
    - {date && ( - - )} -

    - {title} -

    -
    -
    - ); -}; - -interface AIFeatureCardProps { - number: string; - icon?: string; - title: string; - features?: string[]; -} - -const AIFeatureCard: React.FC = ({ - number, - icon, - title, - features, -}) => { - return ( -
    - {" "} -
    - {number} - -
    -
    -

    {title}

    -
      - {features.map((item, index) => ( -
    • - - {item} -
    • - ))} -
    -
    -
    - ); -}; - -interface ScrollableItemProps { - number: string; - title: string; - date?: string; - icon?: string; - features?: string[]; -} - -interface ScrollableSectionProps { - items: ScrollableItemProps[]; - type: "roadmap" | "aiFeatures"; - title?: string; -} - -const ScrollableSection: React.FC = ({ - items, - type, - title, -}) => { - const scrollContainerRef = useRef(null); - const [activeIndex, setActiveIndex] = useState(0); - - useEffect(() => { - const handleScroll = () => { - const container = scrollContainerRef.current; - if (container) { - const scrollLeft = container.scrollLeft; - const containerWidth = container.clientWidth; - const scrollWidth = container.scrollWidth; - const itemWidth = - type === "roadmap" ? containerWidth : containerWidth * 0.8; - - let newIndex = Math.round(scrollLeft / itemWidth); - - if (scrollLeft + containerWidth >= scrollWidth - 10) { - newIndex = items.length - 1; - } - - setActiveIndex(newIndex); - } - }; - - const container = scrollContainerRef.current; - if (container) { - container.addEventListener("scroll", handleScroll); - return () => container.removeEventListener("scroll", handleScroll); - } - }, [items.length, type]); - - const ItemComponent = type === "roadmap" ? RoadmapItem : AIFeatureCard; - - return ( -
    - {title && ( - {title} - )} -
    -
    - {items.map((item, index) => ( - - ))} -
    -
    -
    - {items.map((_, index) => ( -
    - ))} -
    -
    - ); -}; - -const Collapse: React.FC<{ - title: React.ReactNode; - children: React.ReactNode; - open: boolean; - onClick: () => void; - link: string; -}> = ({ title, children, open, onClick, link }) => { - const ref = useRef(); - const size = useElementSize(ref); - - return ( -
    - -
    -
    {children}
    -
    -
    - {children} -
    -
    - ); -}; - -interface FaqItemProps { - question: string; - answer: string; -} - -const FaqItem: React.FC = ({ question, answer }) => { - return ( -
    -

    - {question} -

    -

    {answer}

    -
    - ); -}; - -const ContactCard: React.FC = () => { - return ( - - ); -}; - -const features: FeatureCardProps[] = [ - { - imageSrc: "/img/ai-chain/1a.svg", - title: "Immune to cyber attacks.", - description: - "Sensitive AI models like in finance and public administration must be protected from centralized control, a prime cause for cyber attacks. ICP's decentralized infrastructure ensures integrity of AI models.", - }, - { - imageSrc: "/img/ai-chain/2a.svg", - title: "Verifiable Inputs and Outputs.", - description: - "AI solutions built on ICP allow to verify inputs and outputs. For use cases like legal compliance, ICP ensures transparency with auditable, verifiable data.", - }, - { - imageSrc: "/img/ai-chain/3a.svg", - title: "Privacy-preserving.", - description: - "ICP's encryption protects data processed by AI models, making AI useable for confidential data and complying with data protection standards.", - badge: "coming soon", - }, - { - imageSrc: "/img/ai-chain/4a.svg", - title: "Resilient.", - description: - " AI-driven operations like medical care need constant availability. ICP's decentralized smart contracts ensure high availability, keeping AI models secure and operational.", - }, - { - imageSrc: "/img/ai-chain/5a.svg", - title: "AI-2-X Economy.", - description: - " AI models that run as smart contracts, enable them to autonomously participate in the digital economy by interacting with digital assets such as Bitcoin, Ethereum, Stablecoins, and ICP. This facilitates secure, transparent, and automated transactions and contract management without human intervention.", - }, -]; - -const roadmapData = [ - { - number: "01", - title: "Data storage to run large AI models", - date: "", - }, - { - number: "02", - title: "Optimized floating-point arithmetic for faster AI processing", - date: "", - }, - { - number: "03", - title: "Seamless Integration with Web 2.0", - date: "", - }, - { - number: "04", - title: "GPU acceleration for enterprise-grade AI workloads", - date: "2025", - }, -]; - -const aiFeatures = [ - { - number: "01", - icon: "/img/ai-chain/1b.svg", - title: "Infrastructure and resources", - features: ["Compute marketplaces", "Data storage", "AI Smart Contracts"], - }, - { - number: "02", - icon: "/img/ai-chain/2b.svg", - title: "Development and training", - features: ["AI development", "Model training", "Data marketplace"], - }, - { - number: "03", - icon: "/img/ai-chain/3b.svg", - title: "AI inference", - features: ["Data analysis", "Content generation", "AI model marketplace"], - }, - { - number: "04", - icon: "/img/ai-chain/4b.svg", - title: "AI verification and security", - features: [ - "Content provenance", - "Model verification", - "Regulatory compliance", - ], - }, -]; - -const projects: { - imageUrl: string; - title: string; - body: React.ReactNode; - link: string; -}[] = [ - { - title: "DecideAI", - body: "DecideAI offers products that enhance the decentralized AI ecosystem, including Decide ID, an AI-powered Proof of Personhood, and Decide Cortex, a blockchain-based LLM marketplace.", - link: "https://decideai.xyz/", - imageUrl: "/img/ai-chain/decideai.webp", - }, - { - title: "Kinic", - body: "Kinic's mission is to bring AI ownership to the world via personal AI. Kinic's Vector Database solution addresses a pressing need for tamperproof data to fine-tune LLM for queries.", - link: "https://ai.kinic.io", - imageUrl: "/img/ai-chain/kinic.webp", - }, - { - title: "Elna.ai", - body: "ELNA provides the fundamental building blocks for AI development like vector database, LLM inference engines, and deployment tools — creators don't have to build from scratch, and instead use these tools to deploy part of their AI application onchain.", - link: "https://www.elna.ai/", - imageUrl: "/img/ai-chain/elnaai.webp", - }, -]; - -interface FaqData { - question: string; - answer: string; -} - -const faqData: FaqData[] = [ - { - question: "What is AI onchain and why is it important?", - answer: - "AI onchain refers to running AI models and applications directly on the blockchain, providing decentralized, tamper-proof, and transparent AI solutions. This approach ensures enhanced security, privacy, and data integrity, which are crucial for applications in sectors like finance, healthcare, and beyond.", - }, - { - question: "How does ICP enable AI onchain?", - answer: - "The Internet Computer (ICP) enables AI onchain through its unique architecture that supports scalable, secure, and fully decentralized smart contracts called canisters. These canisters allow AI models to run directly on the blockchain, eliminating the need for traditional cloud-based AI solutions.", - }, - { - question: - "What are the benefits of running AI onchain compared to traditional methods?", - answer: - "Running AI onchain offers several benefits, including enhanced data privacy, resistance to censorship, reduced dependency on centralized cloud providers, and the ability to leverage blockchain's transparency and security features.", - }, - { - question: - "How can developers get started with AI on the Internet Computer?", - answer: - "Developers can start by accessing our comprehensive resources, including developer documentation, sample code, demos, and our GitHub repository. These tools provide step-by-step guidance on building and deploying AI applications on ICP. In addition a good starting point is to connect to the DeAI dev group.", - }, - { - question: - "What tools and programming languages are supported for developing AI on ICP?", - answer: - "ICP supports development in languages such as Motoko and Rust, which are optimized for creating and managing canisters. These canisters can run AI models and connect with external data sources, providing a flexible environment for AI development.", - }, - { - question: "What are the use cases for AI on ICP?", - answer: - "Use cases for AI on ICP span various industries, including finance, healthcare, supply chain management, and more. AI onchain can be used for applications such as fraud detection, predictive analytics, personalized medicine, and automated decision-making systems.", - }, - { - question: - "What makes ICP different from other blockchains for AI applications?", - answer: - "ICP stands out due to its ability to run AI fully onchain, its scalability, and its low-cost computation. Unlike other blockchains that might rely on off-chain solutions, ICP offers a seamless, fully integrated environment for decentralized AI.", - }, - { - question: - "How does ICP ensure the privacy and security of AI models and data?", - answer: - "ICP utilizes advanced cryptographic techniques and a decentralized architecture to protect AI models and data from tampering, unauthorized access, and data breaches, ensuring that sensitive information remains secure.", - }, - { - question: "Can existing AI models be deployed on ICP?", - answer: - "Yes, existing AI models can be adapted and deployed on ICP. Developers may need to convert their models into a compatible format and use ICP's canister technology to run them onchain.", - }, - { - question: - "Where can I find community support and further learning resources?", - answer: - "Developers and entrepreneurs can join our community forums, attend workshops, and participate in webinars. Additionally, our website provides links to detailed tutorials, the latest updates, and a vibrant community ready to support your journey with AI on ICP.", - }, -]; - -const MotionLink = motion(Link); -const { events, websiteCategory, regions } = eventsData; - -function AISubPage() { - const [manifestoModalOpen, setManifestoModalOpen] = useState(false); - const [openProjectIndex, setOpenProjectIndex] = useState(0); - const location = useLocation(); - - useEffect(() => { - if (location.hash === "#manifesto") { - openOverlay(); - } - }, [location]); - - function closeOverlay() { - document.body.style.overflow = ""; - setManifestoModalOpen(false); - // Remove the hash from the URL - window.history.pushState( - "", - document.title, - window.location.pathname + window.location.search - ); - } - - function openOverlay() { - document.body.style.overflow = "hidden"; - setManifestoModalOpen(true); - // Add #manifesto to the URL - window.history.pushState( - "", - document.title, - window.location.pathname + window.location.search + "#manifesto" - ); - } - - return ( - - - -
    - - -
    -
    -
    - ai chain logo -
    - - Secure and Trusted AI onchain - - - - Fastest growing AI Ecosystem in Web3 - - - - - - Dominic Williams on AI on ICP - - - - Al will be at the heart of everything, driving economies and - our daily lives. Al on ICP marks a major technological leap by - bringing{" "} - Al onchain, - ensuring decentralized, tamper-proof, and privacy-preserving - solutions that address critical issues like security, - transparency, and reliability. - - -
    -
    -
    -
    - -
    - - AI onchain: a major technological leap - - - ICP’s advanced AI on chain technology enables five key - attributes that will drive transformative AI use cases across - industries. - -
    - - {features.map((feature, index) => ( - - ))} - -
    -
    -
    - - - - TECHNOLOGY - - - R&D at the core of Internet Computer’s AI innovation - {" "} - - AI onchain is made possible by the unique technological - capabilities of the Internet Computer Protocol (ICP). Running AI - as a smart contract on a blockchain is a significant innovation - that is based on DFINITY Foundation’s significant R&D efforts in - this domain. Over the past 6 months, AI computations have been - optimized to run up to 10x faster, enabling larger models to run - onchain. - - - More on AI Roadmap - - - - - - -
    -
    -
    - - 01 - - - Data storage to run large AI models.{" "} - {" "} - - ICP’s next-gen smart contracts can store and process - gigabytes of data, unlike traditional smart contracts that - can only handle kilobytes. This is required for storing - and executing large AI models as well as processing large - amounts of input data.  - -
    -
    - - 1.000.000x - - - more data storage - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    - - 8x - - - faster - -
    -
    - -
    -
    -
    -
    - - 02 - - - Optimized floating-point arithmetic for faster AI - processing.{" "} - {" "} - - ICP's next-gen smart contracts provide orders of magnitude - more compute per transaction compared to - current-generation blockchains. In addition, with newly - added support for WebAssembly 128-bit SIMD, smart - contracts can execute multiple floating point operations - in parallel, making running AI models much faster and more - efficient. - -
    -
    -
    -
    -
    -
    - - 03 - - - Seamless Integration with Web 2.0. - {" "} - - ICP is the only blockchain where smart contracts can - directly connect to Web 2.0 services using HTTPS outcalls, - which opens the possibility for AI applications running on - ICP to integrate and fetch data from external services. - - - More on HTTPS outcalls - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - web gpu -
    -
    -
    -
    - - 04 - - - GPU acceleration for enterprise-grade AI workloads.{" "} - {" "} - - ICP's next-gen smart contracts run on segregated parts of - the Internet Computer known as "subnets". The flexible - architecture of subnets allows the Internet Computer not - only to scale, but to also create subnets with different - characteristics. Work is underway to create subnets with - GPU acceleration, allowing smart contracts to run - enterprise-grade AI models directly onchain. - -
    -
    - coming soon -
    -
    -
    -
    -
    -
    -
    - -
    - - AI Demos - -
    - - Dominic Williams, Chief Scientist and Founder of DFINITY - Foundation, demos advancements in AI smart contracts on ICP - - - More videos on AI - -
    -
    - -
    - - - -
    -
    -
    -
    - - - - Ecosystem - - - The fastest growing AI Ecosystem in Web3. - {" "} - - The ICP ecosystem is home to 60+ AI-related projects. These - dapps cover the entire AI value chain from infrastructure, - development and training, inference to verification and - security. ICP's unique capabilities have made it a preferred - platform for builders of AI dapps. - - - Fastest growing AI Ecosystem in Web3 - - - - - - AI Ecosystem highlights - -
    -
    -
    - -
    - {projects.map((p, i) => ( - setOpenProjectIndex(i)} - link={p.link} - > -
    -
    {p.body}
    - - Visit website - -
    - {p.title} -
    - ))} -
    -
    -
    - {projects.map((p, i) => ( -
    - {p.title} -
    - ))} -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - - DeAI Manifesto - - - Created by the ICP community, the DeAI manifesto lays out - the principles and reasons for decentralizing AI and - advocating for a fair, transparent, and user-centric AI - ecosystem. Join the movement! - -
    - - Read the full manifesto{" "} - -
    -
    -
    -
    -
    -
    - -
    -
    - - DEVELOPERS - - - Build your next AI venture on the Internet Computer.{" "} - - Find all the essentials, including developer documentation, - code samples, demos, and our GitHub repository. - - - - - These resources are designed to help you get started with - creating decentralized AI applications onchain. Our DeAI - developer community is also a great way to start. - -
    - -
    -
    - -
    -

    Learn

    -
    - - Overview of AI onchain - - - Docs - -
    -
    - -
    -

    Connect

    -
    -
    - - Contribute to the discussion - - - ICP Forum - -
    -
    - - Connect with developers - - - Discord - -
    -
    - - Attend global events - - - Upcoming events - -
    -
    -
    -
    - - -
    -

    Build

    -
    -
    - - Explore the work - - - GitHub - -
    -
    -
    - -
    -
    -

    Grow

    -
    - - Apply for the DeAI grant - - - Grant application - -
    -
    - - Join the accelerator - - - Explore Olympus - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    FAQ

    -
    -
    - {faqData.map((item, index) => ( - - ))} -
    -
    - -
    -
    -
    - {manifestoModalOpen && ( - - )} -
    -
    - ); -} - -export default AISubPage; From c5efd0fac7249e3028938ccdbd3ffcae213e85df Mon Sep 17 00:00:00 2001 From: reigj1 Date: Mon, 23 Sep 2024 15:37:52 +0200 Subject: [PATCH 47/60] fix share link --- src/pages/ai.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index 442a1f0a41..a25dc90c85 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -540,7 +540,7 @@ function AIPage() { title="Secure and Trusted AI onchain" description="Powered by next generation Smart Contracts." > - +
    Date: Wed, 25 Sep 2024 11:27:09 +0200 Subject: [PATCH 48/60] revert changes in blog folder --- blog/news-and-updates/2023-08-23-update.mdx | 24 ++++++++++----------- blog/news-and-updates/2023-09-27-update.mdx | 4 ++-- blog/news-and-updates/2024-02-14-update.mdx | 16 +++++++------- blog/news-and-updates/2024-02-21-update.mdx | 16 +++++++------- blog/news-and-updates/2024-05-01-update.mdx | 2 +- blog/news-and-updates/2024-09-11-update.mdx | 6 +++--- blog/news-and-updates/team-spotlight-fi.mdx | 4 ++-- blog/news-and-updates/team-spotlight-ii.mdx | 2 +- 8 files changed, 37 insertions(+), 37 deletions(-) diff --git a/blog/news-and-updates/2023-08-23-update.mdx b/blog/news-and-updates/2023-08-23-update.mdx index 0527d7849b..ea317de228 100644 --- a/blog/news-and-updates/2023-08-23-update.mdx +++ b/blog/news-and-updates/2023-08-23-update.mdx @@ -9,51 +9,51 @@ image: /img/blog/dev-update-blog-aug-23.jpg ![August 23 2023](../../static/img/blog/dev-update-blog-aug-23.jpg) -Hello developers and welcome to this week's developer weekly update! In this issue, we're excited to announce a new developer video series, along with providing some information about the upcoming proposal that would enable the 1-proposal SNS feature, plus how to enter the Internet Computer Devpost hackathon. Let's dive in! +Hello developers and welcome to this week's developer weekly update! In this issue, we're excited to announce a new developer video series, along with providing some information about the upcoming proposal that would enable the 1-proposal SNS feature, plus how to enter the Internet Computer Devpost hackathon. Let's dive in! ## Internet Computer developer workshop series -Today we're excited to introduce a new, on-going video series: 'Building on the Future // Workshop Series'. In the latest video of this series, David Dal Busco who is a software engineer at DFINITY, showcases how to build an Internet Computer dapp using Juno. This workshop video teaches developers how to implement authentication into their dapp, save images and other data onchain, and then launch their first smart contract onto ICP without needing to write a single line of backend code! +Today we're excited to introduce a new, on-going video series: 'Building on the Future // Workshop Series'. In the latest video of this series, David Dal Busco who is a software engineer at DFINITY, showcases how to build an Internet Computer dapp using Juno. This workshop video teaches developers how to implement authentication into their dapp, save images and other data onchain, and then launch their first smart contract onto ICP without needing to write a single line of backend code! Want to get started? You can find the video tutorial [here](https://www.youtube.com/watch?v=mr_9XArcG9Y). ## 1-proposal SNS initialization feature proposal -On Friday August 25, the NNS team will submit an upgrade proposal that, if adopted, will introduce the 1-proposal SNS initialization feature. This new feature for SNSs has been developed based on feedback collected during the launch of previous SNSs, such as OpenChat, where it was requested that the launch process for an SNS be simplified. Particularly, the feedback received suggested that some steps of the launch process should be combined into a single process, that would then be triggered by the SNS proposal submission. +On Friday August 25, the NNS team will submit an upgrade proposal that, if adopted, will introduce the 1-proposal SNS initialization feature. This new feature for SNSs has been developed based on feedback collected during the launch of previous SNSs, such as OpenChat, where it was requested that the launch process for an SNS be simplified. Particularly, the feedback received suggested that some steps of the launch process should be combined into a single process, that would then be triggered by the SNS proposal submission. This new 1-proposal initialization feature combines all of the SNS preparation steps into one process, making it easier to launch and verify an SNS. You can read the full details of the 1-proposal SNS initialization in this [forum post](https://forum.dfinity.org/t/enhancement-of-the-sns-launch-process-one-proposal/19548), and find additional information regarding the NNS proposal for this feature [here](https://forum.dfinity.org/t/nns-sns-update-august-25-2023/22303). -## Devpost hackathon +## Devpost hackathon -Calling all devs! The Devpost 'Fully Onchain with ICP' hackathon is happening now! Until September 25, you can enter to develop a project on ICP and win a number of prizes. +Calling all devs! The Devpost 'Fully Onchain with ICP' hackathon is happening now! Until September 25, you can enter to develop a project on ICP and win a number of prizes. There are three possible tracks to follow for this hackathon: ### Track 1: The awesome ICP track -In this track, you can build any dapp that showcases and leverages the unique features of the ICP. Some examples of awesome dapps might include SocialFi dapps, where social media interactions are reflected onchain so users own all of their data, decentralized AI dapps, DAO tooling, or multichain infrastructures dapps. +In this track, you can build any dapp that showcases and leverages the unique features of the ICP. Some examples of awesome dapps might include SocialFi dapps, where social media interactions are reflected onchain so users own all of their data, decentralized AI dapps, DAO tooling, or multichain infrastructures dapps. ### Track 2: The buidl Bitcoin track -In this track, showcase how you can take Bitcoin to the next level using ICP's native Bitcoin integration. Develop a project that unlocks the full potential of Bitcoin using ckBTC, a native ICP token that is 1:1 Bitcoin backed. Example dapps could include functionality such as secure login, direct API calls, community-governed canisters, or leverage enormous computational power. +In this track, showcase how you can take Bitcoin to the next level using ICP's native Bitcoin integration. Develop a project that unlocks the full potential of Bitcoin using ckBTC, a native ICP token that is 1:1 Bitcoin backed. Example dapps could include functionality such as secure login, direct API calls, community-governed canisters, or leverage enormous computational power. ### Track 3: GameFi -In the third and final track, you can develop a dapp that provides next-gen web3 gaming to help demonstrate what the future of decentralized gaming looks like. Dapps that include wallet integrations with popular game engines, popular game formats like tower defense or battle royale, or in-game economy functionality are all things we'll be looking for in the submissions! +In the third and final track, you can develop a dapp that provides next-gen web3 gaming to help demonstrate what the future of decentralized gaming looks like. Dapps that include wallet integrations with popular game engines, popular game formats like tower defense or battle royale, or in-game economy functionality are all things we'll be looking for in the submissions! You can learn more or enter your project by heading over to the Devpost website [here](https://awesomeicp.devpost.com/?utm_source=devpost&utm_medium=twitter&utm_campaign=onchainwicp). ## Agent-JS v0.19.0 release -This week, we released a new version of agent-js, `v0.19.0`. +This week, we released a new version of agent-js, `v0.19.0`. In this release, features and enhancements include: -- HttpAgent now uses `https://icp-api.io` as the default host. -- `@noble/hash` has replaced `js-sha256`. This change has resulted in reduced package sizes. +- HttpAgent now uses `https://icp-api.io` as the default host. +- `@noble/hash` has replaced `js-sha256`. This change has resulted in reduced package sizes. - New crypto nonce randomness. -- Nonce generation no longer uses date. +- Nonce generation no longer uses date. For the full release notes, check out the changelog [here](https://github.com/dfinity/agent-js/releases/tag/v0.19.0). diff --git a/blog/news-and-updates/2023-09-27-update.mdx b/blog/news-and-updates/2023-09-27-update.mdx index a26fab3ca4..de90c1fb74 100644 --- a/blog/news-and-updates/2023-09-27-update.mdx +++ b/blog/news-and-updates/2023-09-27-update.mdx @@ -63,12 +63,12 @@ This week, level 2 of the developer journey series was published. To recap, the - Interacting with a service using the command-line terminal. - Interacting with a service using a web browser. -- [2.5: Unit, integration, and end2end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing): Testing code prior to setting it live in production is an important step in the development process. This module covers: +- [2.5: Unit, integration, and end-to-end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing): Testing code prior to setting it live in production is an important step in the development process. This module covers: - Motoko unit testing. - Canister unit testing. - Rust unit testing. - Tests using Light Replica. - - End2end (e2e) testing. + - End-to-end (e2e) testing. - Prerequisites. - Creating a new project. - Setting up the project. diff --git a/blog/news-and-updates/2024-02-14-update.mdx b/blog/news-and-updates/2024-02-14-update.mdx index 3f1d479e91..69033641ed 100644 --- a/blog/news-and-updates/2024-02-14-update.mdx +++ b/blog/news-and-updates/2024-02-14-update.mdx @@ -9,40 +9,40 @@ image: /img/blog/dev-update-blog-feb-14.jpg ![February 14 2024](../../static/img/blog/dev-update-blog-feb-14.jpg) -Hello developers, and welcome to this week's developer weekly update! This week, we have a new `dfx` release, v0.17.0, which introduces a brand new `dfx new` workflow, a new PocketIC release that enables threshold ECDSA testing, and a new community-developed dapp that provides onchain exploring for tokens! Let's get started. +Hello developers, and welcome to this week's developer weekly update! This week, we have a new `dfx` release, v0.17.0, which introduces a brand new `dfx new` workflow, a new PocketIC release that enables threshold ECDSA testing, and a new community-developed dapp that provides onchain exploring for tokens! Let's get started. ## dfx v0.17.0 A new version of `dfx` has been released! This release is exciting because it introduces a new workflow for `dfx new`! -Now, when `dfx new` is used without any flags, an interactive prompt will be displayed that lets you customize what language backend canister you'd like to use, what frontend framework you'd like to use for your frontend canister (or choose 'No frontend canister'), and you can choose additional features to be generated within the project, such as Bitcoin integration functionality or Internet Identity! +Now, when `dfx new` is used without any flags, an interactive prompt will be displayed that lets you customize what language backend canister you'd like to use, what frontend framework you'd like to use for your frontend canister (or choose 'No frontend canister'), and you can choose additional features to be generated within the project, such as Bitcoin integration functionality or Internet Identity! ![dfx new](../../static/img/blog/dfx-new.gif) Additional notable new features in this release include: -- The flag `--specified-id` can be used in the `dfx deploy` and `dfx canister create` commands to create a canister with a specific ID. `specified_id` is also supported in `dfx.json`. +- The flag `--specified-id` can be used in the `dfx deploy` and `dfx canister create` commands to create a canister with a specific ID. `specified_id` is also supported in `dfx.json`. -- Creating canisters on the same subnet as another canister is now supported with the flag `--next-to `. The [registry canister](https://dashboard.internetcomputer.org/canister/rwlgt-iiaaa-aaaaa-aaaaa-cai#get_subnet_for_canister) is used as the source of truth for finding a canister's subnet ID. +- Creating canisters on the same subnet as another canister is now supported with the flag `--next-to `. The [registry canister](https://dashboard.internetcomputer.org/canister/rwlgt-iiaaa-aaaaa-aaaaa-cai#get_subnet_for_canister) is used as the source of truth for finding a canister's subnet ID. - `init_arg` can now be set for canisters in `dfx.json`. -- The `dfx upgrade` command will direct users to install `dfxvm`. +- The `dfx upgrade` command will direct users to install `dfxvm`. You can read the [full release notes on GitHub](https://github.com/dfinity/sdk/releases/tag/0.17.0-beta.1). ## PocketIC v3.0.1 -This week, a new version of PocketIC has been released! This release includes support for testing threshold ECDSA calls by supporting trapping for tECDSA calls. Additional bug fixes are included in this version, such as the `inspect_message` no longer panics if a call is rejected, and the server will now reject JSON files that contain an invalid variant of the SubnetSpec. +This week, a new version of PocketIC has been released! This release includes support for testing threshold ECDSA calls by supporting trapping for tECDSA calls. Additional bug fixes are included in this version, such as the `inspect_message` no longer panics if a call is rejected, and the server will now reject JSON files that contain an invalid variant of the SubnetSpec. You can read the [full release notes on Github](https://github.com/dfinity/pocketic/releases/tag/3.0.1) ## 221Bravo.App - Onchain explorer for ICP and ICRC tokens -[221Bravo.App](https://221bravo.app/) is a new community project that provides a blockchain explorer for ICP and ICRC tokens! The exciting attribute of this app is that it is hosted 100% onchain and fully powered by ICP! +[221Bravo.App](https://221bravo.app/) is a new community project that provides a blockchain explorer for ICP and ICRC tokens! The exciting attribute of this app is that it is hosted 100% onchain and fully powered by ICP! -221Bravo.App can be used to search for things such as principals, accounts, and even Principal.Sub-account records. Data for tokens such as CHAT, SONIC, and OGY are displayed on the app's homepage and can be clicked on to provide detailed information about the token's statistics, mint/burn/transfer rates, transactions, and how many unique accounts hold the token. +221Bravo.App can be used to search for things such as principals, accounts, and even Principal.Sub-account records. Data for tokens such as CHAT, SONIC, and OGY are displayed on the app's homepage and can be clicked on to provide detailed information about the token's statistics, mint/burn/transfer rates, transactions, and how many unique accounts hold the token. ![221Bravo.App](../../static/img/blog/221Bravo.png) diff --git a/blog/news-and-updates/2024-02-21-update.mdx b/blog/news-and-updates/2024-02-21-update.mdx index e6fd6259bf..cfcf904df4 100644 --- a/blog/news-and-updates/2024-02-21-update.mdx +++ b/blog/news-and-updates/2024-02-21-update.mdx @@ -13,7 +13,7 @@ Hello developers, and welcome to this week's developer weekly update! In this we ## Critical security vulnerability in Agent JS v1.0.0 -A critical security vulnerability in Agent JS versions 1.0.0 and older has been identified and patched. This vulnerability had to do with the agent-js library's `Ed25519KeyIdentity.generate` function, which generates an ed25519 key pair with the optional parameter to provide a 32 byte seed value. Due to a recent change in agent-js, this function was altered so that when no seed value was provided, the library generated an insecure seed for key pair generation. The resulting principal was a constant identity that was based on an all-zero private key. With this vulnerability, attackers could steal funds associated with this principal on a ledger or compromise access to canisters controlled by this principal. +A critical security vulnerability in Agent JS versions 1.0.0 and older has been identified and patched. This vulnerability had to do with the agent-js library's `Ed25519KeyIdentity.generate` function, which generates an ed25519 key pair with the optional parameter to provide a 32 byte seed value. Due to a recent change in agent-js, this function was altered so that when no seed value was provided, the library generated an insecure seed for key pair generation. The resulting principal was a constant identity that was based on an all-zero private key. With this vulnerability, attackers could steal funds associated with this principal on a ledger or compromise access to canisters controlled by this principal. The patch for the vulnerability is available in agent-js [v1.0.1](https://github.com/dfinity/agent-js/releases/tag/v1.0.1). It is encouraged that all developers upgrade and deploy their canisters immediately. @@ -27,15 +27,15 @@ The patch for the vulnerability is available in agent-js [v1.0.1](https://github The NFT working group has recently concluded work on the ICRC-7 standard and is looking ahead to the next steps for NFTs on ICP. The group has put together 4 possible new ICRC standards that can be pursued by the working group moving forward: -- ICRC-8: Ledger markets: This standard would define marketplace standards for fungible or non-fungible ledgers, including the data structures and workflows necessary to support other token standards and achieve atomic trades. +- ICRC-8: Ledger markets: This standard would define marketplace standards for fungible or non-fungible ledgers, including the data structures and workflows necessary to support other token standards and achieve atomic trades. -- ICRC-56: Infinitely scalable multi-canister file system: This standard would define parameters for a standard file system that can be used for storing onchain NFT media. +- ICRC-56: Infinitely scalable multi-canister file system: This standard would define parameters for a standard file system that can be used for storing onchain NFT media. -- ICRC-59: Static NFT metadata interface standard: This standard would define a static standard for NFT metadata. +- ICRC-59: Static NFT metadata interface standard: This standard would define a static standard for NFT metadata. -- ICRC-60: Dynamic NFT metadata interface standard: This standard would define a dynamic standard for NFT metadata. +- ICRC-60: Dynamic NFT metadata interface standard: This standard would define a dynamic standard for NFT metadata. -The NFT working group meets every other Tuesday at 5PM CEST. +The NFT working group meets every other Tuesday at 5PM CEST. [Read more and participate in the discussion on the forum](https://forum.dfinity.org/t/nft-working-group-next-steps-icrc-8-icrc-56-icrc-59-icrc-60/27698). @@ -43,7 +43,7 @@ The NFT working group meets every other Tuesday at 5PM CEST. If you're going to ETHDenver, be sure to stop by the ICP booth! Our team will be hosting and participating in some exciting events: -- Our DevRel engineer Jennifer Tran will be joining the [Encode Club panel](https://www.encode.club/denver2024) to cover L2s. +- Our DevRel engineer Jennifer Tran will be joining the [Encode Club panel](https://www.encode.club/denver2024) to cover L2s. - [ICP Hubs Meetup Buidl community and technology](https://lu.ma/icp-denver). @@ -51,7 +51,7 @@ If you're going to ETHDenver, be sure to stop by the ICP booth! Our team will be - [Stop by the booth to participate in one of the ETHDenver bounties!](https://www.ethdenver.com/buidlathon). -Want to learn more or sign up for email updates on these events? [Join the mailing list](https://mailchi.mp/internetcomputer/ethdenver2024) to stay updated! +Want to learn more or sign up for email updates on these events? [Join the mailing list](https://mailchi.mp/internetcomputer/ethdenver2024) to stay updated! That'll wrap up this week. Tune back in next week for more developer updates! diff --git a/blog/news-and-updates/2024-05-01-update.mdx b/blog/news-and-updates/2024-05-01-update.mdx index c1a6de04cd..3c666972aa 100644 --- a/blog/news-and-updates/2024-05-01-update.mdx +++ b/blog/news-and-updates/2024-05-01-update.mdx @@ -17,7 +17,7 @@ Over the past few weeks, the Dev Docs have gotten several new pages, with a heav - [Candid tools](/docs/current/developer-docs/smart-contracts/candid/candid-tools): Learn about how to use `didc`, Candid UI, and `ip-repl`. -- [CanBench](/docs/current/developer-docs/smart-contracts/test/benchmarking): Learn how to benchmark your canister's memory and instruction usage using the `canbench` crate. +- [CanBench](/docs/current/developer-docs/developer-tools/off-chain/canbench): Learn how to benchmark your canister's memory and instruction usage using the `canbench` crate. - Want to take a deep dive into the ETH integration? Check out these new pages on the EVM RPC Canister: diff --git a/blog/news-and-updates/2024-09-11-update.mdx b/blog/news-and-updates/2024-09-11-update.mdx index 4eae31d659..daa1eec9d7 100644 --- a/blog/news-and-updates/2024-09-11-update.mdx +++ b/blog/news-and-updates/2024-09-11-update.mdx @@ -1,6 +1,6 @@ --- title: Developer weekly update September 11, 2024 -description: This week, we're excited to chat about Ed25519 signatures, dfx v0.23.0, and a new community project that's leveraging AI on-chain. +description: This week, we're excited to chat about Ed25519 signatures, dfx v0.23.0, and a new community project that's leveraging AI onchain. tags: [Devs] image: /img/blog/dev-update-blog-sept-11.jpg --- @@ -9,7 +9,7 @@ image: /img/blog/dev-update-blog-sept-11.jpg ![September 11 2024](../../static/img/blog/dev-update-blog-sept-11.jpg) -Hello developers, and welcome to this week's developer weekly update! This week, we're excited to chat about Ed25519 signatures, `dfx v0.23.0`, and a new community project that's leveraging AI on-chain. Let's get started! +Hello developers, and welcome to this week's developer weekly update! This week, we're excited to chat about Ed25519 signatures, `dfx v0.23.0`, and a new community project that's leveraging AI onchain. Let's get started! ## Ed25519 signatures @@ -39,7 +39,7 @@ Check out the [developer preview](https://github.com/domwoe/schnorr_canister) pr ## IChess -An exciting community project using on-chain AI has been announced! IChess showcases how a fully functional LLM can run directly on ICP by providing an app where you can play a game of chess against an AI opponent. The AI is trained on an LLM that interprets chess positions and determines the next optimal move. The project uses the LLaMA2 module and a backend written in C++.  +An exciting community project using onchain AI has been announced! IChess showcases how a fully functional LLM can run directly on ICP by providing an app where you can play a game of chess against an AI opponent. The AI is trained on an LLM that interprets chess positions and determines the next optimal move. The project uses the LLaMA2 module and a backend written in C++. [Learn more about IChess](https://forum.dfinity.org/t/ai-player-on-icp-ichess/34839) or [play a game yourself](https://cirh4-aiaaa-aaaan-qmvqa-cai.icp0.io/)! diff --git a/blog/news-and-updates/team-spotlight-fi.mdx b/blog/news-and-updates/team-spotlight-fi.mdx index 9aef05d99e..ba80db7d36 100644 --- a/blog/news-and-updates/team-spotlight-fi.mdx +++ b/blog/news-and-updates/team-spotlight-fi.mdx @@ -7,7 +7,7 @@ image: /img/blog/dev-update-blog-FI.jpg ![Financial integration team spotlight](../../static/img/blog/dev-update-blog-FI.jpg) -Hello ICP developers and welcome to another DFINITY team spotlight! For this spotlight showcase, we're going to dive into the financial integration team, also known as the team behind the development of ICP ledgers and token standards. With all of the recent ICRC and ckBTC developments, and the upcoming ckETH feature, now is the perfect time to get to know the FI team! Let's get started! +Hello ICP developers and welcome to another DFINITY team spotlight! For this spotlight showcase, we're going to dive into the financial integration team, also known as the team behind the development of ICP ledgers and token standards. With all of the recent ICRC and ckBTC developments, and the upcoming ckETH feature, now is the perfect time to get to know the FI team! Let's get started! **To dive right in, what is the purpose of the Financial Integration team?** @@ -78,7 +78,7 @@ Hello ICP developers and welcome to another DFINITY team spotlight! For this spo *The proliferation of standards on ICP and the creation of a common fungible token standard known as ICRC-1.* **Have there been any improvements made as a direct result of developer feedback?** - + *Plenty of improvements have been made as a result of developer feedback. We also created a working group to meet with the community about improvements and feedback.* **Let's talk about the team's current focus and road map. What is the primary project that the team is working on or focused on currently?** diff --git a/blog/news-and-updates/team-spotlight-ii.mdx b/blog/news-and-updates/team-spotlight-ii.mdx index 037796c43c..7909740289 100644 --- a/blog/news-and-updates/team-spotlight-ii.mdx +++ b/blog/news-and-updates/team-spotlight-ii.mdx @@ -68,7 +68,7 @@ Greetings developers! Welcome to this installment of team spotlight. This week, *The Internet Identity team is one of the few teams at DFINITY that develops a user-facing product as well as APIs for ecosystem developers to use and build with.* -That'll finish off this week's issue of team spotlight! We got some great information about the future of Internet Identity, and I hope everyone is as excited for the roadmap items as I am! +That'll finish off this week's issue of team spotlight! We got some great information about the future of Internet Identity, and I hope everyone is as excited for the roadmap items as I am! We'll see everyone next time! From 88560fa3dbe2e34f85ccba6a94e564d28f786c4d Mon Sep 17 00:00:00 2001 From: reigj1 Date: Wed, 25 Sep 2024 11:28:41 +0200 Subject: [PATCH 49/60] revert changes in docs --- docs/concepts/trust-in-canisters.mdx | 8 +- docs/developer-docs/ai/inference.mdx | 63 ++++ docs/developer-docs/ai/overview.mdx | 10 +- .../daos/sns/tokenomics/sns-checklist.mdx | 2 +- .../daos/sns/tokenomics/tokenomics-intro.mdx | 8 +- docs/developer-docs/defi/dex/overview.mdx | 2 +- .../defi/tokens/ledger/overview.mdx | 18 +- .../tokens/ledger/usage/icp_ledger_usage.mdx | 15 +- .../off-chain/agents/nodejs.mdx | 8 +- .../developer-tools/off-chain/canbench.mdx | 119 +++++++ .../getting-started/overview-of-icp.mdx | 6 +- .../multi-chain/chain-key-tokens/overview.mdx | 2 +- .../multi-chain/faq/user-faq.mdx | 2 +- docs/developer-docs/multi-chain/overview.mdx | 2 +- .../security/security-best-practices/misc.mdx | 2 +- .../advanced-features/simd.mdx | 10 +- .../best-practices/idempotency.mdx | 2 + .../best-practices/reproducible-builds.mdx | 315 ++++++++++++++++++ .../smart-contracts/test/overview.mdx | 70 ++++ .../smart-contracts/test/pocket-ic.mdx | 2 +- docs/references/execution-errors.mdx | 2 +- docs/tutorials/developer-journey/index.mdx | 10 +- .../level-1/1.5-deploying-canisters.mdx | 2 +- .../level-2/2.4-intro-candid.mdx | 2 +- .../level-2/2.5-unit-testing.mdx | 12 +- .../developer-journey/level-2/index.mdx | 6 +- 26 files changed, 642 insertions(+), 58 deletions(-) create mode 100644 docs/developer-docs/ai/inference.mdx create mode 100644 docs/developer-docs/developer-tools/off-chain/canbench.mdx create mode 100644 docs/developer-docs/smart-contracts/best-practices/reproducible-builds.mdx create mode 100644 docs/developer-docs/smart-contracts/test/overview.mdx diff --git a/docs/concepts/trust-in-canisters.mdx b/docs/concepts/trust-in-canisters.mdx index 33b71bebbf..b1c6c1778b 100644 --- a/docs/concepts/trust-in-canisters.mdx +++ b/docs/concepts/trust-in-canisters.mdx @@ -20,11 +20,11 @@ The answer to this question has two separate dimensions: ## Confidence that the canister does what it is supposed to do -The correct behavior of a canister can be checked in two steps. First, inspect the source code used to generate the Wasm code deployed in a canister to ensure that it implements the expected/claimed functionality, and only this functionality. +The correct behavior of a canister can be checked in two steps. First, inspect the source code used to generate the Wasm code deployed in a canister to ensure that it implements the expected/claimed functionality, and only this functionality. -Second, ensure that the Wasm module the canister runs, has indeed been generated from the claimed source code. Here, reproducibility of the build is crucial: the developer should have constructed the Wasm module so that precisely the same Wasm can be rebuilt from scratch. The user can then compare the hash of the rebuilt Wasm module with the module hash reported by ICP. Developers and users can find guidance on ensuring reproducibility in [reproducible canisters](/docs/current/developer-docs/smart-contracts/test/reproducible-builds). +Second, ensure that the Wasm module the canister runs, has indeed been generated from the claimed source code. Here, reproducibility of the build is crucial: the developer should have constructed the Wasm module so that precisely the same Wasm can be rebuilt from scratch. The user can then compare the hash of the rebuilt Wasm module with the module hash reported by ICP. Developers and users can find guidance on ensuring reproducibility in [reproducible canisters](/docs/current/developer-docs/smart-contracts/best-practices/reproducible-builds). -Additionally, developers can utilize the [canister history](/docs/current/developer-docs/smart-contracts/maintain/history) feature to track changes to the canister's Wasm module hash. +Additionally, developers can utilize the [canister history](/docs/current/developer-docs/smart-contracts/maintain/history) feature to track changes to the canister's Wasm module hash. ## Confidence that the canister behavior will not unexpectedly change @@ -54,6 +54,6 @@ Finally, a somewhat more useful solution is to pass control of the canister to a ## Sole control by NNS and other governance -A more complex, but powerful approach, is to set the sole controller of the canister to a distributed governance mechanism. In this case, the NNS still has ultimate control over the canister, even though it is not explicitly in the controller list. The advantage is that the more specific governance mechanism can be more focused on the canister. One can imagine different levels of complexity and control that such a governance mechanism may implement. An example is the (upcoming) [SNS feature](https://medium.com/dfinity/how-the-service-nervous-system-sns-will-bring-tokenized-governance-to-onchain-dapps-b74fb8364a5c) which allows developers to set the controller of their canister to some governing canister. +A more complex, but powerful approach, is to set the sole controller of the canister to a distributed governance mechanism. In this case, the NNS still has ultimate control over the canister, even though it is not explicitly in the controller list. The advantage is that the more specific governance mechanism can be more focused on the canister. One can imagine different levels of complexity and control that such a governance mechanism may implement. An example is the (upcoming) [SNS feature](https://medium.com/dfinity/how-the-service-nervous-system-sns-will-bring-tokenized-governance-to-on-chain-dapps-b74fb8364a5c) which allows developers to set the controller of their canister to some governing canister. Needless to say, the trust requirements are moved to the SNS controlling the canister where all of the considerations regarding code inspection and reproducibility apply. diff --git a/docs/developer-docs/ai/inference.mdx b/docs/developer-docs/ai/inference.mdx new file mode 100644 index 0000000000..0c895e42d8 --- /dev/null +++ b/docs/developer-docs/ai/inference.mdx @@ -0,0 +1,63 @@ +--- +keywords: [intermediate, concept, AI, ai, deAI, deai] +--- + +import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; + +# Decentralized AI inference + + + + +## Overview + +Inference in the context of decentralized AI refers to using a trained model to draw conclusions about new data. +It's possible for canister smart contracts to run inference in a number of ways depending on the decentralization and performance requirements. + +Canisters can utilize inference run on-chain, on-device, or through HTTPS outcalls. + +## Inference on-chain + +Currently, ICP supports on-chain inference of small models using AI libraries such as [Sonos Tract](https://github.com/sonos/tract) that compile to WebAssembly. +Check out the [image classification example](/docs/current/developer-docs/ai/ai-on-chain) to learn how it works. + +### Examples + +- [GPT2](https://github.com/modclub-app/rust-connect-py-ai-to-ic/tree/main/internet_computer/examples/gpt2): An example of GPT2 running on-chain using Rust. +- [ELNA AI](https://github.com/elna-ai): A fully on-chain AI agent platform and marketplace. Supports both on-chain and off-chain LLMs. [Try it here](https://dapp.elna.ai/). +- [Tensorflow on ICP](https://github.com/carlosarturoceron/decentAI): An Azle example that uses TypeScript and a pre-trained model for making predictions. +- [ICGPT](https://github.com/icppWorld/icgpt): A React frontend that uses a C/C++ backend running an LLM fully on-chain. [Try it here](https://icgpt.icpp.world/). +- [ArcMind AI](https://github.com/arcmindai/arcmindai): An autonomous agent written in Rust using chain of thoughts for reasoning and actions. [Try it here](https://arcmindai.app). + +### On-chain inference frameworks + +- [Sonos Tract](https://github.com/sonos/tract): An open-source AI inference engine written in Rust that supports ONNX, TensorFlow, and PyTorch models, and compiles to WebAssembly. +- [MotokoLearn](https://github.com/ildefons/motokolearn): A Motoko package that enables on-chain machine learning. + [The image classification example](https://github.com/dfinity/examples/tree/master/rust/image-classification) explains how to integrate it into a canister to run on ICP. +- [Rust-Connect-Py-AI-to-IC](https://github.com/jeshli/rust-connect-py-ai-to-ic): Open-source tool for deploying and running Python AI models on-chain using Sonos Tract. +- [Burn](https://github.com/tracel-ai/burn): An open-source deep learning framework written in Rust that supports ONNX, and PyTorch models, and compiles to WebAssembly. + [The MNIST example](https://github.com/smallstepman/ic-mnist) explains how to integrate it into a canister to run on ICP. [Try it here](https://jsi2g-jyaaa-aaaam-abnia-cai.icp0.io/). +- [Candle](https://github.com/huggingface/candle): a minimalist ML framework for Rust that compiles to WebAssembly. + [An AI chatbot example](https://github.com/ldclabs/ic-panda/tree/main/src/ic_panda_ai) shows how to run a Qwen 0.5B model in a canister on ICP. + + +## Inference on-device + +An alternative to running the model on-chain would be to download the model from a canister, then run the inference on the local device. If the user trusts their own device, then they can trust that the inference ran correctly. + +A disadvantage of this workflow is that the model needs to be downloaded to the user's device, resulting in less confidentiality of the model and decreased user experience due to increased latency. + +ICP supports this workflow for most existing models because a smart contract on ICP can store models up to 400GiB. + +### Examples + + - [DeVinci](https://github.com/patnorris/DecentralizedAIonIC): An in-browser AI chatbot that uses an open-source LLM model served from ICP. [Try it here](https://x6occ-biaaa-aaaai-acqzq-cai.icp0.io/). + + +## Inference with HTTP calls + +Smart contracts running on ICP can make [HTTP requests through HTTP outcalls](/docs/current/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview) to Web2 services including OpenAI and Claude. + +### Examples + +- [Juno + OpenAI](https://github.com/peterpeterparker/juno-openai): An example using Juno and OpenAI to generate images from prompts. [Try it here](https://pycrs-xiaaa-aaaal-ab6la-cai.icp0.io/). diff --git a/docs/developer-docs/ai/overview.mdx b/docs/developer-docs/ai/overview.mdx index 527354754e..f8e3de0252 100644 --- a/docs/developer-docs/ai/overview.mdx +++ b/docs/developer-docs/ai/overview.mdx @@ -33,7 +33,7 @@ Inference happens on the user's device after downloading the model. If the user trusts their own device, then they can trust that the inference ran correctly. A disadvantage here is that the model needs to be downloaded to the user's device with corresponding drawbacks of less confidentiality of the model and decreased user experience due to increased latency. ICP supports this use case for practically all existing models because a smart contract on ICP can store models up to 400GiB. -See [an example]((https://github.com/patnorris/DecentralizedAIonIC) of an in-browser AI chatbot that uses an open-source LLM model served from ICP. +See [an example](https://github.com/patnorris/DecentralizedAIonIC) of an in-browser AI chatbot that uses an open-source LLM model served from ICP. 4. **Tokenization, marketplaces, orchestration**: This refers to using smart contracts as the tokenization, marketplace, and orchestration layer for AI models and AI hardware. @@ -65,6 +65,8 @@ Currently, ICP supports onchain inference of small models using AI libraries suc Check out the [image classification example](/docs/current/developer-docs/ai/ai-on-chain) to learn how it works. The long-term [vision of DeAI on ICP](https://internetcomputer.org/roadmap#Decentralized%20AI-start) is to support onchain GPU compute to enable both training and inference of larger models. +You can learn more about running AI inference on ICP [here](./inference.mdx). + ## Technical working group: DeAI A technical working group dedicated to discussing decentralized AI and related projects meets bi-weekly on Thursdays at 5pm UTC. You can join via the [community Discord server](https://discord.gg/jnjVVQaE2C). @@ -89,12 +91,12 @@ Several community projects that showcase how to use AI on ICP are available. - [Vectune](https://github.com/ClankPan/Vectune): Vectune is a lightweight VectorDB with incremental indexing, based on FreshVamana written in Rust. See [a forum post](https://forum.dfinity.org/t/worlds-largest-web3-vector-database/33309) that explains how it works. -- [Client-Vector-Search](https://github.com/yusufhilmi/client-vector-search): Client-Vector-Search is a client side vector search library that can embed, store, search, and cache vectors. - [Cipher-AI-Vault](https://forum.dfinity.org/t/introducing-cipher-ai-vault-a-fully-sandboxed-ai-demo-w-memory/34803) has a [working example](https://github.com/supaIC/Cipher-AI-Vault/tree/main/frontend/frontend/hooks/client-vector-search) of the library running in an ICP canister. +- [Client-Vector-Search](https://github.com/yusufhilmi/client-vector-search): Client-Vector-Search is a client side vector search library that can embed, store, search, and cache vectors. + [Cipher-AI-Vault](https://forum.dfinity.org/t/introducing-cipher-ai-vault-a-fully-sandboxed-ai-demo-w-memory/34803) has a [working example](https://github.com/supaIC/Cipher-AI-Vault/tree/main/frontend/frontend/hooks/client-vector-search) of the library running in an ICP canister. #### Developed on ICP - [ArcMind Vector DB](https://github.com/arcmindai/arcmindvector): A vector database that supports text, image, and audio embedding. -- [KinicDAO Vector DB](https://xcvai-qiaaa-aaaak-afowq-cai.icp0.io/): A high-performance, completely onchain, tamper-proof vector database specifically built for decentrlized apps. +- [KinicDAO Vector DB](https://xcvai-qiaaa-aaaak-afowq-cai.icp0.io/): A high-performance, completely onchain, tamper-proof vector database specifically built for decentrlized apps. - [Blueband](https://github.com/highfeast/ic-use-blueband-db): A vector database built based on [Vectra](https://www.vectra.ai/), a local vector database for [Node.js](https://nodejs.org/en). See their [forum post](https://forum.dfinity.org/t/blueband-vector-database/33934) for additional details on how it works and demos. - [ELNA Vector DB](https://github.com/elna-ai/elna-vector-db): An open-source and fully onchain vector database and vector similarity search engine primarily used to power the [ELNA.ai](https://elna.ai/) application. diff --git a/docs/developer-docs/daos/sns/tokenomics/sns-checklist.mdx b/docs/developer-docs/daos/sns/tokenomics/sns-checklist.mdx index 12c499819a..364a7d5b29 100644 --- a/docs/developer-docs/daos/sns/tokenomics/sns-checklist.mdx +++ b/docs/developer-docs/daos/sns/tokenomics/sns-checklist.mdx @@ -91,7 +91,7 @@ If the dapp is not already open sourced, it should be open sourced before the SN ## 2.3. Create reproducible build It should be possible to create a reproducible build from the open sourced code, for the same reasons as open sourcing the code. Providing the build and deploy instructions enables the community to evaluate the dapp and the code before voting on the SNS launch proposal, and after the decentralization, where upgrades must be voted on, the upgrades can be verified and tested by the community before voting. -Provide the build and deploy instructions with the source code. Ideally the instructions are a part of the code repository README file, and if that’s not the case, a link to the instructions should be available in the README file. In order to be able to create a reproducible build, the build environment needs to be reproducible. The [documentation](/docs/current/developer-docs/smart-contracts/test/reproducible-builds) provides more information how reproducible builds can be created using Docker. +Provide the build and deploy instructions with the source code. Ideally the instructions are a part of the code repository README file, and if that’s not the case, a link to the instructions should be available in the README file. In order to be able to create a reproducible build, the build environment needs to be reproducible. The [documentation](/docs/current/developer-docs/smart-contracts/best-practices/reproducible-builds) provides more information how reproducible builds can be created using Docker. ## 2.4. Test dapp operations under SNS on mainnet with SNS testflight Before requesting an SNS launch in production, developers are strongly encouraged to test their deployed dapp’s operation (e.g., upgrading the dapp’s canisters) via SNS proposals, as if the live version of the dapp was managed by SNS. diff --git a/docs/developer-docs/daos/sns/tokenomics/tokenomics-intro.mdx b/docs/developer-docs/daos/sns/tokenomics/tokenomics-intro.mdx index c7d700f53f..6ab9a82ef8 100644 --- a/docs/developer-docs/daos/sns/tokenomics/tokenomics-intro.mdx +++ b/docs/developer-docs/daos/sns/tokenomics/tokenomics-intro.mdx @@ -72,9 +72,11 @@ For the initial token allocation, i.e., defining which groups/accounts should re * **Seed funders**: distribution to funders (if you choose to have them) who invested in the project prior to the launch of the DAO. * **Funding development team**: developers who created the initial version of the DAO. -To emphasize the decentralization of the DAO from the start, developers can send a strong signal by: -* Allocating a significant part of the tokens to the DAO treasury, allowing the treasury to incentivize and reward users over time. -* Ensure that the amount of tokens allocated to the decentralization swap is bigger than the amount allocated to seed funders and the funding development team. +To facilitate a healthy DAO from the start, developers should: +* Allocate at least as many tokens to the decentralization swap as granted to the seed funders and the funding development team. + * This condition is currently enforced at the time of SNS initialization. +* Allocate a significant part of the tokens to the DAO treasury, allowing the treasury to incentivize and reward users over time. + * This is currently just a recommendation. ### Voting power and decentralization The voting power should be distributed over many, independent entities such that there is not one single or a few entities that can decide by themselves how the DAO evolves. diff --git a/docs/developer-docs/defi/dex/overview.mdx b/docs/developer-docs/defi/dex/overview.mdx index 9458704d08..7f396784ba 100644 --- a/docs/developer-docs/defi/dex/overview.mdx +++ b/docs/developer-docs/defi/dex/overview.mdx @@ -51,7 +51,7 @@ Moreover, the following DEXes have open-sourced their entire codebase for you to The following code samples demonstrate implementing a decentralized exchange on ICP: -- DEX using DIP-20 tokens on ICP in [Motoko](https://github.com/dfinity/examples/tree/master/rust/defi) and [Rust](https://github.com/dfinity/examples/tree/master/motoko/defi). +- DEX using DIP-20 tokens on ICP in [Motoko](https://github.com/dfinity/examples/tree/master/rust/defi) and [Rust](https://github.com/dfinity/examples/tree/master/motoko/defi). :::info Please note that DIP-20 has been replaced by ICRC-2 and is not recommended for the deployment of new tokens. diff --git a/docs/developer-docs/defi/tokens/ledger/overview.mdx b/docs/developer-docs/defi/tokens/ledger/overview.mdx index faad41f1c8..3700da07a1 100644 --- a/docs/developer-docs/defi/tokens/ledger/overview.mdx +++ b/docs/developer-docs/defi/tokens/ledger/overview.mdx @@ -5,27 +5,27 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; # Ledger overview -In this section, you will learn about the different types of ledgers that exist on the Internet Computer. This guide will go into detail about what the different ledgers are, what their purposes are, and how they differ from ledgers you may be familiar with from other blockchains.  +In this section, you will learn about the different types of ledgers that exist on the Internet Computer. This guide will go into detail about what the different ledgers are, what their purposes are, and how they differ from ledgers you may be familiar with from other blockchains. ## ICP ledger The ICP ledger is a canister that is responsible for keeping track of ICP balances, processing new transactions, and providing clients with data about the history of transactions. It stores all data onchain. For every transaction, a single block is created, which points to its parent block by storing the parent block's hash. -The ICP ledger uses `AccountIdentifiers` as its internal account representation. It is compatible with the ICRC-1 standard; however, due to the fact that it uses `AccountIdentifiers` instead of `Accounts'` it stores information in a different block format than ICRC-1 ledgers. The same is true for the minting account of the ICP ledger.  +The ICP ledger uses `AccountIdentifiers` as its internal account representation. It is compatible with the ICRC-1 standard; however, due to the fact that it uses `AccountIdentifiers` instead of `Accounts'` it stores information in a different block format than ICRC-1 ledgers. The same is true for the minting account of the ICP ledger. -It runs on the NNS subnet, as it is part of the NNS, and its controller is the governance canister. Upgrades to the ICP ledger have to be approved by the NNS, making the process decentralized.  +It runs on the NNS subnet, as it is part of the NNS, and its controller is the governance canister. Upgrades to the ICP ledger have to be approved by the NNS, making the process decentralized. ## ICRC-1 ledgers -ICRC-1 ledgers are a standardized version of ledgers on the Internet Computer. While [ICRC-1](/docs/current/developer-docs/defi/tokens/token-standards) is the network standard defining how ledger canisters should behave, an ICRC-1 ledger is a single implementation of the ICRC-1 standard. It differs from the ICP ledger as it uses `Accounts` as its internal representation.  +ICRC-1 ledgers are a standardized version of ledgers on the Internet Computer. While [ICRC-1](/docs/current/developer-docs/defi/tokens/token-standards) is the network standard defining how ledger canisters should behave, an ICRC-1 ledger is a single implementation of the ICRC-1 standard. It differs from the ICP ledger as it uses `Accounts` as its internal representation. -ICRC-1 ledgers are stand-alone implementations, but in many cases, they are part of a larger software structure, such as an SNS or chain-key token implementation.  +ICRC-1 ledgers are stand-alone implementations, but in many cases, they are part of a larger software structure, such as an SNS or chain-key token implementation. ## Differences from other blockchains -One of the biggest differences between ledgers deployed on ICP and ledgers deployed on other blockchains is that most account-based blockchains have the balances of accounts baked into their base protocol (e.g., Ethereum). This is not the case with either the ICP or ICRC-1 ledgers.  +One of the biggest differences between ledgers deployed on ICP and ledgers deployed on other blockchains is that most account-based blockchains have the balances of accounts baked into their base protocol (e.g., Ethereum). This is not the case with either the ICP or ICRC-1 ledgers. -The ICP ledger canister sits on the application layer of the network rather than the protocol level. Consensus on the Internet Computer is independent of the existence of the ICP ledger. Nevertheless, the ICP ledger is fundamentally important to the way the network functions, especially due to its importance as a part of the NNS.  +The ICP ledger canister sits on the application layer of the network rather than the protocol level. Consensus on the Internet Computer is independent of the existence of the ICP ledger. Nevertheless, the ICP ledger is fundamentally important to the way the network functions, especially due to its importance as a part of the NNS. -Since the ICP ledger runs on the application layer, transfers of the ICP token do not happen at the protocol level as they do on other chains. All ICP token transactions go through this canister. Any information gathered about historic ICP token transactions originates from the ICP ledger canister. This includes the ICP index canister, which fetches blocks periodically from the ICP ledger canister.  +Since the ICP ledger runs on the application layer, transfers of the ICP token do not happen at the protocol level as they do on other chains. All ICP token transactions go through this canister. Any information gathered about historic ICP token transactions originates from the ICP ledger canister. This includes the ICP index canister, which fetches blocks periodically from the ICP ledger canister. -ICRC-1 ledgers are very similar in this regard; however, they resemble tokens that can often be found on other blockchains more closely. They are also run by a canister that runs the ICRC-1 ledger code, and all transactions of the ICRC-1 token go through an ICRC-1 ledger canister.  +ICRC-1 ledgers are very similar in this regard; however, they resemble tokens that can often be found on other blockchains more closely. They are also run by a canister that runs the ICRC-1 ledger code, and all transactions of the ICRC-1 token go through an ICRC-1 ledger canister. diff --git a/docs/developer-docs/defi/tokens/ledger/usage/icp_ledger_usage.mdx b/docs/developer-docs/defi/tokens/ledger/usage/icp_ledger_usage.mdx index b2bf132f8b..b79423601f 100644 --- a/docs/developer-docs/defi/tokens/ledger/usage/icp_ledger_usage.mdx +++ b/docs/developer-docs/defi/tokens/ledger/usage/icp_ledger_usage.mdx @@ -101,15 +101,28 @@ This command returns the ICP decimals: ``` (record { decimals = 8 : nat32 }) ``` +To handle a growing number of transactions within limited canister memory, a new archive canister is created when the history exceeds a threshold, migrating older transactions to it. To fetch the archives of the ICP ledger: ``` dfx canister call ryjl3-tyaaa-aaaaa-aaaba-cai archives '()' ``` -This command returns the ICP archives. In this case no archives have been created so far: +If you are testing locally, no archive canisters should have been created yet: ``` (record { archives = vec {} }) ``` +However, if you are testing on mainnet, the following archive canisters have been created as of the time of writing this document: +``` +( + record { + archives = vec { + record { canister_id = principal "qjdve-lqaaa-aaaaa-aaaeq-cai" }; + record { canister_id = principal "qsgjb-riaaa-aaaaa-aaaga-cai" }; + record { canister_id = principal "q4eej-kyaaa-aaaaa-aaaha-cai" }; + }; + }, +) +``` To send tokens to the `AccountIdentifier` `d52f7f2b7277f025bcaa5c90b10d122274faba289` you can use the following commands. You will need to derive the `AccountIdentifier` by getting the principal first: ``` diff --git a/docs/developer-docs/developer-tools/off-chain/agents/nodejs.mdx b/docs/developer-docs/developer-tools/off-chain/agents/nodejs.mdx index a1d5b1745f..dd6329f544 100644 --- a/docs/developer-docs/developer-tools/off-chain/agents/nodejs.mdx +++ b/docs/developer-docs/developer-tools/off-chain/agents/nodejs.mdx @@ -162,7 +162,7 @@ You can view a full example using this library with a [Rust](https://github.com/ ## Testing -To create an end2end (e2e) test for your project's backend canister using `agent-js`, first create a new test file in your project's `src/tests/` subdirectory. Name the file `e2e_tests_backend.test.ts`, then insert the following content: +To create an end-to-end (e2e) test for your project's backend canister using `agent-js`, first create a new test file in your project's `src/tests/` subdirectory. Name the file `e2e_tests_backend.test.ts`, then insert the following content: ```ts @@ -185,7 +185,7 @@ This test will do the following: This test is written for the [default backend canister](/docs/current/developer-docs/getting-started/default-template). -To run this test, you will need to deploy your project and generate the necessary declarations for your canister. [Learn more about creating and deploying a project](https://internetcomputer.org/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing#end2end-e2e-testing). +To run this test, you will need to deploy your project and generate the necessary declarations for your canister. [Learn more about creating and deploying a project](https://internetcomputer.org/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing#end-to-end-e2e-testing). Once you have deployed your canisters and generated the declarations, run your test with the command: @@ -209,7 +209,7 @@ The test should be successful and return output such as:        press h to show help, press q to quit ``` -Learn more about [testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing) with an agent and [view a more complex test example](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing#end2end-e2e-testing). +Learn more about [testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing) with an agent and [view a more complex test example](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing#end-to-end-e2e-testing). ## NFT example @@ -359,4 +359,4 @@ main(); - [ic-websocket-js](https://www.npmjs.com/package/ic-websocket-js) -- [End to end testing](https://internetcomputer.org/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing#end2end-e2e-testing) \ No newline at end of file +- [End to end testing](https://internetcomputer.org/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing#end-to-end-e2e-testing) \ No newline at end of file diff --git a/docs/developer-docs/developer-tools/off-chain/canbench.mdx b/docs/developer-docs/developer-tools/off-chain/canbench.mdx new file mode 100644 index 0000000000..b134bf5e52 --- /dev/null +++ b/docs/developer-docs/developer-tools/off-chain/canbench.mdx @@ -0,0 +1,119 @@ +--- +keywords: [intermediate, benchmark, test, bench mark, canbench] +--- + +import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; + +# Canbench + + + +## Overview + +Canisters deployed on ICP use resources such as memory and compute. Resources are finite, and there are limits configured that restrict how many resources a canister may consume. The `canbench` Rust crate provides a way to benchmark a canister's resources so developers can gain an insight into how their canister uses memory, instructions, and other resources. + +`canbench` can be used to provide information such as: + +- Insight into how a canister consumes stable memory, heap memory, and instructions. + +- Detecting possible performance regressions, both locally or on the mainnet. + +- Analyzing performance bottlenecks. + +Features of `canbench` include: + +- Supports benchmarks that are up to 10 trillion instructions. + +- Reports the number of instructions consumed alongside changes to stable and heap memories. + +- Persistence of benchmarking results in your canister's repo. + +- Language agnostic, though initially only support for Rust exists. + +## Installation + +You can install `canbench` using [cargo](https://crates.io/). + +```bash +cargo install canbench +``` + +Add an optional dependency for `canbench` in your `Cargo.toml` file: + +``` title="Cargo.toml" +canbench_rs = { version = "0.1.1", optional = true } +``` + +Then, edit the `canbench.yml` file to point to your canister's Wasm file: + +```yml title="canbench.yml" +build_cmd: + cargo build --release --target wasm32-unknown-unknown --features canbench-rs + +wasm_path: + ./target/wasm32-unknown-unknown/release/.wasm +``` + +## Example benchmark test + +Below is an example canister that uses a `query` function to compute and return the fibonacci sequence of a given number: + +```rust title="src/example_backend/src/lib.rs" +#[ic_cdk::query] +fn fibonacci(n: u32) -> u32 { + if n == 0 { + return 0; + } else if n == 1 { + return 1; + } + + let mut a = 0; + let mut b = 1; + let mut result = 0; + + for _ in 2..=n { + result = a + b; + a = b; + b = result; + } + + result +} +``` + +An example benchmark test using `canbench` for this canister could look like this: + +``` +#[cfg(feature = "canbench-rs")] +mod benches { + use super::*; + use canbench_rs::bench; + + + #[bench] + fn fibonacci_20() { + // NOTE: the result is printed to prevent the compiler from optimizing the call away. + println!("{:?}", fibonacci(20)); + } +} +``` + +The benchmark output of this test would resemble the following: + +``` +canbench + +--------------------------------------------------- + +Benchmark: fibonacci_20 (new) + total: + instructions: 2301 (new) + heap_increase: 0 pages (new) + stable_memory_increase: 0 pages (new) + +--------------------------------------------------- + +Executed 1 of 1 benchmarks. +``` + +For more examples and information, view the [crate's documentation](https://docs.rs/canbench-rs) or the [GitHub repo for this crate](https://github.com/dfinity/canbench/tree/main). diff --git a/docs/developer-docs/getting-started/overview-of-icp.mdx b/docs/developer-docs/getting-started/overview-of-icp.mdx index 8041cbbea4..1b3a011e7c 100644 --- a/docs/developer-docs/getting-started/overview-of-icp.mdx +++ b/docs/developer-docs/getting-started/overview-of-icp.mdx @@ -211,9 +211,9 @@ Currently, subnets contain between 13 and 40 nodes, and most of them are geograp - Onchain Web3 - - - Yes +  Onchain Web3 +  - +  Yes diff --git a/docs/developer-docs/multi-chain/chain-key-tokens/overview.mdx b/docs/developer-docs/multi-chain/chain-key-tokens/overview.mdx index 10db56c197..2e733be519 100644 --- a/docs/developer-docs/multi-chain/chain-key-tokens/overview.mdx +++ b/docs/developer-docs/multi-chain/chain-key-tokens/overview.mdx @@ -42,7 +42,7 @@ The current chain-key tokens are supported: - [ckETH](./cketh/overview.mdx): A 1:1 digital twin of Ethereum. -- [ckERC20 tokens](./ckerc20/overview.mdx) such as ckLINK, ckPEPE, and ckUSDC. +- [ckERC20 tokens](./ckerc20/overview.mdx) such as ckLINK, ckPEPE, and ckUSDC. ## Further reading diff --git a/docs/developer-docs/multi-chain/faq/user-faq.mdx b/docs/developer-docs/multi-chain/faq/user-faq.mdx index b3e80fce86..ffe793b6f4 100644 --- a/docs/developer-docs/multi-chain/faq/user-faq.mdx +++ b/docs/developer-docs/multi-chain/faq/user-faq.mdx @@ -171,4 +171,4 @@ Yes! Please see documentation here on using Ledger Nanos and other hardware wall - [Swapping between tokens](/docs/current/tutorials/hackathon-prep-course/integrating-with-tokens#swapping-between-tokens) - [Team spotlight - Financial integration](https://internetcomputer.org/blog/news-and-updates/team-spotlight-fi) - [The Internet Computer blockchain privacy advantages](https://medium.com/dfinity/the-internet-computer-blockchains-privacy-advantages-73340c6c42db#6ec2) -- [Withdrawing ckETH](https://github.com/timohanke/ic/blob/d34903fc2c41e2cff5df86248628f5d0b4fd7168/rs/ethereum/cketh/minter/README.adoc#withdrawal-cketh-to-eth) \ No newline at end of file +- [Withdrawing ckETH](https://github.com/timohanke/ic/blob/d34903fc2c41e2cff5df86248628f5d0b4fd7168/rs/ethereum/cketh/minter/README.adoc#withdrawal-cketh-to-eth) diff --git a/docs/developer-docs/multi-chain/overview.mdx b/docs/developer-docs/multi-chain/overview.mdx index 02c7b002e5..7f120c90b3 100644 --- a/docs/developer-docs/multi-chain/overview.mdx +++ b/docs/developer-docs/multi-chain/overview.mdx @@ -155,7 +155,7 @@ actor { fromBlock = ? #Finalized; toBlock = ? #Finalized; //dummy topics to look at. Replace with topics of interest - topics = ?[["topic1", "topic2"]]; + topics = ?[["topic1", "topic2"]]; }, ); switch log { diff --git a/docs/developer-docs/security/security-best-practices/misc.mdx b/docs/developer-docs/security/security-best-practices/misc.mdx index b5777af419..3741f3f8e2 100644 --- a/docs/developer-docs/security/security-best-practices/misc.mdx +++ b/docs/developer-docs/security/security-best-practices/misc.mdx @@ -248,7 +248,7 @@ It should be possible to verify that a canister does what it claims to do. ICP p ### Recommendation -Make canister builds reproducible. See this [recommendation](https://mmapped.blog/posts/01-effective-rust-canisters.html#reproducible-builds) (from [effective Rust canisters](https://mmapped.blog/posts/01-effective-rust-canisters.html)). See also the [developer docs on this](/docs/current/developer-docs/smart-contracts/test/reproducible-builds). +Make canister builds reproducible. See this [recommendation](https://mmapped.blog/posts/01-effective-rust-canisters.html#reproducible-builds) (from [effective Rust canisters](https://mmapped.blog/posts/01-effective-rust-canisters.html)). See also the [developer docs on this](/docs/current/developer-docs/smart-contracts/best-practices/reproducible-builds). ## Don’t rely on time being strictly monotonic diff --git a/docs/developer-docs/smart-contracts/advanced-features/simd.mdx b/docs/developer-docs/smart-contracts/advanced-features/simd.mdx index c9f5e76fe7..aa7e0e87fd 100644 --- a/docs/developer-docs/smart-contracts/advanced-features/simd.mdx +++ b/docs/developer-docs/smart-contracts/advanced-features/simd.mdx @@ -2,11 +2,11 @@ keywords: [advanced, concept, simd, ai, performance, computations] --- -import TabItem from "@theme/TabItem"; -import useBaseUrl from "@docusaurus/useBaseUrl"; -import { AdornedTabs } from "/src/components/Tabs/AdornedTabs"; -import { AdornedTab } from "/src/components/Tabs/AdornedTab"; -import { BetaChip } from "/src/components/Chip/BetaChip"; +import TabItem from "@theme/TabItem"; +import useBaseUrl from "@docusaurus/useBaseUrl"; +import { AdornedTabs } from "/src/components/Tabs/AdornedTabs"; +import { AdornedTab } from "/src/components/Tabs/AdornedTab"; +import { BetaChip } from "/src/components/Chip/BetaChip"; import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; # WebAssembly SIMD diff --git a/docs/developer-docs/smart-contracts/best-practices/idempotency.mdx b/docs/developer-docs/smart-contracts/best-practices/idempotency.mdx index bd449af9d8..7d81422115 100644 --- a/docs/developer-docs/smart-contracts/best-practices/idempotency.mdx +++ b/docs/developer-docs/smart-contracts/best-practices/idempotency.mdx @@ -56,6 +56,8 @@ Moreover, the ICP/ICRC ledgers use the `created_at_time` parameter to limit the But even with this improvement used in the ledgers, the time window approach implicitly assumes that the client will be able to get a definite answer to their call within the time window. For example, after the 24 hours expire, the user cannot easily tell if their ledger transfer happened; their only option is to analyze the ledger blocks, which is somewhat tedious, and has to be done carefully to avoid asynchrony issues; see the section on [queryable call results](#queryable-call-results). +Relying solely on a time window for deduplication does not guarantee bounded memory usage. In theory, an unlimited number of updates could occur within the time window, though in practice, this is constrained by the scaling limits of the ICP. The ICP/ICRC ledgers thus also define a maximum capacity: a limit on the number of deduplicated transactions (i.e., deduplication IDs) that can be stored in their deduplication store. Once this capacity is reached, further transactions are rejected until older transactions expire from the deduplication store at the end of the time window. Yet another extension of the approach is to guaranteed deduplication for the stated time window as above, but keep storing deduplication IDs even beyond that window, as long as the capacity is not reached. This way, the clients obtain a hard deduplication guarantee for the time window, and a best-effort attempt to deduplicate transactions even past the window. + An alternative is to do away with the time window, and store the deduplication data forever. This requires multiple canisters to prevent exhausting the canister memory, similar to how the ICP/ICRC ledgers store the transaction data in the archive canister. This shifts the tedious part of querying the deduplication data (e.g., ledger blocks) from the user to the canister. Summarizing, the advantages of this approach are: diff --git a/docs/developer-docs/smart-contracts/best-practices/reproducible-builds.mdx b/docs/developer-docs/smart-contracts/best-practices/reproducible-builds.mdx new file mode 100644 index 0000000000..6d09213129 --- /dev/null +++ b/docs/developer-docs/smart-contracts/best-practices/reproducible-builds.mdx @@ -0,0 +1,315 @@ +--- +keywords: [intermediate, test, tutorial, reproducible, reproducible builds] +--- + + +import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + +# Reproducible builds + + + +## Overview + +If you are using a canister that you did not develop yourself, you may want to verify that the canister is running the code that you expect it to be before giving it control to make important decisions for you, such as accepting ICP for a payment. Verifying a canister's code requires confirming that the Wasm module is the correct result of compiling the canister source code and that the canister is in fact running that Wasm module and not another Wasm module. + +It is therefore recommended that canister authors ensure trusted and [reproducible builds](https://reproducible-builds.org/docs/definition/) of the Wasm module are possible from their source code. Such builds allow anyone to follow the same steps as the canister authors and yield the exact same Wasm module, which can then be compared to the Wasm module executing on ICP. + +## Considerations for developers + +When developing code meant to be reproducible, it is recommended to use [Docker or a similar technology](#build-environments-using-docker) to conveniently set up the operating system and the build tools and fix their versions for the user. If the build tools you are using don’t guarantee fully reproducible builds, Docker can also help by minimizing the differences in paths, environment variables, etc. The build tools and the base Docker image should be sourced from somewhere that the user can trust. Ideally, you want to minimize the number of dependencies, as the user may have to rebuild all of your dependencies to properly reproduce your build. + +However, build tools aren’t perfect, and may fail to ensure reproducible builds. If reproducibility is critical for your canister (e.g., it holds other users' funds), [test it](#testing-reproducibility). + +## Obtaining the Wasm module hash + +ICP does not allow you to access the Wasm module of an arbitrary canister. This is a design decision, as developers might want to keep some code private. However, ICP does allow anyone to access the SHA-256 of the Wasm module. + +To obtain this hash, you must first note the principal of the canister whose code you want to check. For example, to check the code of the Internet Identity canister, the principal is `rdmx6-jaaaa-aaaaa-aaadq-cai`. Then, the easiest way to access this data is using [`dfx`](docs/current/developer-docs/getting-started/install/) from a command line using the following command: + +```bash +dfx canister --network ic info rdmx6-jaaaa-aaaaa-aaadq-cai +``` + +This will return the controller(s) of the canister and the Wasm module hash: + +``` +Controllers: r7inp-6aaaa-aaaaa-aaabq-cai +Module hash: 0x86ab08ea53e4da5bba4f27baa931e2edc5ab2a1f228c204a5340992c16389f66 +``` + +You will need to run this command from a directory that contains a valid `dfx.json` file. If you don’t have such a directory, you can create one using `dfx new`. + +Here, ICP tells us that the hash of the Wasm module of the `rdmx6-jaaaa-aaaaa-aaadq-cai` canister is `0x86ab08ea53e4da5bba4f27baa931e2edc5ab2a1f228c204a5340992c16389f66`. + +The check above provides you the **current** hash of the canister’s Wasm module, but the **controllers** of a canister may change the code at any time, such as to upgrade the canister. However, if the list of controllers is empty or the only controller is a [blackhole](https://github.com/ninegua/ic-blackhole) canister, you know that the canister is immutable since no one has the power to change the code. + +## Verifying the build is reproducible + +Next, check whether this hash corresponds to some given source code. This only works if the build process for the code is reproducible. + +As a canister author, there are a few things you have to provide to your users to allow them to reproduce your build: + +-   The same source code that you used to create the Wasm module for the canister. + +-   Instructions on how to recreate your build environment. + +-   Instructions on how to repeat the process of building the Wasm from the source code. The process must be deterministic to ensure that it results in the exact same Wasm. It also has to be trusted, such that the user can be convinced that the Wasm is a faithful translation of the source code and not an artifact of a malicious build tool. In particular, look for `.dfx`, `node_modules`, and `target` directories that could contain prebuilt files. + +### Providing the source code + +Typically, it is recommended that developers version your code in `git` or some other version control system, and versioned code may be available in a public repository such as GitHub. In this case, as the developer, you should note the particular commit that was used when producing the code that has been deployed to ICP and communicate it to the users who may want to verify your canister. Alternatively, you can also provide a package (i.e., a zip file or a tarball) containing the source code you used to build your canister. + +### Reproducing build environments + +Before building your code, you should document the build environment you are using in detail. In particular, for the languages supported by the IC SDK (Motoko, Rust, TypeScript, Python): + +-   Note your local machine's operating system and its version. + +-   If you are using the IC SDK, note the version used. You can install arbitrary versions of the IC SDK using [`dfxvm`](/docs/current/developer-docs/developer-tools/cli-tools/dfxvm/docs/cli-reference/dfxvm/dfxvm-install). + +-   If you are building Motoko code in a way other than `dfx build`, note the version of `moc` you are using. + +-   If you are building Rust, note the version of `cargo` you are using. + +- If you are building TypeScript, note the version of [Azle](https://demergent-labs.github.io/azle/). + +- If you are building Python, note the version of Python and [Kybra](https://demergent-labs.github.io/kybra/). + +-   If you are using a framework for frontend development, such as React, Vite, or webpack, note their versions. + +-   If your build process depends on any environment variables (such as the timezone or locale), note them. + +You should communicate all of these to your user in the reproducible build instructions. Ideally, provide an executable recipe or script to recreate the build environment using tools such as Docker or Nix. It is recommended to use Docker, as it allows you to also pinpoint the operating system used for building the software. + +### Build environments using Docker + +[Docker containers](https://docs.docker.com/) are a popular solution for providing reproducible build environments. + +:::info +For developers using macOS, it is recommended to install Docker using [lima](https://github.com/lima-vm/lima), as it proves more stable than Docker Desktop or Docker Machine. In particular, it avoids some QEMU bugs on Apple M1 machines. +::: + +After setting Docker up, you can use a `Dockerfile` to provide the user with a particular version of the operating system, as well as other necessary tooling, such as `dfx`, Node.js, and the Rust toolchain. + +:::caution +It is advised to stick with `x86_64` for running the Docker container, as builds are generally not reproducible across architectures. See the [docs](https://github.com/lima-vm/lima/blob/master/docs/multi-arch.md) on setting up cross-platform Docker containers in case your host environment is not `x86_64`. +::: + +Below is an example Dockerfile that creates a standardized Rust build environment. + +```dockerfile title="Dockerfile" +FROM ubuntu:22.04 + +ENV NVM_DIR=/root/.nvm +ENV NVM_VERSION=v0.39.1 +ENV NODE_VERSION=18.1.0 + +ENV RUSTUP_HOME=/opt/rustup +ENV CARGO_HOME=/opt/cargo +ENV RUST_VERSION=1.62.0 + +ENV DFX_VERSION=0.23.0 + +# Install the basic environment needed for our build tools. +RUN apt -yq update && \ +    apt -yqq install --no-install-recommends curl ca-certificates \ +        build-essential pkg-config libssl-dev llvm-dev liblmdb-dev clang cmake rsync + +# Install Node.js using nvm +ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin:${PATH}" +RUN curl --fail -sSf https://raw.githubusercontent.com/creationix/nvm/${NVM_VERSION}/install.sh | bash +RUN . "${NVM_DIR}/nvm.sh" && nvm install ${NODE_VERSION} +RUN . "${NVM_DIR}/nvm.sh" && nvm use v${NODE_VERSION} +RUN . "${NVM_DIR}/nvm.sh" && nvm alias default v${NODE_VERSION} + +# Install Rust and Cargo +ENV PATH=/opt/cargo/bin:${PATH} +RUN curl --fail https://sh.rustup.rs -sSf \ +        | sh -s -- -y --default-toolchain ${RUST_VERSION}-x86_64-unknown-linux-gnu --no-modify-path && \ +    rustup default ${RUST_VERSION}-x86_64-unknown-linux-gnu && \ +    rustup target add wasm32-unknown-unknown &&\ +    cargo install ic-wasm + +# Install dfx +RUN sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)" + +COPY . /canister +WORKDIR /canister +``` + +#### What this does + +There are a couple of things worth noting about this `Dockerfile`: + +-   It starts from an official Docker image, such that all the installed tools are standard and come from standard sources. This provides the user with confidence that the build environment hasn’t been tampered with, and thus that the build process using Docker can be trusted. + +-   To ensure that specific versions of the build tools are installed, it installs them directly rather than through a package manager. Package managers usually don’t provide a way of pinning the build tools to specific versions. + +To use this `Dockerfile`, get Docker [up and running](https://docs.docker.com), place the `Dockerfile` in the project directory of your canister, and create the Docker container by running: + +```bash +docker build -t mycanister . +``` + +This creates a Docker container image called `mycanister`, with Node.js, Rust, and `dfx` installed in it. Your canister source code will be copied to the directory `/canister` You should invoke `docker build` from the canister project directory. You can then enter an interactive shell inside of your Docker container by running: + +```bash +docker run -it --rm mycanister +``` + +From here, you can experiment with the steps needed to build your canister. Once you are confident that the steps are deterministic, you can also put them in the `Dockerfile`. For example, to run a build script, add the line: + +```dockerfile +RUN ./build_script.sh +``` + +You can see an example in the [Dockerfile of the Internet Identity canister](https://github.com/dfinity/internet-identity/blob/397d0087a29855564c47f0fd3323f60b5b67a8fa/Dockerfile). + +### Example build script + +Below is an example script that can be used to programmatically build a Rust project: + +:::info +This is an example build script for a Rust project and does not include a fully comprehensive example of what a build script may contain, nor does it include build instructions for other languages such as Motoko. +::: + +```bash +#!/bin/bash +# +# additional setup, e.g., build frontend assets: +# ... +# Rust build: +export RUSTFLAGS="--remap-path-prefix $(readlink -f $(dirname ${0}))=/build --remap-path-prefix ${CARGO_HOME}=/cargo" +cargo build --locked --target wasm32-unknown-unknown --release +ic-wasm target/wasm32-unknown-unknown/release/example_backend.wasm -o example_backend.wasm shrink +``` + +A build script such as the one above can be specified as a custom build script in `dfx.json`: + +```json title="dfx.json" +"canisters": { +  "example_backend": { +    "candid": "src/example_backend/example_backend.did", +    "package": "example_backend", +    "type": "custom", +    "wasm": "./example_backend.wasm", +    "build": "./build_script.sh" +  } +} +``` + + +### Ensuring the determinism of the build process + +Next, consider if it is necessary to make the build deterministic. For the build process to be deterministic: + +- #### Step 1: You will need to ensure that any dependencies of your canister are always resolved in the same way. Most build tools support a way of pinning dependencies to a particular version. + +    -   For `npm`, running `npm install` will create a `package-lock.json` file with some fixed versions of all (transitive) dependencies of your project that satisfy the requirements specified in your `package.json`. However, `npm install` will overwrite the `package-lock.json` file every time it is invoked. Thus, once you are ready to create the final version of your canister, run `npm install` only once. After that, commit `package-lock.json` to your version control system. Finally, when checking the build for reproducibility, use `npm ci` instead of `npm install`. + +    -   For Rust code, Cargo will automatically generate a `Cargo.lock` file with the fixed versions of your (transitive) dependencies. Like with `package-lock.json`, you should commit this file to your version control system once you are ready to produce the final version of your canister. Furthermore, Cargo by default ignores the locked versions of dependencies. Pass the `--locked` flag to the `cargo` command to ensure that the locked dependencies are used. + +- #### Step 2: Your own build scripts must not introduce non-determinism. + +Sources of non-determinism include randomness, timestamps, concurrency, or code obfuscators. Less obvious sources include locales, absolute file paths, the order of files in a directory, and remote URLs whose content can change. Furthermore, relying on third-party build plug-ins exposes you to any non-determinism introduced by these. + +- #### Step 3. Given the same dependencies and deterministic build scripts, the build tools themselves (`moc` for Motoko, `cargo` for Rust, `npx` for TypeScript, `pip` for Python, or `webpack` for frontend development) must also be deterministic. + +These tools aim to be deterministic. However, they are complicated pieces of software, and ensuring determinism is non-trivial. Thus, non-determinism bugs can and do occur. + +#### Motoko deterministic considerations + +The Motoko compiler aims to be deterministic and reproducible; if you find reproducibility issues, please submit a [new issue](https://github.com/dfinity/motoko/issues/new/choose), and the team will try to address them to the extent possible. + +#### Rust deterministic considerations + +For Rust, see the [list of current potential non-determinism issues in Rust](https://github.com/rust-lang/rust/labels/A-reproducibility). If you have observed differences between Rust code compiled to Wasm under Linux and macOS, it is recommended to pin the build platform and its version. + +#### Webpack deterministic considerations + +For webpack, [deterministic naming of module and chunk IDs](https://webpack.js.org/configuration/optimization/) that you should use have been introduced since version 5. + +### Testing reproducibility + +If reproducibility is vital for your code, you should test the build to increase your confidence in its reproducibility. The tool [reprotest](https://salsa.debian.org/reproducible-builds/reprotest) can help you automate reproducibility tests, as it tests your build by running it in two different environments that differ in characteristics such as paths, time, file order, and others, and comparing the results. To check your build with `reprotest`, add the following line to your `Dockerfile`: + +```dockerfile +RUN apt -yqq install --no-install-recommends reprotest disorderfs faketime rsync sudo wabt +``` + +When using `dfx build --network ic`, you need to prebuild your frontend dependencies by running `npm ci` before `dfx build --network ic` or by setting the custom build type in `dfx.json` and running `npm ci` in your build script. Your project directory should contain a `canister_ids.json` file containing the IDs of your canisters on the mainnet. Below is an example `canister_ids.json` file: + +```json title="canister_ids.json" +{ +  "example_backend": { +    "ic": "rrkah-fqaaa-aaaaa-aaaaq-cai" +  }, +  "example_frontend": { +    "ic": "ryjl3-tyaaa-aaaaa-aaaba-cai" +  } +} +``` + +Now, from the root directory of your canister project, you can test the reproducibility of your build using the commands: + +``` +docker build -t mycanister . +docker run --rm --privileged -it mycanister +/canister# mkdir artifacts +/canister# reprotest -vv --store-dir=artifacts --variations '+all,-time' 'dfx build --network ic' '.dfx/ic/canisters/*/*.wasm' +``` + +#### What this does +- The first command builds the Docker container using the `Dockerfile` provided earlier. +- The second command opens an interactive shell in the container, indicated by the flag `-it`. You can run this in privileged mode using the `--privileged` flag, as `reprotest` uses kernel modules for some build environment variations. You can also run it in non-privileged mode by excluding some of the variations; see the [reprotest manual](https://manpages.debian.org/stretch/reprotest/reprotest.1.en.html). The `--rm` flag will destroy the container after you close its shell. +- Once inside the container, a directory is created for the build artifacts, and `reprotest` is launched in verbose mode using the `-vv` flags. You need to give it the build command you want to run as the first argument; in this example it is `dfx build --network ic`. It will then run the build in two different environments. +- Finally, you need to tell `reprotest` which paths to compare at the end of the two builds. In this example, it compares the Wasm code for all canisters, which is found in the `.dfx/ic` directory. It is encouraged that you compare the artifacts produced by 'reprotest` while manually changing your system time. + +:::info +This workflow omits the time variation because the Rust compiler uses `jemalloc` for dynamic memory allocation, and this library is not [compatible](https://github.com/wolfcw/libfaketime/issues/130) with `faketime` used by `reprotest` to implement the time variation. +::: + +If the comparison doesn’t find any differences, you will see an output similar to this one: + +``` +======================= +Reproduction successful +======================= +No differences in ./.dfx/ic/canisters/*/*.wasm +6b2a15a918219138836e88e9c95f9c5d2d7b6d465df83ae05d6fd2b0f14f8a97  ./.dfx/ic/canisters/example_backend/example_backend.wasm +a047686c1d517e21d447bcd42c9394a12cdb240e06425b830c99d3a689b5ee20  ./.dfx/ic/canisters/example_frontend/assetstorage.wasm +a047686c1d517e21d447bcd42c9394a12cdb240e06425b830c99d3a689b5ee20  ./.dfx/ic/canisters/example_frontend/example_frontend.wasm +``` + +This is a good indicator that your build is not affected by your environment. + +:::info +Note that `reprotest` can’t check that your dependencies are pinned properly. It is recommended that you run the container `reprotest` builds under several host operating systems and compare the results. If the comparison does find differences between the Wasm code produced in two builds, it will output a diff. You will then likely want to use the `--store-dir` flag of `reprotest` to store the outputs and the diff somewhere where you can analyze them. If you are struggling to achieve reproducibility, consider also using [DetTrace](https://github.com/dettrace/dettrace), which is a container abstraction that tries to make arbitrary builds deterministic. +::: + +Finally, if your build is reproducible, you can compare the hash of the resulting Wasm code to the hash of the code that is running in a canister, which you retrieve as follows: + +``` +dfx canister --network ic info +``` + +Beware that this hash might change if the controllers upgrade the canister code. + +## Long-term considerations + +Even after you achieve reproducibility for your builds, there are still other things to consider for the long term. + +Reproducibility can be more demanding if you expect your canister code to stay around for years and remain reproducible. The biggest challenges are to ensure that your: + +-  Build toolchain is available in the future. + +-  Dependencies are available. + +-  Toolchain still runs and correctly builds your dependencies. + +Distributions and package archives may drop old versions of packages, including both your toolchain and their dependencies. Web sites may go offline, and URLs might stop working. It’s prudent to back up all of your toolchain and dependencies. You should consider getting involved in projects such as [Software Heritage](https://www.softwareheritage.org/), which do this on a large scale. + +You might have to adjust your build process to ensure that your canister still builds. Even if the build changes, if it still yields the same result, your users can be confident that your canister is running the correct code. The trust argument is easier if your dependencies come from a trustworthy source, such as the Software Heritage project. + diff --git a/docs/developer-docs/smart-contracts/test/overview.mdx b/docs/developer-docs/smart-contracts/test/overview.mdx new file mode 100644 index 0000000000..a7fd2bf9df --- /dev/null +++ b/docs/developer-docs/smart-contracts/test/overview.mdx @@ -0,0 +1,70 @@ +--- +keywords: [intermediate, test, tutorial, test code, test canister, pocket ic, pocketic] +--- + + +import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + +# Testing canisters overview + + + +Testing your canister's code during the development process is an important step to verify that the code operates as expected and does not produce bugs, errors, or result in the canister trapping. Before deploying and using the code in a production environment, it should undergo testing. + +## Types of testing + +There are three types of testing: + +- **Unit testing**: Test each individual unit of the code separately, such as a function or calculation. + +- **Integration testing**: Test how multiple functions or portions of the code integrate and operate together. + +- **End-to-end testing**: Test the application's complete workflow, including the frontend user interface. + +### Unit testing + +Unit testing refers to testing a single function or component of a piece of code by itself, thus testing a single *unit* of the code. Unit testing does not take into consideration how the single unit functions with other components of the application. The scope of unit testing is more narrow compared to other types of testing and is designed to catch bugs or errors that may occur for each individual unit of the application's code. + +In Motoko, the [base library](https://github.com/dfinity/motoko-base/tree/master/test) contains files that can be used for unit testing. Most testing files utilize the Motoko Matchers test library to provide testing functionality. Motoko Matchers also includes a package for executing unit tests within canisters. + +For tests that use large datasets or have long-running test batches, Motoko also provides the [BigTest library](https://github.com/matthewhammer/motoko-bigtest). + +For Rust unit testing, refer to the guide on [effective Rust containers](https://mmapped.blog/posts/01-effective-rust-canisters) and [guidelines on Rust canister testing](https://docs.dfinity.systems/dfinity/spec/meta/rust.html#_tests). + +### Integration testing + +Integration testing refers to testing multiple components of a code or application together to ensure that they operate correctly. Integration testing often includes testing how several functions within a canister interact with one another, how different canisters may send and receive information from each other, or how a canister may obtain and digest external information from HTTPS outcalls. One common form of integration testing is continuous integration (CI) testing. CI testing uses an automated workflow to continuously test several components of an application. + +GitHub CI testing is a common workflow used by developers that can be configured to run tests whenever new code is pushed to a repository. [Learn more about CI tests](https://docs.github.com/en/actions/using-workflows). + +### End-to-end testing + +End-to-end testing refers to testing the entire functionality of an application, including the frontend user interface. This includes testing buttons, input forms, authentication methods, and the overall user journey within the app. End-to-end tests can be simple, such as testing that a frontend canister successfully communicates with a backend canister. + +For more information on end-to-end tests, check out the [developer journey module on testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing#end-to-end-e2e-testing). + +## Tools for testing canisters + +There are several tools available for testing ICP canisters. Motoko-specific libraries can be found in the section above, [unit testing](#unit-testing). Details about more comprehensive testing suites can be found below. + +### PocketIC + +PocketIC is a comprehensive testing suite that can be used for testing canisters with custom environments, allowing you to test applications against real-world scenarios that your application may encounter once deployed on the mainnet. PocketIC tests can be written in several languages, including: + +- [PocketIC Rust](https://crates.io/crates/pocket-ic) +- [PocketIC Python](https://pypi.org/project/pocket-ic/) +- [Pic JS for JavaScript/TypeScript](https://www.npmjs.com/package/@hadronous/pic) +- [PocketIC GoLang](https://pkg.go.dev/github.com/aviate-labs/agent-go/pocketic) + +[Learn more about PocketIC](pocket-ic.mdx). + +### Light Replica + +Light Replica is a community-contributed tool designed to replicate the local testing environment that the Ethereum tools Hardhat or Truffle provide. Light Replica replicates the behavior of a real ICP node by running a local instance of a node, then providing additional logging and functionality to enable canister testing. Light Replica can be used to test any Wasm file as if it were a canister deployed on the mainnet. + +[Learn more about Light Replica](https://github.com/icopen/lightic/tree/main). + +### Manual staging environments + +As an alternative to using the environments provided by PocketIC or Light Replica, you can also manually make a staging environment with `dfx` that you can test your code against. [Learn more about creating a staging environment with dfx](staging-environment.mdx). \ No newline at end of file diff --git a/docs/developer-docs/smart-contracts/test/pocket-ic.mdx b/docs/developer-docs/smart-contracts/test/pocket-ic.mdx index a73f9dc5d8..b8a265f851 100644 --- a/docs/developer-docs/smart-contracts/test/pocket-ic.mdx +++ b/docs/developer-docs/smart-contracts/test/pocket-ic.mdx @@ -1,5 +1,5 @@ --- -keywords: [intermediate, test, tutorial, test code, test canister, pocket ic, pocketic] +keywords: [intermediate, test, tutorial, test code, test canisters] --- diff --git a/docs/references/execution-errors.mdx b/docs/references/execution-errors.mdx index d5805b681f..517181475e 100644 --- a/docs/references/execution-errors.mdx +++ b/docs/references/execution-errors.mdx @@ -712,7 +712,7 @@ To fix this error, try resending the message after omitting or modifying the inv -[canbench]: /docs/current/developer-docs/smart-contracts/test/benchmarking +[canbench]: /docs/current/developer-docs/developer-tools/off-chain/canbench [canister-status-api]: /docs/current/references/ic-interface-spec#ic-canister_status diff --git a/docs/tutorials/developer-journey/index.mdx b/docs/tutorials/developer-journey/index.mdx index 60e95cc160..e6915c47e1 100644 --- a/docs/tutorials/developer-journey/index.mdx +++ b/docs/tutorials/developer-journey/index.mdx @@ -10,9 +10,9 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; ## Overview -Are you ready to get started developing on the Internet Computer, but not sure where to begin? +Are you ready to get started developing on the Internet Computer, but not sure where to begin? -The developer journey is designed to give both new and existing developers a clear learning path to develop on the Internet Computer. Starting at level 0 with an introduction to the Internet Computer, terminology, and setting up a developer environment, to level 5 that details building complex dapps, the Developer Journey contains essential information for developers of all skill levels. +The developer journey is designed to give both new and existing developers a clear learning path to develop on the Internet Computer. Starting at level 0 with an introduction to the Internet Computer, terminology, and setting up a developer environment, to level 5 that details building complex dapps, the Developer Journey contains essential information for developers of all skill levels. @@ -51,11 +51,11 @@ This developer journey will focus on developing canisters and applications using - [2.2 Advanced canister calls](/docs/current/tutorials/developer-journey/level-2/2.2-advanced-canister-calls ) - [2.3 Using third-party canisters](/docs/current/tutorials/developer-journey/level-2/2.3-third-party-canisters ) - [2.4 Introduction to Candid](/docs/current/tutorials/developer-journey/level-2/2.4-intro-candid ) -- [2.5 Unit, integration, and end2end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing ) +- [2.5 Unit, integration, and end-to-end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing ) - [2.6 Motoko level 2](/docs/current/tutorials/developer-journey/level-2/2.6-motoko-lvl2 ) -## Level 3: Space engineer +## Level 3: Space engineer - [3.1 Motoko package managers](/docs/current/tutorials/developer-journey/level-3/3.1-package-managers ) - [3.2 Using HTTPS outcalls](/docs/current/tutorials/developer-journey/level-3/3.2-https-outcalls ) @@ -73,7 +73,7 @@ This developer journey will focus on developing canisters and applications using - [4.5 Using quill](/docs/current/tutorials/developer-journey/level-4/4.5-using-quill ) - [4.6 Motoko level 4](/docs/current/tutorials/developer-journey/level-4/4.6-motoko-lvl4 ) -## Level 5: Internet Computer astronaut +## Level 5: Internet Computer astronaut - [5.1 Developing an encrypted notes dapp with vetKeys](/docs/current/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial ) - [5.2 Developing a dapp using the ICP Ethereum integration](/docs/current/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial ) diff --git a/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx b/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx index fd6cc67d43..f3e25fbced 100644 --- a/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx +++ b/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx @@ -125,7 +125,7 @@ If you open this URL in your web browser, you will see the same poll dapp fronte :::caution -To avoid burning through your cycles, once you are finished with this tutorial consider stopping your project's canisters with the `dfx canister stop` command. +To avoid burning through your cycles, once you are finished with this tutorial consider stopping your project's canisters with the `dfx canister stop` command. ::: diff --git a/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx b/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx index 43f8c91a70..40945dfb13 100644 --- a/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx +++ b/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx @@ -380,4 +380,4 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h Next, let's explore how to test and debug projects and canisters. -- [2.5 Unit, integration, and end2end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing). +- [2.5 Unit, integration, and end-to-end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing). diff --git a/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx b/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx index 27ae9cb4e5..a4d4a63fc9 100644 --- a/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx +++ b/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx @@ -5,7 +5,7 @@ keywords: [intermediate, tutorial, developer journey, unit testing, e2e testing, import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; -# 2.5 Unit, integration, and end2end testing +# 2.5 Unit, integration, and end-to-end testing @@ -21,7 +21,7 @@ There are three primary types of testing: - **Integration testing:** Tests several functions, calculations, and portions of the code together; tests how different parts *integrate* with one another. A common form of integration testing is known as *continuous integration* testing, or CI testing. -- **End2end (e2e) testing:** Tests the app's complete workflow, including buttons, forms, and frontend assets; tests the app from *end to end*. +- **End-to-end (e2e) testing:** Tests the app's complete workflow, including buttons, forms, and frontend assets; tests the app from *end to end*. ## Motoko unit testing @@ -117,8 +117,6 @@ In this developer journey series, you'll continue to focus on exploring and usin [Learn more about Rust unit testing](https://mmapped.blog/posts/01-effective-rust-canisters.html). -You may also consider the [DFINITY Rust guidelines on testing](https://docs.dfinity.systems/dfinity/spec/meta/rust.html#_tests). - ## Tests using PocketIC PocketIC provides local canister testing using a Python library. Using PocketIC, developers can write tests for their canister in Python, then deploy the scripts to interact with their local ICP replica. An example test with PocketIC might look like: @@ -137,15 +135,15 @@ assert(response == 'Hello, PocketIC!') [Learn more about PocketIC](https://github.com/dfinity/pocketic-py#readme). -### Tests using Light Replica +## Tests using Light Replica Light Replica is a community-developed project designed to provide a local testing and development environment similar to Ethereum's Truffle or Hardhat tools. Light Replica creates a local node designed to replicate the behavior of a real ICP node that includes additional logging and functions to assist with testing. Using this local node, any Wasm file can be tested and interacted with as if it were deployed on a live production node. The Light Replica's codebase includes tests primarily written in Rust and Typescript, and can be beneficial as a tool for Rust development testing, but can be used with any canister that has been compiled into a Wasm file. [Learn more about Light Replica](https://github.com/icopen/lightic/tree/main). -## End2end (e2e) testing +## End-to-end (e2e) testing -Now, let's take a look at creating a project and setting up end2end (e2e) testing for the project. +Now, let's take a look at creating a project and setting up end-to-end (e2e) testing for the project. ### Prerequisites diff --git a/docs/tutorials/developer-journey/level-2/index.mdx b/docs/tutorials/developer-journey/level-2/index.mdx index b419f44796..a741e4b9ee 100644 --- a/docs/tutorials/developer-journey/level-2/index.mdx +++ b/docs/tutorials/developer-journey/level-2/index.mdx @@ -35,7 +35,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - Creating a new project. - Writing a `publisher` canister. - Writing a `subscriber` canister. - + - [2.3 Using third-party canisters](/docs/current/tutorials/developer-journey/level-2/2.3-third-party-canisters): For certain workflows, using third-party canisters and integrating them with a dapp is important to provide functionalities such as authentication. This module covers: - Pulling third-party canister dependencies. - Prerequisites. @@ -57,12 +57,12 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - Interacting with a service using the command-line terminal. - Interacting with a service using a web browser. -- [2.5 Unit, integration, and end2end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing): Testing code prior to setting it live in production is an important step in the development process. This module covers: +- [2.5 Unit, integration, and end-to-end testing](/docs/current/tutorials/developer-journey/level-2/2.5-unit-testing): Testing code prior to setting it live in production is an important step in the development process. This module covers: - Motoko unit testing. - Canister unit testing. - Rust unit testing. - Tests using Light Replica. - - End2end (e2e) testing. + - End-to-end (e2e) testing. - Prerequisites. - Creating a new project. - Setting up the project. From 2bad2bc0e628dc289b1d0b9afc4afbe7e9f9e5c3 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Wed, 25 Sep 2024 13:53:35 +0200 Subject: [PATCH 50/60] merge ai page --- src/pages/ai.tsx | 587 ++++++++++++++++++++++++----------------------- 1 file changed, 300 insertions(+), 287 deletions(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index ab60c1a1b2..a733df068b 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -645,146 +645,147 @@ function AIPage() { TECHNOLOGY -
    - See a series of demos how the Internet Computer has the - capability of running AI in a smart contract. -
    - - Watch the playlist - -
    -
    -
    - - -
    - - - -
    -
    - -
    -

    - Try out the AI demo by yourself -

    -

    - Check out the open-source repo on GitHub and tryout the AI - demo by yourself. -

    -

    - - GO TO GITHUB REPO - -

    -
    -
    - - {`let image = imageops::resize( - &image, 160, 160, FilterType::Triangle); - -let tensor = Array4::from_shape_fn( - (1, 3, 160, 160), |(_, c, y, x)| { - image[(x as u32, y as u32)][c] as f32 / 255.0 -}); - -let result = model.run( - tvec!(Tensor::from(tensor).into()))?;`} - -
    -
    -
    - -
    - - - A recent study on AI finds that nearly half of the respondents - (49%) are concerned about the misuse of AI for nefarious purposes. - - - Survey in the{" "} + + R&D at the core of Internet Computer’s AI innovation + {" "} + + AI onchain is made possible by the unique technological + capabilities of the Internet Computer Protocol (ICP). Running AI + as a smart contract on a blockchain is a significant innovation + that is based on DFINITY Foundation’s significant R&D efforts in + this domain. Over the past 6 months, AI computations have been + optimized to run up to 10x faster, enabling larger models to run + onchain. + - Artificial Intelligence Index Report 2024 - {" "} - by Stanford University. - - -
    -
    - -
    +
    + +
    +
    + + DEVELOPERS + + + Build your next AI venture on the Internet Computer.{" "} + + Find all the essentials, including developer documentation, + code samples, demos, and our GitHub repository. + + - -
    - - News & media - -
    - - Get all the news from the Internet Computer ecosystem - - - Explore more news - -
    -
    -
    - - - - - - + + These resources are designed to help you get started with + creating decentralized AI applications onchain. Our DeAI + developer community is also a great way to start. + +
    - - - - - {" "} - - - {" "} - - - {" "} - -
    - +
    +
    + +
    +

    Learn

    +
    + + Overview of AI onchain + + + Docs + +
    +
    - +
    +

    Connect

    +
    +
    + + Contribute to the discussion + + + ICP Forum + +
    +
    + + Connect with developers + + + Discord + +
    +
    + + Attend global events + + + Upcoming events + +
    +
    +
    +
    + + +
    +

    Build

    +
    +
    + + Explore the work + + + GitHub + +
    +
    +
    + +
    +
    +

    Grow

    +
    + + Apply for the DeAI grant + + + Grant application + +
    +
    + + Join the accelerator + + + Explore Olympus + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    FAQ

    +
    +
    + {faqData.map((item, index) => ( + + ))} +
    +
    + +
    +
    +
    + {manifestoModalOpen && ( + + )} ); From 3eefef70ef13c69202e8bed5b22b602f59d9b1a2 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Wed, 25 Sep 2024 14:25:01 +0200 Subject: [PATCH 51/60] revert project change --- community/communityProjects.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community/communityProjects.ts b/community/communityProjects.ts index 37db3481d4..4b3311058d 100644 --- a/community/communityProjects.ts +++ b/community/communityProjects.ts @@ -1595,7 +1595,7 @@ const communityProjects: SampleItem[] = [ links: { github: "https://github.com/amirhyoussefi/ic-sorn", external: - "https://supernova.devpost.com/submissions/334423-onchain-system-of-record-with-public-notary", + "https://supernova.devpost.com/submissions/334423-on-chain-system-of-record-with-public-notary", otherLinks: [], }, domains: ["Blue Sky"], From a3397edf1849ec3f2db50cb6b634a12f278687e2 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Thu, 26 Sep 2024 11:48:30 +0200 Subject: [PATCH 52/60] add collapsable faq component --- src/components/Common/Icons/ArrowUp | 0 src/components/Common/Icons/ChevronDown.tsx | 16 ++++++ src/components/Common/Icons/ChevronUp.tsx | 16 ++++++ src/pages/ai.tsx | 57 ++++++++++++++++----- 4 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 src/components/Common/Icons/ArrowUp create mode 100644 src/components/Common/Icons/ChevronDown.tsx create mode 100644 src/components/Common/Icons/ChevronUp.tsx diff --git a/src/components/Common/Icons/ArrowUp b/src/components/Common/Icons/ArrowUp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/components/Common/Icons/ChevronDown.tsx b/src/components/Common/Icons/ChevronDown.tsx new file mode 100644 index 0000000000..2b895f28a7 --- /dev/null +++ b/src/components/Common/Icons/ChevronDown.tsx @@ -0,0 +1,16 @@ +import React from "react"; +const ChevronDown: React.FC<{ className?: string }> = ({ className }) => { + return ( + + + + ); +}; + +export default ChevronDown; diff --git a/src/components/Common/Icons/ChevronUp.tsx b/src/components/Common/Icons/ChevronUp.tsx new file mode 100644 index 0000000000..7a10728966 --- /dev/null +++ b/src/components/Common/Icons/ChevronUp.tsx @@ -0,0 +1,16 @@ +import React from "react"; +const ChevronUp: React.FC<{ className?: string }> = ({ className }) => { + return ( + + + + ); +}; + +export default ChevronUp; diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index a733df068b..0eced76a70 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -6,7 +6,7 @@ import ShareMeta from "@site/src/components/Common/ShareMeta"; import transitions from "@site/static/transitions.json"; import Layout from "@theme/Layout"; import clsx from "clsx"; -import { motion } from "framer-motion"; +import { motion, AnimatePresence } from "framer-motion"; import LightHeroStyles from "@site/src/components/Common/LightHeroStyles"; import VideoCard, { ImageOnlyVideoCard, @@ -17,6 +17,10 @@ import LinkArrowUpRight from "@site/src/components/Common/Icons/LinkArrowUpRight import AIManifestoModal from "@site/src/components/AIManifestoModal"; import { useElementSize } from "@site/src/utils/use-element-size"; import { useLocation } from "@docusaurus/router"; +import LinkArrowUp from "../components/Common/Icons/LinkArrowUp"; +import LinkArrowDown from "../components/Common/Icons/LinkArrowDown"; +import ChevronDown from "../components/Common/Icons/ChevronDown"; +import ChevronUp from "../components/Common/Icons/ChevronUp"; interface FeatureCardProps { imageSrc: string; @@ -253,19 +257,48 @@ const Collapse: React.FC<{ ); }; -interface FaqItemProps { - question: string; - answer: string; -} +const FaqItem = ({ question, answer }) => { + const [isOpen, setIsOpen] = useState(false); + + const toggleOpen = () => setIsOpen(!isOpen); -const FaqItem: React.FC = ({ question, answer }) => { return ( -
    -

    - {question} -

    -

    {answer}

    -
    + +
    +
    {question}
    + {isOpen ? ( + + ) : ( + + )} +
    + + {isOpen && ( + +
    +

    {answer}

    +
    +
    + )} +
    +
    ); }; From 1a148a50c4e6e5337f8146b180d5c2a5eeda9430 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Thu, 26 Sep 2024 11:49:05 +0200 Subject: [PATCH 53/60] remove arrowup --- src/components/Common/Icons/ArrowUp | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/components/Common/Icons/ArrowUp diff --git a/src/components/Common/Icons/ArrowUp b/src/components/Common/Icons/ArrowUp deleted file mode 100644 index e69de29bb2..0000000000 From 287c6c28be4699e3fcb0cd13b1722abdd67ab640 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Thu, 26 Sep 2024 12:08:21 +0200 Subject: [PATCH 54/60] fix padding --- src/pages/ai.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index 0eced76a70..c2ee77087c 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -292,7 +292,7 @@ const FaqItem = ({ question, answer }) => { }} transition={{ duration: 0.3, ease: "easeInOut" }} > -
    +

    {answer}

    From 7ccd8a0ac81c40a6829f1477c78225be233036bc Mon Sep 17 00:00:00 2001 From: reigj1 Date: Thu, 26 Sep 2024 16:15:20 +0200 Subject: [PATCH 55/60] update scroll behaviour --- src/pages/ai.tsx | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index c2ee77087c..1e02ead163 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -64,7 +64,7 @@ interface RoadmapItemProps { const RoadmapItem: React.FC = ({ number, title, date }) => { return ( -
    +

    {number}

    {date && ( @@ -94,7 +94,7 @@ const AIFeatureCard: React.FC = ({ features, }) => { return ( -
    +
    {" "}
    {number} @@ -182,14 +182,12 @@ const ScrollableSection: React.FC = ({ {title && ( {title} )} -
    +
    {items.map((item, index) => ( From 78bab0a1cac6157e2740b75f35b82048a21013bf Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 27 Sep 2024 14:26:19 +0200 Subject: [PATCH 56/60] add number animation --- src/pages/ai.tsx | 55 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index 1e02ead163..b20cf027a1 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -6,7 +6,7 @@ import ShareMeta from "@site/src/components/Common/ShareMeta"; import transitions from "@site/static/transitions.json"; import Layout from "@theme/Layout"; import clsx from "clsx"; -import { motion, AnimatePresence } from "framer-motion"; +import { motion, AnimatePresence, useAnimation } from "framer-motion"; import LightHeroStyles from "@site/src/components/Common/LightHeroStyles"; import VideoCard, { ImageOnlyVideoCard, @@ -21,6 +21,7 @@ import LinkArrowUp from "../components/Common/Icons/LinkArrowUp"; import LinkArrowDown from "../components/Common/Icons/LinkArrowDown"; import ChevronDown from "../components/Common/Icons/ChevronDown"; import ChevronUp from "../components/Common/Icons/ChevronUp"; +import { useInView } from "react-intersection-observer"; interface FeatureCardProps { imageSrc: string; @@ -531,7 +532,49 @@ const faqData: FaqData[] = [ ]; const MotionLink = motion(Link); -const { events, websiteCategory, regions } = eventsData; +const AnimatedCountUp = ({ end, duration = 2000 }) => { + const [count, setCount] = useState(0); + const controls = useAnimation(); + const [ref, inView] = useInView({ + triggerOnce: true, + threshold: 0.1, + }); + + useEffect(() => { + if (inView) { + controls.start({ + opacity: 1, + y: 0, + transition: { duration: 0.5 }, + }); + + let start = 0; + const increment = end / (duration / 16); + + const timer = setInterval(() => { + start += increment; + setCount(Math.floor(start)); + if (start >= end) { + clearInterval(timer); + setCount(end); + } + }, 16); + + return () => clearInterval(timer); + } + }, [inView, controls]); + + return ( + + {count.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".")}x + + ); +}; function AIPage() { const [manifestoModalOpen, setManifestoModalOpen] = useState(false); @@ -717,9 +760,7 @@ function AIPage() {
    - - 1.000.000x - + more data storage @@ -739,9 +780,7 @@ function AIPage() {
    - - 8x - + faster From d5a02570f086ddbab57f68c388483630ccfe769d Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 4 Oct 2024 13:53:26 +0200 Subject: [PATCH 57/60] update hero section --- src/pages/ai.tsx | 420 +++++++++++++++++++++++++++++-- static/img/ai-chain/6a.svg | 9 + static/img/ai-chain/slider-1.svg | 11 + static/img/ai-chain/slider-2.svg | 6 + static/img/ai-chain/slider-3.svg | 10 + static/img/ai-chain/slider-4.svg | 5 + 6 files changed, 444 insertions(+), 17 deletions(-) create mode 100644 static/img/ai-chain/6a.svg create mode 100644 static/img/ai-chain/slider-1.svg create mode 100644 static/img/ai-chain/slider-2.svg create mode 100644 static/img/ai-chain/slider-3.svg create mode 100644 static/img/ai-chain/slider-4.svg diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index b20cf027a1..a16faddec9 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -22,6 +22,10 @@ import LinkArrowDown from "../components/Common/Icons/LinkArrowDown"; import ChevronDown from "../components/Common/Icons/ChevronDown"; import ChevronUp from "../components/Common/Icons/ChevronUp"; import { useInView } from "react-intersection-observer"; +import Slider from "react-slick"; +import "slick-carousel/slick/slick.css"; +import "slick-carousel/slick/slick-theme.css"; +import "../components/LandingPage/Hero/SectionSlider/index.css"; interface FeatureCardProps { imageSrc: string; @@ -385,6 +389,12 @@ const features: FeatureCardProps[] = [ description: " AI models that run as smart contracts, enable them to autonomously participate in the digital economy by interacting with digital assets such as Bitcoin, Ethereum, Stablecoins, and ICP. This facilitates secure, transparent, and automated transactions and contract management without human intervention.", }, + { + imageSrc: "/img/ai-chain/6a.svg", + title: "DAO-controlled.", + description: + "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam quis risus eget urna mollis ornare vel eu leo. Curabitur blandit tempus porttitor.", + }, ]; const roadmapData = [ @@ -531,6 +541,248 @@ const faqData: FaqData[] = [ }, ]; +const heroFeatures = [ + "Immune to cyber attacks", + "Resilient", + "Verifiable", + "DAO-controlled", + "Privacy-preserving", + "AI-2-X Economy", +]; + +const HeroFeaturesList = () => { + return ( +
    + {heroFeatures.map((feature, index) => ( +
    + {index !== 0 && ( + + + + + + + + + + + + )} + + {feature} +
    + ))} +
    + ); +}; + +const sliderData = [ + { + title: "DecideAI implements GPT-2 LLM within ICP", + source: "Cryptonomist", + image: "/img/ai-chain/slider-1.svg", + link: "https://en.cryptonomist.ch/2024/08/29/crypto-and-ai-decideai-implements-the-linguistic-model-gpt-2-llm-within-the-blockchain-internet-computer-icp/", + }, + { + title: "DFINITY Foundation Offering $5M Grant to boost DeAI", + source: "AlexaBlockchain", + image: "/img/ai-chain/slider-2.svg", + link: "https://alexablockchain.com/dfinity-foundation-offering-5m-grant-to-boost-decentralized-ai/", + }, + { + title: "ELNA — Build Your-own AI Assistant on ICP", + source: "Elna.ai", + image: "/img/ai-chain/slider-3.svg", + link: "https://www.elna.ai/index.html#news", + }, + { + title: "Dominic Williams unveils World-first AI onchain demo", + source: "Youtube.com/dfinity", + image: "/img/ai-chain/slider-4.svg", + link: "https://www.youtube.com/watch?v=sdthNB-5yag&list=PLuhDt1vhGcrfWz1ZJrAmJBDS6aFADySwt", + }, +]; + +const buttonStyle = { + background: "rgba(255 255 255 / 10%)", + color: "black", + backdropFilter: "blur(20px)", + width: "3rem", + height: "3rem", +}; + +function NextArrow(props) { + const { className, style, onClick } = props; + return ( +
    + + + +
    + ); +} + +function PrevArrow(props) { + const { className, style, onClick } = props; + return ( +
    + + + +
    + ); +} + +const CardWithImage: React.FC<{ + title: string; + source: string; + image: string; + href: string; +}> = ({ title, source, image, href }) => { + return ( + +
    +

    {title}

    +

    {source}

    +
    + +
    + ); +}; + +const css = ` + .slick-prev:before, + .slick-next:before { + display: none; + } + + .slick-prev svg, + .slick-next svg { + transform: scale(.5); + transition: transform .2s cubic-bezier(0.3, 0.7, 0, 1); + } + + .slick-prev svg { + transform: rotate(180deg) scale(.5); + } + + .slick-prev:hover svg, + .slick-next:hover svg { + transform: scale(.7); + } + + .slick-prev:hover svg { + transform: rotate(180deg) scale(.7); + } + + .slick-dots { + bottom: -3rem; + } + + .slick-dots li button:before { + display: none; + } + + .slick-dots li { + margin: 0; + } + + .slick-dots li button { + background: rgba(24, 24, 24, 0.30); + border: none; + } + + .slick-dots li.slick-active button { + background: #181818; + } + + +`; + +const SectionSlider = () => { + let sliderRef = useRef(null); + + const settings = { + dots: true, + infinite: true, + slidesToShow: 3, + slidesToScroll: 1, + autoplay: false, + autoplaySpeed: 2000, + pauseOnHover: true, + centerMode: true, + padding: "20px", + centerPadding: "20px", + swipeToSlide: true, + nextArrow: , + prevArrow: , + responsive: [ + { + breakpoint: 768, + settings: { + slidesToShow: 1, + arrows: false, + }, + }, + ], + }; + return ( +
    + + (sliderRef = slider)} {...settings}> + {sliderData.map((data, index) => ( +
    + +
    + ))} +
    +
    + ); +}; + const MotionLink = motion(Link); const AnimatedCountUp = ({ end, duration = 2000 }) => { const [count, setCount] = useState(0); @@ -628,25 +880,152 @@ function AIPage() { el={motion.section} className="overflow-hidden" > -
    +
    -
    - ai chain logo -
    - - Secure and Trusted AI onchain - + + + + + + + + + + - - Fastest growing AI Ecosystem in Web3 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + Latest Ecosystem news + + + + diff --git a/static/img/ai-chain/6a.svg b/static/img/ai-chain/6a.svg new file mode 100644 index 0000000000..ca55877d31 --- /dev/null +++ b/static/img/ai-chain/6a.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/ai-chain/slider-1.svg b/static/img/ai-chain/slider-1.svg new file mode 100644 index 0000000000..4d44994b6b --- /dev/null +++ b/static/img/ai-chain/slider-1.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/ai-chain/slider-2.svg b/static/img/ai-chain/slider-2.svg new file mode 100644 index 0000000000..a1703a3993 --- /dev/null +++ b/static/img/ai-chain/slider-2.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/img/ai-chain/slider-3.svg b/static/img/ai-chain/slider-3.svg new file mode 100644 index 0000000000..5fadd00556 --- /dev/null +++ b/static/img/ai-chain/slider-3.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/img/ai-chain/slider-4.svg b/static/img/ai-chain/slider-4.svg new file mode 100644 index 0000000000..9b636578b6 --- /dev/null +++ b/static/img/ai-chain/slider-4.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From 4560ff1a43043d379f72b5b6477fa55092469617 Mon Sep 17 00:00:00 2001 From: reigj1 Date: Fri, 4 Oct 2024 17:45:36 +0200 Subject: [PATCH 58/60] fix slider --- src/pages/ai.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index a16faddec9..46496291c6 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -674,8 +674,10 @@ const CardWithImage: React.FC<{ to={href} className="bg-[#0C0025] text-white rounded-xl flex hover:no-underline transition-all hover:text-white relative overflow-hidden" > -
    -

    {title}

    +
    +

    + {title} +

    {source}

    { infinite: true, slidesToShow: 3, slidesToScroll: 1, - autoplay: false, + autoplay: true, autoplaySpeed: 2000, pauseOnHover: true, centerMode: true, @@ -880,7 +882,7 @@ function AIPage() { el={motion.section} className="overflow-hidden" > -
    +
    Date: Thu, 10 Oct 2024 11:01:02 +0200 Subject: [PATCH 59/60] update text --- src/pages/ai.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index 46496291c6..ed2cbb1474 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -362,7 +362,7 @@ const features: FeatureCardProps[] = [ imageSrc: "/img/ai-chain/1a.svg", title: "Immune to cyber attacks.", description: - "Sensitive AI models like in finance and public administration must be protected from centralized control, a prime cause for cyber attacks. ICP's decentralized infrastructure ensures integrity of AI models.", + "The integrity of AI models is protected by the blockchain. Unauthorized changes and tampering is not possible, which is crucial for applications in sensitive sectors.", }, { imageSrc: "/img/ai-chain/2a.svg", From 3896e2070362545603f1a1995596069d0222cecf Mon Sep 17 00:00:00 2001 From: reigj1 Date: Thu, 17 Oct 2024 12:52:59 +0200 Subject: [PATCH 60/60] update texts --- src/pages/ai.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/ai.tsx b/src/pages/ai.tsx index ed2cbb1474..80efa83c08 100644 --- a/src/pages/ai.tsx +++ b/src/pages/ai.tsx @@ -866,7 +866,7 @@ function AIPage() { return ( @@ -1079,7 +1079,7 @@ function AIPage() { className="tw-lead-sm md:tw-lead mb-0 text-black/60" variants={transitions.item} > - ICP’s advanced AI on chain technology enables five key + ICP’s advanced AI onchain technology enables six key attributes that will drive transformative AI use cases across industries.