import{s as Ye,ae as ue,af as Ne,f as l,a as s,l as ct,g as o,D as p,c as a,h as rt,d as n,m as Ct,i,r as oe}from"./scheduler.2f9f1739.js";import{S as Ze,i as tn,b as ut,d as ft,m as mt,a as vt,t as dt,e as ht}from"./index.f9f1dac6.js";import{g as en,a as Qe}from"./styles.a749dd55.js";import{M as nn}from"./MarkdownLayout.50a9a114.js";import{I as Ve}from"./image.a4587660.js";import{L as Xe}from"./link.4e908ad9.js";function ln(h){let r;return{c(){r=ct("https://devcanvas.art")},l(u){r=Ct(u,"https://devcanvas.art")},m(u,m){i(u,r,m)},d(u){u&&n(r)}}}function on(h){let r;return{c(){r=ct("www.commentrig.com")},l(u){r=Ct(u,"www.commentrig.com")},m(u,m){i(u,r,m)},d(u){u&&n(r)}}}function sn(h){let r,u="DevCanvas (devcanvas.art) began as a fun experiment born from my journey learning SvelteKit and Supabase. What started as a simple platform for storing code snippets quickly evolved into something much more cooler: <em>an online editor that makes it easy to prototype and share ideas quickly and effortlessly.</em>",m,d,f="The Evolution",v,c,fe="A platform for storing code snippets, an idea I conceived while helping someone debug their code. The platform used to be called snippetland, but after getting deep in building and also trying to establish the name and stuff, I realized that another service named Snippetland that does the same thing (even better) exists.",xt,w,me="<p>Note: Devcanvas is not a competitive product, but rather a stepping stone for me into the indie hacking world. As said - “Imitate until you innovate”</p>",_t,b,ve="Snippetland early twitter posts:",wt,it,g,bt,y,de="The current form, which is a full-fledged online editor with cool features was just an experimentation. I first demoed it on twitter a long time ago.",gt,lt,$,yt,k,he="Seeing these again, devcanvas has definitely come a really long way.",$t,P,ce="Storing snippets still exists on DevCanvas, but haven’t gotten any updates for a while now.",kt,S,Ce="Feature Summary",Pt,D,xe="<li>Easy prototyping</li> <li>Effortless sharing</li> <li>Real-time editing (i.e fast previews)</li> <li>Super neat interface (from my perspective at least)</li>",St,T,_e="DevCanvas offers a robust set of features designed to enhance the frontend development experience. These include built-in support for popular tools like Tailwind CSS, Font Awesome, and GSAP, which can be accessed with just a click.",Dt,A,we="Devcanvas also supports SCSS, catering to developers who prefer using SCSS for their styling needs. Additionally, DevCanvas provides responsive design testing, allowing developers to see how their projects look on different devices.",Tt,j,be="Collaboration and Sharing",At,H,ge="One of the standout features of DevCanvas is its ability to keep projects private (a feature most keep behind a paywall), with sharing options limited to those with the link.",jt,E,ye="Projects can be embedded in websites, blogs, and documentation, making it simple to showcase work or integrate it into other content. Shareable URLs and code snippets in over 50 languages further enhance Devcanvas’s utility for both teaching and sharing code.",Ht,q,$e="Getting Started",Et,F,ke="To start using DevCanvas, simply navigate to the website and begin creating your frontend projects. The intuitive interface allows for easy prototyping and experimentation, making it a great sandbox for developers of all levels.",qt,I,Pe="Embedding Projects",Ft,L,Se="Embedding your DevCanvas projects into other platforms is straightforward. Use the provided iframe code snippet and paste it into your desired location on websites, blogs, or documentation. This feature is ideal for showcasing your work or integrating interactive elements into your content.",It,B,De="Unique Features.",Lt,M,Te="Compared to other online frontend editors, DevCanvas stands out with its built-in plugins for Tailwind CSS, Font Awesome, and GSAP, which are just a click away. This saves developers time and effort, allowing them to focus more on the creative aspects of their projects.",Bt,z,Ae="DevCanvas is designed with ease of use in mind, making it accessible to both beginners and experienced developers.",Mt,O,je="PWA Support",zt,R,He="As a Progressive Web App (PWA), DevCanvas also offers offline support, allowing users to continue working even when they are not connected to the internet. This feature is particularly beneficial for developers who need to work in environments with limited connectivity.",Ot,U,Ee="Challenges",Rt,W,qe="Got myself into a trial and error loop making the preview as fast as possible, most of the problem coming from network resource the might be brought in into the editor. Whoa, I just conceived a superb idea while writing this (would implement later).",Ut,G,Fe="Initially the Editor we utilize is Monaco Editor, but it really resource intensive and have a huge impact on performance in both the speed and memory consumption.",Wt,K,Ie="I quickly switch to Codemirror, after a feedback pointing out this issue, which is more lighter and efficient. I also kinda like the DX better than monaco editor.",Gt,N,Le="Another challenge was SSR that had to be turned off, because it caused alot of problems rendering the editor, as they heavily rely on client side APIs.",Kt,Q,Be="Tech Stack",Nt,V,Me="Devcanvas is built with Sveltekit, TailwindCSS, Supabase and no Typescript (I wish I did though).",Qt,X,ze="Though not the coolest or hardest product to build or make money from, The process of building it was incredibly enjoyable, and using it is just as fun – hence the tagline, “The Editor with Super Powers”.",Vt,J,Oe="Currently, DevCanvas is completely free to use.",Xt,Y,Re="Open Source",Jt,Z,Ue="DevCanvas is proudly open source, even though, It has always just been me building this for while. I hope to get others involved in this to make DevCanvas even better and cooler.",Yt,tt,We="<p>Warning: Lots of technical debt and ugly code, but i’m working to make it better for contribution.</p>",Zt,et,Ge="Have questions, suggestions, critique or feedback, I’d love to hear from you!",te,ot,st,se,C,ee,x,ae,_,pe,ne,nt,Ke="<strong>Stay Subtle 💛!</strong>",ie;return g=new Ve({props:{src:"https://paper-attachments.dropboxusercontent.com/s_DDD6D2B338E4CBBF14FF9A9AD7E8FDAF3F25B78364C5817500612BBD417A94F1_1726696577573_tweet_1690427906751651841_20240918_225354_via_10015_io.png"}}),$=new Ve({props:{src:"https://paper-attachments.dropboxusercontent.com/s_DDD6D2B338E4CBBF14FF9A9AD7E8FDAF3F25B78364C5817500612BBD417A94F1_1726696723556_image.png"}}),C=new Xe({props:{href:"https://devcanvas.art",rel:"nofollow",$$slots:{default:[ln]},$$scope:{ctx:h}}}),_=new Xe({props:{href:"http://www.commentrig.com",rel:"nofollow",$$slots:{default:[on]},$$scope:{ctx:h}}}),{c(){r=l("p"),r.innerHTML=u,m=s(),d=l("h3"),d.textContent=f,v=s(),c=l("p"),c.textContent=fe,xt=s(),w=l("blockquote"),w.innerHTML=me,_t=s(),b=l("p"),b.textContent=ve,wt=s(),it=l("p"),ut(g.$$.fragment),bt=s(),y=l("p"),y.textContent=de,gt=s(),lt=l("p"),ut($.$$.fragment),yt=s(),k=l("p"),k.textContent=he,$t=s(),P=l("p"),P.textContent=ce,kt=s(),S=l("h3"),S.textContent=Ce,Pt=s(),D=l("ul"),D.innerHTML=xe,St=s(),T=l("p"),T.textContent=_e,Dt=s(),A=l("p"),A.textContent=we,Tt=s(),j=l("h3"),j.textContent=be,At=s(),H=l("p"),H.textContent=ge,jt=s(),E=l("p"),E.textContent=ye,Ht=s(),q=l("h3"),q.textContent=$e,Et=s(),F=l("p"),F.textContent=ke,qt=s(),I=l("h3"),I.textContent=Pe,Ft=s(),L=l("p"),L.textContent=Se,It=s(),B=l("h3"),B.textContent=De,Lt=s(),M=l("p"),M.textContent=Te,Bt=s(),z=l("p"),z.textContent=Ae,Mt=s(),O=l("h3"),O.textContent=je,zt=s(),R=l("p"),R.textContent=He,Ot=s(),U=l("h3"),U.textContent=Ee,Rt=s(),W=l("p"),W.textContent=qe,Ut=s(),G=l("p"),G.textContent=Fe,Wt=s(),K=l("p"),K.textContent=Ie,Gt=s(),N=l("p"),N.textContent=Le,Kt=s(),Q=l("h3"),Q.textContent=Be,Nt=s(),V=l("p"),V.textContent=Me,Qt=s(),X=l("p"),X.textContent=ze,Vt=s(),J=l("p"),J.textContent=Oe,Xt=s(),Y=l("h3"),Y.textContent=Re,Jt=s(),Z=l("p"),Z.textContent=Ue,Yt=s(),tt=l("blockquote"),tt.innerHTML=We,Zt=s(),et=l("p"),et.textContent=Ge,te=s(),ot=l("p"),st=l("strong"),se=ct("Visit "),ut(C.$$.fragment),ee=s(),x=l("p"),ae=ct("Also checkout my next product CommentRig ("),ut(_.$$.fragment),pe=ct(") - A modern comment management for websites."),ne=s(),nt=l("p"),nt.innerHTML=Ke},l(t){r=o(t,"P",{"data-svelte-h":!0}),p(r)!=="svelte-ii7vus"&&(r.innerHTML=u),m=a(t),d=o(t,"H3",{"data-svelte-h":!0}),p(d)!=="svelte-1whljic"&&(d.textContent=f),v=a(t),c=o(t,"P",{"data-svelte-h":!0}),p(c)!=="svelte-1fone56"&&(c.textContent=fe),xt=a(t),w=o(t,"BLOCKQUOTE",{"data-svelte-h":!0}),p(w)!=="svelte-1ljqb1q"&&(w.innerHTML=me),_t=a(t),b=o(t,"P",{"data-svelte-h":!0}),p(b)!=="svelte-gq9bd5"&&(b.textContent=ve),wt=a(t),it=o(t,"P",{});var e=rt(it);ft(g.$$.fragment,e),e.forEach(n),bt=a(t),y=o(t,"P",{"data-svelte-h":!0}),p(y)!=="svelte-1q4cgea"&&(y.textContent=de),gt=a(t),lt=o(t,"P",{});var at=rt(lt);ft($.$$.fragment,at),at.forEach(n),yt=a(t),k=o(t,"P",{"data-svelte-h":!0}),p(k)!=="svelte-138ckjh"&&(k.textContent=he),$t=a(t),P=o(t,"P",{"data-svelte-h":!0}),p(P)!=="svelte-5h9ye4"&&(P.textContent=ce),kt=a(t),S=o(t,"H3",{"data-svelte-h":!0}),p(S)!=="svelte-11kglwg"&&(S.textContent=Ce),Pt=a(t),D=o(t,"UL",{"data-svelte-h":!0}),p(D)!=="svelte-1r0s55r"&&(D.innerHTML=xe),St=a(t),T=o(t,"P",{"data-svelte-h":!0}),p(T)!=="svelte-ojkfxd"&&(T.textContent=_e),Dt=a(t),A=o(t,"P",{"data-svelte-h":!0}),p(A)!=="svelte-wtcbti"&&(A.textContent=we),Tt=a(t),j=o(t,"H3",{"data-svelte-h":!0}),p(j)!=="svelte-a6niq"&&(j.textContent=be),At=a(t),H=o(t,"P",{"data-svelte-h":!0}),p(H)!=="svelte-ygrrnm"&&(H.textContent=ge),jt=a(t),E=o(t,"P",{"data-svelte-h":!0}),p(E)!=="svelte-9mpnnr"&&(E.textContent=ye),Ht=a(t),q=o(t,"H3",{"data-svelte-h":!0}),p(q)!=="svelte-1fn0x1t"&&(q.textContent=$e),Et=a(t),F=o(t,"P",{"data-svelte-h":!0}),p(F)!=="svelte-46hf6o"&&(F.textContent=ke),qt=a(t),I=o(t,"H3",{"data-svelte-h":!0}),p(I)!=="svelte-1mm2b7h"&&(I.textContent=Pe),Ft=a(t),L=o(t,"P",{"data-svelte-h":!0}),p(L)!=="svelte-iaf4d9"&&(L.textContent=Se),It=a(t),B=o(t,"H3",{"data-svelte-h":!0}),p(B)!=="svelte-1pcgvcc"&&(B.textContent=De),Lt=a(t),M=o(t,"P",{"data-svelte-h":!0}),p(M)!=="svelte-ygopm4"&&(M.textContent=Te),Bt=a(t),z=o(t,"P",{"data-svelte-h":!0}),p(z)!=="svelte-imvg1o"&&(z.textContent=Ae),Mt=a(t),O=o(t,"H3",{"data-svelte-h":!0}),p(O)!=="svelte-mfsc67"&&(O.textContent=je),zt=a(t),R=o(t,"P",{"data-svelte-h":!0}),p(R)!=="svelte-ptdyhu"&&(R.textContent=He),Ot=a(t),U=o(t,"H3",{"data-svelte-h":!0}),p(U)!=="svelte-5apwha"&&(U.textContent=Ee),Rt=a(t),W=o(t,"P",{"data-svelte-h":!0}),p(W)!=="svelte-1tzr3ow"&&(W.textContent=qe),Ut=a(t),G=o(t,"P",{"data-svelte-h":!0}),p(G)!=="svelte-2h8wp4"&&(G.textContent=Fe),Wt=a(t),K=o(t,"P",{"data-svelte-h":!0}),p(K)!=="svelte-ypjs6c"&&(K.textContent=Ie),Gt=a(t),N=o(t,"P",{"data-svelte-h":!0}),p(N)!=="svelte-1yxpznr"&&(N.textContent=Le),Kt=a(t),Q=o(t,"H3",{"data-svelte-h":!0}),p(Q)!=="svelte-1qcmzd0"&&(Q.textContent=Be),Nt=a(t),V=o(t,"P",{"data-svelte-h":!0}),p(V)!=="svelte-micdqk"&&(V.textContent=Me),Qt=a(t),X=o(t,"P",{"data-svelte-h":!0}),p(X)!=="svelte-d2916y"&&(X.textContent=ze),Vt=a(t),J=o(t,"P",{"data-svelte-h":!0}),p(J)!=="svelte-1j3zibx"&&(J.textContent=Oe),Xt=a(t),Y=o(t,"H3",{"data-svelte-h":!0}),p(Y)!=="svelte-lykb3x"&&(Y.textContent=Re),Jt=a(t),Z=o(t,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-1sob82i"&&(Z.textContent=Ue),Yt=a(t),tt=o(t,"BLOCKQUOTE",{"data-svelte-h":!0}),p(tt)!=="svelte-11wx41h"&&(tt.innerHTML=We),Zt=a(t),et=o(t,"P",{"data-svelte-h":!0}),p(et)!=="svelte-1pkpzir"&&(et.textContent=Ge),te=a(t),ot=o(t,"P",{});var pt=rt(ot);st=o(pt,"STRONG",{});var re=rt(st);se=Ct(re,"Visit "),ft(C.$$.fragment,re),re.forEach(n),pt.forEach(n),ee=a(t),x=o(t,"P",{});var le=rt(x);ae=Ct(le,"Also checkout my next product CommentRig ("),ft(_.$$.fragment,le),pe=Ct(le,") - A modern comment management for websites."),le.forEach(n),ne=a(t),nt=o(t,"P",{"data-svelte-h":!0}),p(nt)!=="svelte-iz2oto"&&(nt.innerHTML=Ke)},m(t,e){i(t,r,e),i(t,m,e),i(t,d,e),i(t,v,e),i(t,c,e),i(t,xt,e),i(t,w,e),i(t,_t,e),i(t,b,e),i(t,wt,e),i(t,it,e),mt(g,it,null),i(t,bt,e),i(t,y,e),i(t,gt,e),i(t,lt,e),mt($,lt,null),i(t,yt,e),i(t,k,e),i(t,$t,e),i(t,P,e),i(t,kt,e),i(t,S,e),i(t,Pt,e),i(t,D,e),i(t,St,e),i(t,T,e),i(t,Dt,e),i(t,A,e),i(t,Tt,e),i(t,j,e),i(t,At,e),i(t,H,e),i(t,jt,e),i(t,E,e),i(t,Ht,e),i(t,q,e),i(t,Et,e),i(t,F,e),i(t,qt,e),i(t,I,e),i(t,Ft,e),i(t,L,e),i(t,It,e),i(t,B,e),i(t,Lt,e),i(t,M,e),i(t,Bt,e),i(t,z,e),i(t,Mt,e),i(t,O,e),i(t,zt,e),i(t,R,e),i(t,Ot,e),i(t,U,e),i(t,Rt,e),i(t,W,e),i(t,Ut,e),i(t,G,e),i(t,Wt,e),i(t,K,e),i(t,Gt,e),i(t,N,e),i(t,Kt,e),i(t,Q,e),i(t,Nt,e),i(t,V,e),i(t,Qt,e),i(t,X,e),i(t,Vt,e),i(t,J,e),i(t,Xt,e),i(t,Y,e),i(t,Jt,e),i(t,Z,e),i(t,Yt,e),i(t,tt,e),i(t,Zt,e),i(t,et,e),i(t,te,e),i(t,ot,e),oe(ot,st),oe(st,se),mt(C,st,null),i(t,ee,e),i(t,x,e),oe(x,ae),mt(_,x,null),oe(x,pe),i(t,ne,e),i(t,nt,e),ie=!0},p(t,e){const at={};e&2&&(at.$$scope={dirty:e,ctx:t}),C.$set(at);const pt={};e&2&&(pt.$$scope={dirty:e,ctx:t}),_.$set(pt)},i(t){ie||(vt(g.$$.fragment,t),vt($.$$.fragment,t),vt(C.$$.fragment,t),vt(_.$$.fragment,t),ie=!0)},o(t){dt(g.$$.fragment,t),dt($.$$.fragment,t),dt(C.$$.fragment,t),dt(_.$$.fragment,t),ie=!1},d(t){t&&(n(r),n(m),n(d),n(v),n(c),n(xt),n(w),n(_t),n(b),n(wt),n(it),n(bt),n(y),n(gt),n(lt),n(yt),n(k),n($t),n(P),n(kt),n(S),n(Pt),n(D),n(St),n(T),n(Dt),n(A),n(Tt),n(j),n(At),n(H),n(jt),n(E),n(Ht),n(q),n(Et),n(F),n(qt),n(I),n(Ft),n(L),n(It),n(B),n(Lt),n(M),n(Bt),n(z),n(Mt),n(O),n(zt),n(R),n(Ot),n(U),n(Rt),n(W),n(Ut),n(G),n(Wt),n(K),n(Gt),n(N),n(Kt),n(Q),n(Nt),n(V),n(Qt),n(X),n(Vt),n(J),n(Xt),n(Y),n(Jt),n(Z),n(Yt),n(tt),n(Zt),n(et),n(te),n(ot),n(ee),n(x),n(ne),n(nt)),ht(g),ht($),ht(C),ht(_)}}}function an(h){let r,u;const m=[h[0],Je];let d={$$slots:{default:[sn]},$$scope:{ctx:h}};for(let f=0;f<m.length;f+=1)d=ue(d,m[f]);return r=new nn({props:d}),{c(){ut(r.$$.fragment)},l(f){ft(r.$$.fragment,f)},m(f,v){mt(r,f,v),u=!0},p(f,[v]){const c=v&1?en(m,[v&1&&Qe(f[0]),v&0&&Qe(Je)]):{};v&2&&(c.$$scope={dirty:v,ctx:f}),r.$set(c)},i(f){u||(vt(r.$$.fragment,f),u=!0)},o(f){dt(r.$$.fragment,f),u=!1},d(f){ht(r,f)}}}const Je={title:"I built an open source Codepen alternative - Devcanvas",description:"Though not the coolest or hardest product to build or make money from, The process of building it was incredibly enjoyable, and using it is just as fun – hence the tagline, 'The Editor with Super Powers'",date:"2024-09-11",lastmod:"2024-09-11",categories:["product launch","devcanvas","codepen"],published:!0};function pn(h,r,u){return h.$$set=m=>{u(0,r=ue(ue({},r),Ne(m)))},r=Ne(r),[r]}class hn extends Ze{constructor(r){super(),tn(this,r,pn,an,Ye,{})}}export{hn as default,Je as metadata};