From f5bd7d8be96cb7c9cea54fdbef89f89e12bfbe9f Mon Sep 17 00:00:00 2001 From: Toby Hobson Date: Thu, 20 Jun 2024 16:52:06 +0100 Subject: [PATCH] Add `svelte-passkeys` (#122) * Update sites.yml Added entry for a Passkey authentication starter project / template for SvelteKit. * Update tools.yml Add link to passlock GitHub repo * Update sites.yml * Update tools.yml Added links to Lucia and Superforms * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add screenshots, GH metadata and readme entry --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Janosh Riebesell --- readme.md | 15 +++++++++- site/src/sites.yml | 27 ++++++++++++++++++ .../passkey-authentication-starter.avif | Bin 0 -> 16906 bytes .../passkey-authentication-starter.small.avif | Bin 0 -> 7397 bytes sites.yml | 9 ++++++ tools.yml | 3 ++ 6 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 site/static/screenshots/passkey-authentication-starter.avif create mode 100644 site/static/screenshots/passkey-authentication-starter.small.avif diff --git a/readme.md b/readme.md index 8097a9d..c71875a 100644 --- a/readme.md +++ b/readme.md @@ -734,6 +734,16 @@ Awesome examples of SvelteKit in the wild. Visit **[janosh.github.io/awesome-sve uses: [D3], [PostCSS], [Lodash], [PNPM] +1. **[Passkey authentication starter](https://d1rl0ue18b0151.cloudfront.net)**  + [[code](https://github.com/passlock-dev/svelte-passkeys)]  + + GitHub stars + + + SvelteKit template featuring Passkeys, Social Sign in and more.
+ + uses: [passlock], [tailwind], [superforms], [lucia] + 1. **[Guess The Year](https://guess-the-year.davjhan.com)**  [[code](https://github.com/davjhan/guess-the-year-game)]  @@ -850,6 +860,7 @@ Awesome examples of SvelteKit in the wild. Visit **[janosh.github.io/awesome-sve [babel]: https://babeljs.io [changesets]: https://github.com/changesets/changesets [chart.js]: https://chartjs.org +[cloudflare pages]: https://pages.cloudflare.com [cloudflare]: https://cloudflare.com [cloudinary]: https://cloudinary.com [codemirror]: https://codemirror.net @@ -893,6 +904,7 @@ Awesome examples of SvelteKit in the wild. Visit **[janosh.github.io/awesome-sve [katex]: https://github.com/KaTeX/KaTeX [liveblocks]: https://liveblocks.io [lodash]: https://lodash.com +[lucia]: https://github.com/lucia-auth/lucia [mapbox]: https://mapbox.com [markedjs]: https://marked.js.org [matter.js]: https://brm.io/matter-js @@ -908,6 +920,7 @@ Awesome examples of SvelteKit in the wild. Visit **[janosh.github.io/awesome-sve [octokit]: https://github.com/octokit/octokit.js [ogl]: https://github.com/oframe/ogl [panzoom]: https://github.com/timmywil/panzoom +[passlock]: https://github.com/passlock-dev/passkeys [picocss]: https://picocss.com [plausible]: https://plausible.io [playwright]: https://playwright.dev @@ -931,6 +944,7 @@ Awesome examples of SvelteKit in the wild. Visit **[janosh.github.io/awesome-sve [storyblock]: https://storyblok.com [storybook]: https://storybook.js.org [supabase]: https://supabase.com +[superforms]: https://github.com/ciscoheat/sveltekit-superforms [surge.sh]: https://surge.sh [svelte forms lib]: https://github.com/tjinauyeung/svelte-forms-lib [svelte-highlight]: https://github.com/metonym/svelte-highlight @@ -955,7 +969,6 @@ Awesome examples of SvelteKit in the wild. Visit **[janosh.github.io/awesome-sve [wasm]: https://webassembly.org [webgl]: https://developer.mozilla.org/docs/Web/API/WebGL_API [ytdl-core]: https://github.com/fent/node-ytdl-core -[cloudflare pages]: https://pages.cloudflare.com ## 🎉 Suggestions Welcome diff --git a/site/src/sites.yml b/site/src/sites.yml index 75d097b..18f2d76 100644 --- a/site/src/sites.yml +++ b/site/src/sites.yml @@ -3012,6 +3012,33 @@ name: martin location: France company: null +- title: Passkey authentication starter + url: https://d1rl0ue18b0151.cloudfront.net + repo: https://github.com/passlock-dev/svelte-passkeys + description: SvelteKit template featuring Passkeys, Social Sign in and more. + uses: + - passlock + - tailwind + - superforms + - lucia + tags: + - authentication + - open source + - passkeys + - security + - template + date_created: 2024-04-22T00:00:00.000Z + date_added: 2024-05-17T00:00:00.000Z + slug: passkey-authentication-starter + repo_stars: 44 + contributors: + - github: thobson + twitter: TobyHobsonUK + url: https://tobyhobson.com + avatar: https://avatars.githubusercontent.com/u/208345?v=4 + name: Toby Hobson + location: London, United Kingdom + company: Passlock - title: Svead url: https://svead.pages.dev repo: https://github.com/spences10/svead diff --git a/site/static/screenshots/passkey-authentication-starter.avif b/site/static/screenshots/passkey-authentication-starter.avif new file mode 100644 index 0000000000000000000000000000000000000000..31f41143c952878a6bc5842d3a45bf9292b2b9ca GIT binary patch literal 16906 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 z z&5Z!nL9AOeUsJwzJywJ-c|4Zk$*Db?Y>uD0vp&;)f?mjQOc6B%assKx%yZ52m*W>; zh6`cPNyt>ngr{V2zsR(iSu(wc91*aGq&~na$XYUNcW3=p+LJTszldn@F5y=ev=1ULH>Z&_iX(+2w%Z zy>$RfxTc zcm661$vc61PEGP3q8Mp}zfETK*(!FZZbIuDd4#9VU*IKSUdL0kGU^^1L`dtX@6k^N z5{oyuFfYq*FVZ~WWL4?QS^41Zj`w&RFj;@%%yjd869Sn>+-6(fxd)0xrt1z8g2)wW zg(ku`RaO!;8}q235F$BxFJ%D zRu$I+C|BiEY2kR8p-C1Qx-;!?y4w_tX{x)0ZX<#el+i<(c5Fi&7hPx~H|$&c{g#rI zi6AB*^)A|Fi4jwFB3n^-xL@LYM{m@IzmK@mLf$k;fZGf6dat$9r&f8Mz5PXmh%N{S z>k;K`Torb!G`*yUci*(JTaK|SE7DjZ8?Iaf(M$fw7OC^z z{to!V$pyo>86;{%XuIU>`^4;VQ9=G}le9uGAj@D8fBN`&W4TG-+cG1f9>8oG6!Bbo zDOyX0c2TMP9);9UC5@u0Tu`@jc@}zNv${B72`f(mEX%E?hwC!P@RAPH{U*YI(f*@1 zosG(uo|q%M(>L=oOuP7?R|Dx$h2Zd!MvG`s3`njBI+F#9Vx)Op&C%>>D9D_VYUqB0nzy9~xR6 zPeD4kJ*S#tT`y{>fuK09pKmL7?WK&j|Fy-8*{BPe;;oHSErT^Ag@z8x`IO`I*1(kh zN<0@yt&O}5Cfx9Fei@$YZvF*2urms}avG+!C{J{0Ww)X_bj?h#%K>by3 z{pG*?z;B+uFn#IlCQ4lCmMu7*&9^m_;bwg)l(3ewa}HQ6S0PTv%5{>&{LmWBH78`N zP`x_A?GO5N2SaWP6A5iS+G=5SAlZP-M1-YcDvZrr2p;CPmJ!88OI72s5{Q4-xuYWn zojguRGfk{{Tk&jB_E0pzB761YgXY+Y+1f!}Kub>?+%(|qT2xW@(+Pr6gT8DA^GJ9a zR6n?$U1Ldv8=P@EspWI;6L4Nz>!F~QZUGj7Rg)4B9h2;HJ(iFRc8+jcX4_wsm2sF6 zoU1t=3Kll?-?$_4U%Ic`=vJ_0;d`Q4fJ&R|b$Tj)^ROSICf?1J6(v@o9dUi1L`W2t zgFudSkOmw+yC+PGO*@o8n`l&8C-9O}A9yS~Ux*MA0$5_3n% zLvc(qrkkhU+2;4EQHN?17>z!XxX!IYr8Sr@qfGd#1#_8AW%}mp^L3uBnQBSg8j%VG zqvTt}kowxU<;?vZPfFxvWKoMdeR71LcC&<$%>6;5e|Oa||8)z^z^9m!*9nc}X;!_K zey&S7PDZ1znMHs8@lXLyMs7HRWb4exCn(>HYbhD$RuM9T2R!KL4}4FjE?Kps$0>3$ zZAW-6Ym&Yk9R_+46$9T3qSIR)7{DP<9{?=D?RPPiVDZ|9+CZHpd^@3T0AjakVKnA@ zZ?AZuPEvJ>r>Lg(u;$Ris0-@mc8Cr0OiY@k@j%y>VvE8cIW)%aDH3weANnkjg`TE?!3csoyJ`K_9){@L;!@`$_mcy z@l{keMGkSXiyn^6K-q*zRy_TM6fwt7y8yY0x#$2&mil?>=&6Ep{x&0M zX3)n3W~JH{xP;04mMMkyGbA-U-(;8Sfek3opML5S02u0b4lISb*=G5chgo6>6NuWW zA>Zv?rH#C>M!!LS1P2A}Q`f}d#sjJ6uEfyAe0km3aL4B6-rm!~_At)s$leG*@Tf4r z0*HwuJC7-PsEykpBIle7=KdqJX9j3-NW|Ee)W+Rb^% zD?&n&B!s545gtvCtA7Z!#Oz#>-`v8HoVc2#DAV<~=z_vK~F zA(}yVeK7k&y`1wG5L)knFlz@&md@LQ2dfpvl~#t!$GjbfflaD@EewW`Fuc{~(OUi9 z%ap2XScc95cCp#Qhc5yy7jKa4{HWpOOFnMA=0=j~>OFbeA1sI{)jnRYkZwQW(RCG`lG7T}LQLG{cD43TGX_H2O*}(-fTofK`ZnL^ z*<471C4mW7D&dKqW1RAA7GknIn&+@iw=O$z+PKzCyVY{;Y1RSvJ#M)h6BnS0b+Ffn zb?sRnSa5Rm@=PQh9;iN!sF!~Id~PjBtJ1vZ2)4>uafhloksY*MC2|Pui8!8Q6xin( zU^G2lVrpnnH`xpYdpLi>5558Kq%Zje*BSKgapR|F%P~z?9pZFxz1yftlg4%?4cs^k zE7Kz~AULKNvq-WM9&cqz0no<&N8kvsR`nE*z*9s@xaRPIk@@L83k?v-Zo z!&$jwY91~Pp8u9eFQi%Km>)~)*M_0NF1h5ArfO9g;=F>jX;JXdmr$yJ3do~_D8JX_ zl2q6g*9Ge1i?waPu(RkZ+3A>ts90sZV`Y$M+)1wG0D-rzNsR{xZny7#$>8 z$F+E75c#8xTC$JH08B6~h(XexP*!7-8xFVeFbwJs`EUiTB6|S%M#1kS$0G3^Yl%XU zMa9cTbmKoG>N+@m|2%xh2;qTbYw&0?Vg0Madb?gC`{!v-*+dgSMvoeF)~Q6145c-k zis!51c=ZgbMu9-|1gl0YMnT@{?*|H2jdU+9cy^?4a)>$2H*0@*C+t&*et@ubi3l|8 zx^~V>@=i#{uRyX_(Z%A-XeE-z8TwCf4+lglFnt`qS1^cgrmkKTt1^4~jng5NClQ^= zQRa)R2`pcgR65ACy&)>ZA0lIGUW-gZ@&vP88vL{uT^pZ2x#ev-c7Zd;8-8MM)fB^G{)eT1AJJc(T$(=xGvpWo-mpXumKVB4U4 z8C{2sjfx5}mkTDM&3ovxLpqzL9$>|_QbSQK0&Z%4!ivC;XN~a&+bf zUb``q0hv<;)R`ZPwbGb!iIIp}_PkhCI+(DAMGZ%W%8D{n<3&Lp3i-0TE+BeV zH`f&S@r6U-+_s5i)|)Z zy;c*OM1I0R328%m3h3ww*M(Ehv8Vyc2JxS*Hj3P*JbJMmvb_rL%SY>YX zCUT}r=LhOG1k~bOg3qh&q!IR+O$k#g?;PEG-`aTC4Y|_3XQxGu1NpO+rHAao!MBQR zJBi8a^MDuS7Mce#2oWHNu)Q+$wY13 zDZ0kxdf!gO{7lAwD(1hw*Q3n9os3ruleMMWC+0|Y=rZVb^g2;q(>aQpTo(`=SsR-{Quqg zJg*vSRy&6NRwJ5HpJ|V^@Z8-Y0Vqp%%)n5WUeI=GK-H%bZ$P7xeP&RLXr!nuygK%* zjgdtT6+^n=VR4^$6_nl{bRF&KSY)wcg76Rpsf*nd+DiOwVV`T^V#276MiVXV$xPz~ z1K;-E_S;=g*WfG|(<_g~tD(pPpG-W1iU50cv!H_~35DF7$%pTM=!3jl;rLp50OFcb zor+j@Uunt))p5zdlx^^z1mvI^HkZ8brrX!|cR zrt3Bu{Y?nud{iRm7EL2<=vPqFze8`OBUT|)cRUZznKL3nX|J8dCxS;Bs4fC>PS8>j^ zc4%YunO#cx;|v8>@FFW0;G*upYJe>DXNg%N^{iTjFA+a)alT!%i&ObnBVIW+3!i5V z)xmq(=UIGFy|quvyrf&Zfkvu(w1#BywIx`x=H+y%?!%$DUi>jf%Lbbx!>j&Lf4;7n&H=m^tm( z^D^1G-GJVAD1@6+;CVH3lK%Yi%d37G-Wu8HG02{A#Cg_KzqTbTv=cUXf~x5-N=hsL zh$q&m<1oBlq=}!~hM^viT=2DfHl4_NWU0IikL|e^j&d>QYV<^G=bKw@m#t$A$7g<> zLQ0y&sj6M=+f1$ z7a`P;KQ~-PJeqo?Nu$E`%hrW_ne4qIW4tVNUW{vjaoQaDJ!pcGc{5bbEDSGMucU`Y zlDFZ_;(sJZx1_kj>_q_Nx&Mxciva?`VJsUr*2Le;9JFUlFlIOznbn(gV_UM&;6t%B z4S>`}MhP#EKhSsv{WiKJU=IL$-QAt0?UCYiK##T9bN3#lrY_!i{oNY9%QVf$kd!=% z9`QDJB5A^2*p7{19}cy>6Hp8wunRcep@TJRv^kWMgDOltj*h7%5$gkY?@2rh<`sCu z!722Q(#Z}Hayps*QDUR4s?eUoB*!>IS{(L)TD(Ij0ABw=J`cM)t=cXmfeU(_qb={f zvPo#ItYui~RICGfH1k@sn`O3~X2d)lq+99MQ+WdNcFmAb4@o>8Loe)p?s27*C@tC^ z;;JIgj!VjvV_Rok{oHx^6{TYmas{_mg1-;1Z?I!#$n?l+Exr`gntZqYXpe;N1t7?m zeR0yVLPq|~rUCusL?->6HO||?v6bAy!a4t7)-zeKwE#EVk|M-pGAy!Jf2&~Ci;Nx3 zBX50(p`Y3y^X{M=61TbmMz;R`xu=Vp<1xy^uz7`0g!%RLb6?pW2h3aL4dCpGEBAlU zG$oU^`<0gQG@(e{5?(Z73d4pX4_M4C z-BUK%N}fl#AWb+Mar}kSg>saWg59_=Px2=^9g-rKQ4VuSycH4tinljU0`8|SUIj3b z-(~MXh!%Eg?F6BsIryCkY3ss!+E26?f@}mRP zFdB5+Cyz(V!d&})1gC99m_zOq-fb1?|3|%rwJRxV>W-GDXhEWbdU~wrfPrv$un3}A z=6?fF1qcFia%`xYf#$>y+UMVD8Rba!&Wp#69faEm-3iY*U`5!tO`2wFIuoIufQQll z4gLbHQ9d{08EUW-q}v$O*i--L0lJ9Iy~=lg*jtT!tElGWkJo2=pN{B5 z*cNJnL_6`*1J_`vZR^U78_MgXW)Cr+;mw^ML4i((rL*Bu9K|M8Gh1H7)za=+`wGPt zXiu0{tW;e2zOwFpi;U?d2GS*JPi%bFy6AmCg@rW~pFIAAhSP{iuYq`AcEBiU$vy+Sub@%v_52_nn%p7j)bFB|0TFk8DHz%ir<+2YmC5 zJKhO6g;GE+WcuuW4t5y5^*mk3@RJ+z3+7pd;Fy(ik!4r`2J zTSMrXARoC(&yVHa78_san8E(5YrY}#log39B?OWMt-JEB(#oHAtEAxptJrY$VRjo| zJUz`{v=A$>7Rd!PI`h0ksD;3uMFCw`V$4mw8!r-)5_qic*iF`fSoAoHc=w#H_U-c?UNG04G6dPN6x!S>og+bub#$C~W3QZnYkUp^|J8PiHUKr601*H$8yuDSY zHV_#iX+`@_l@W~wp$j3OKWAxv^Kj06gW|QppRs+#VK)4yMgqEg(XJ;= zM`XobHCLK7MrwxXva|GHn!V5}GpEmEiEXUDe^yw>PqA5B`E*uwAhLhIHJ0);Ik3j{ zI~{0z7PPYDnk^3=fUDb0!NT*qRrW7z+>;y?B-{QzhTS5~f7q6|?2*(~cf6)>C02@O z*ChlnXs5ZXBu?-aM1SHz)0PZHpwz4FLCS#3@GH;l%9$J38;r#hWl`lL<-PXaaCWXpk@I3&iKUHWq@pttffr zEMWa*Ze8+Fy+w6=Bk*WSs!K!LX`EzvwfzEF4Q6qczA8XE2D#rNq zd|$#`>r)vQn-z_52?B+%%Bh%Ud3NX?16I#YNPohyh=~15M;rknN$5X){HFplmW>nan z{r>`$0c!q4gyhAw(6qjz$SDTgZ}R54j)7_h)D`LB^8j-`;y{%)_Z5doXu{b?V&z5( zL*9CC3Wp6c*(zvZuz_Zso=g4d0r?vN?OZCJuD@_TBSKuW}iku{2h7W*c=2sce2SMK^@a z>-@rd#b5duxMhe|dE?>$Q@9@w^=>A4Q^>w8B`je|c5q0ww+Ff*Un9!!Du(D-+Ob_b zrlxFgcqmr*qeET=r6M;3e`5oK4|@&~W8l9saWisQyZ5fA+8VU(45_n3z(F%S=$cQX(1I>0 zLnn?(<-_J{sF5*Oq-|FroE7DlJtNI<$Jx(~noc`I+#(2rGCTBZmUYmY7DEgbYX^*O zAa;^&m&f3C3q16ly>uN$6F8HYX9=?R(_E}c#hOq+o0cFLEY@^%#K9+wy8a08+UBDn literal 0 HcmV?d00001 diff --git a/site/static/screenshots/passkey-authentication-starter.small.avif b/site/static/screenshots/passkey-authentication-starter.small.avif new file mode 100644 index 0000000000000000000000000000000000000000..255b235180058431778cde13cfc79c7e473f3ecf GIT binary patch literal 7397 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�S{jOTuA8e7fwb3^gS3>mUIOCev}06B zB8AEN-ddp|U7a{+q|%gC1flel>8U^YIK!k&y`V!tW5H>nk_=CvpHO)6J2)>T6nw_E z@lyLh9>wte>vAp=5^kqN?`>%BWg2qF#`r8+nquSahiGaq32s}z;(O}cx`6@N>EtqQ>_MCAndmS8%ogvY{D>JuBs3(+vV@!5b0+V+f;6QvF}aYABgX@0%LD{vYb3 B4A=kw literal 0 HcmV?d00001 diff --git a/sites.yml b/sites.yml index 9c3ea5e..62fe40e 100644 --- a/sites.yml +++ b/sites.yml @@ -893,6 +893,15 @@ date_created: 2022-02-03 date_added: 2024-01-22 +- title: Passkey authentication starter + url: https://d1rl0ue18b0151.cloudfront.net + repo: https://github.com/passlock-dev/svelte-passkeys + description: SvelteKit template featuring Passkeys, Social Sign in and more. + uses: [passlock, tailwind, superforms, lucia] + tags: [security, authentication, passkeys, template] + date_created: 2024-04-22 + date_added: 2024-05-17 + - title: Svead url: https://svead.pages.dev repo: https://github.com/spences10/svead diff --git a/tools.yml b/tools.yml index f59932d..532ea36 100644 --- a/tools.yml +++ b/tools.yml @@ -48,6 +48,7 @@ json5: https://github.com/json5/json5 katex: https://github.com/KaTeX/KaTeX liveblocks: https://liveblocks.io lodash: https://lodash.com +lucia: https://github.com/lucia-auth/lucia mapbox: https://mapbox.com markedjs: https://marked.js.org matter.js: https://brm.io/matter-js @@ -63,6 +64,7 @@ notion: https://notion.so octokit: https://github.com/octokit/octokit.js ogl: https://github.com/oframe/ogl panzoom: https://github.com/timmywil/panzoom +passlock: https://github.com/passlock-dev/passkeys picocss: https://picocss.com plausible: https://plausible.io playwright: https://playwright.dev @@ -86,6 +88,7 @@ spotify web api: https://github.com/JMPerez/spotify-web-api-js storyblock: https://storyblok.com storybook: https://storybook.js.org supabase: https://supabase.com +superforms: https://github.com/ciscoheat/sveltekit-superforms surge.sh: https://surge.sh svelte forms lib: https://github.com/tjinauyeung/svelte-forms-lib svelte-highlight: https://github.com/metonym/svelte-highlight