PageSourceSearch

https://supersaas.dev/_nuxt/BHba-I3P.js

js supersaas.dev collected 2026-10-04 00:31:08 UTC 45,430 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BhqFrda92.js","./Ib1jYPSS.js","./B5tEj6Uj.js","./CQtAXI_i.js","./BW3xJdEx.js","./Ce-9qidD.js","./fAzeDrst.js","./CWibC7jz.js","./DmWMXzQb.js","./BeONWUPD.js","./4xapfqFu.js","./CLlOHeIq.js","./CqIq-PLn.js","./BnDTbt6S.js","./Dwh1tnUL.js","./iaKbPwXn.js","./5CncodWL.js","./DVWNOnoX2.js","./BIev7Lxr.js","./D8OqyIpW.js","./DK3FLX77.js","./BDNMzG2s2.js","./B2KINm822.js","./Cdsi25uB.js","./CkGZAVVJ.js","./hePW80VL.js","./DE8x6cDN.js","./DsIbDjJh.js","./HclGiUj8.js","./B9_cCDka.js","./D183iiZ2.js","./B5MLGF2n.js","./9zzQVcXL2.js","./D2YIYEph.js","./Clw9TBBN.js","./BJ_jidhW.js","./DyZZeFzt.js","./4CUJ-Wsi.js","./EZ1KTpnV.js","./VideoIntro.MxBGZz0V.css","./CXBYgFV72.js","./DEZR38_O2.js"])))=>i.map(i=>d[i]);
2import{B as e,D as t,E as n,K as r,Kt as i,O as a,On as o,Qn as s,Rt as c,U as l,_ as u,b as d,bt as f,et as p,g as m,it as h,k as g,mt as _,nr as v,o as y,qt as b,tr as x,v as S,vn as C,y as w}from"./Ib1jYPSS.js";import{n as T,r as E}from"./Cdsi25uB.js";import{t as D}from"./DsIbDjJh.js";import{t as O}from"./HclGiUj8.js";import{r as k}from"./B5tEj6Uj.js";import{t as A}from"./B9_cCDka.js";import{_ as ee,f as j,h as M,l as te}from"./B5MLGF2n.js";import{t as ne}from"./Bq_emF49.js";import{t as N}from"./BeONWUPD.js";import{t as P}from"./DmWMXzQb.js";import{t as F}from"./Clw9TBBN.js";import{t as re}from"./C-_XJEjr.js";import{t as ie}from"./DfnUcVgZ.js";import{t as I}from"./EZ1KTpnV.js";import{n as L}from"./BYpGnJ93.js";import{t as R}from"./DEZR38_O2.js";import{t as z}from"./BDNMzG2s2.js";import{t as B}from"./BCLtDbFw2.js";import{t as ae}from"./Dm377NiN.js";import{n as oe,t as V}from"./BMqowrAH.js";var H=[`x`,`y`,`width`,`height`],U=Object.assign(g({__name:`InteractiveGridPattern`,props:{squareSize:{default:48}},setup(e){let t=e,n=c(`svg`),{width:r,height:i}=te(n),{elementX:a,elementY:l,isOutside:u}=ee(n),p=m(()=>Math.ceil(r.value/t.squareSize)),h=m(()=>Math.ceil(i.value/t.squareSize)),g=m(()=>{if(u.value)return-1;let e=Math.floor(a.value/t.squareSize);return Math.floor(l.value/t.squareSize)*p.value+e});return(t,r)=>(_(),d(`svg`,{ref_key:`svg`,ref:n,"aria-hidden":`true`,class:`absolute inset-0 size-full`},[(_(!0),d(y,null,f(o(p)*o(h),t=>(_(),d(`rect`,{key:t,x:(t-1)%o(p)*e.squareSize,y:Math.floor((t-1)/o(p))*e.squareSize,width:e.squareSize,height:e.squareSize,class:s([`stroke-neutral-900/[0.04] dark:stroke-white/[0.04]`,t-1===o(g)?`fill-neutral-900/[0.04] dark:fill-white/[0.04] duration-100`:`fill-transparent duration-1000`]),style:{"transition-property":`fill`}},null,10,H))),128))],512))}}),{__name:`InteractiveGridPattern`}),W=[`aria-label`],G=.12,K=70,q=120,se=560,ce=420,le=4,ue=1600,de=1100,fe=Object.assign(g({__name:`Mascot`,props:{directions:{},reactions:{},size:{default:140},label:{default:`mascot`}},setup(e){let t=[`up-left`,`up`,`up-right`,`left`,`center`,`right`,`down-left`,`down`,`down-right`],n=[`blink`,`heart`,`sparkle`,`surprised`,`wink`,`bashful`,`sleepy`,`dizzy`,`delighted`],r=[`right`,`down-right`,`down`,`down-left`,`left`,`up-left`,`up`,`up-right`],i=Math.PI*2/r.length,a=[`heart`,`sparkle`,`delighted`],s=[{transform:`scale(1, 1)`,easing:`ease-in`},{transform:`scale(1.10, 0.86)`,offset:.18,easing:`ease-out`},{transform:`scale(0.95, 1.08)`,offset:.45,easing:`ease-in-out`},{transform:`scale(1.03, 0.97)`,offset:.72,easing:`ease-in-out`},{transform:`scale(1, 1)`}];function c(e){return`${e%3*50}% ${Math.floor(e/3)*50}%`}function l(e){return Math.atan2(Math.sin(e),Math.cos(e))}let f=C(null),p=C(null),g=C(`center`),v=C(null),y=M(`(hover: hover) and (pointer: fine)`),b=M(`(prefers-reduced-motion: reduce)`),S=-1,w=null;function T(){let e=f.value;if(!e||!w)return;let t=e.getBoundingClientRect(),n=w.x-(t.left+t.width/2),a=w.y-(t.top+t.height/2);if(Math.hypot(n,a)<K){S=-1,g.value=`center`;return}let o=Math.atan2(a,n);S!==-1&&Math.abs(l(o-S*i))<i/2+G||(S=(Math.round(o/i)+r.length)%r.length,g.value=r[S])}let E=m(()=>y.value?window:null);j(E,`pointermove`,e=>{w={x:e.clientX,y:e.clientY},T()},{passive:!0}),j(E,`scroll`,T,{passive:!0});let D=[],O={count:0,at:0};function k(){D.forEach(window.clearTimeout),D=[]}h(k);function A(){k();let e=(e,t)=>
2{D.push(window.setTimeout(()=>{v.value=t},e))},t=Date.now();O.count=t-O.at<ue?O.count+1:1,O.at=t,O.count>=le?(O.count=0,v.value=`dizzy`,e(de,null)):(v.value=`blink`,e(q,a[(O.count-1)%a.length]),e(se,null)),!b.value&&p.value?.animate(s,{duration:ce,easing:`linear`})}return(r,i)=>(_(),d(`button`,{ref_key:`buttonRef`,ref:f,type:`button`,"aria-label":`Boop the ${e.label}`,class:`relative block shrink-0 cursor-pointer select-none appearance-none border-0 bg-transparent p-0`,style:x({width:`${e.size}px`,height:`${e.size}px`}),onClick:A},[u(`span`,{ref_key:`squashRef`,ref:p,class:`relative block size-full origin-[50%_78%]`},[u(`span`,{class:`absolute inset-0 bg-no-repeat bg-[length:300%_300%]`,style:x({backgroundImage:`url(${e.directions})`,backgroundPosition:c(t.indexOf(o(g))),opacity:+!o(v)})},null,4),u(`span`,{class:`absolute inset-0 bg-no-repeat bg-[length:300%_300%]`,style:x({backgroundImage:`url(${e.reactions})`,backgroundPosition:c(n.indexOf(o(v)??`blink`)),opacity:+!!o(v)})},null,4)],512)],12,W))}}),{__name:`Mascot`}),pe={class:`flex items-center justify-center gap-4 mt-8`},me={class:`flex items-center`},he={class:`text-xs sm:text-sm text-neutral-500 max-w-none sm:max-w-xs text-left`},ge={__name:`HeroAvatars`,props:{label:{type:String,default:`280+ customers love Supersaas`}},setup(e){let n=[{src:`/avatars/tim.jpg`,alt:`Tim Pulver`},{src:`/avatars/atinux.jpg`,alt:`Atinux`},{src:`/avatars/alex.jpg`,alt:`Alexandr Os`},{src:`/avatars/jeremy.jpg`,alt:`Jeremy Holstein`},{src:`/avatars/devin.jpg`,alt:`Devin Schumacher`},{src:`/avatars/heiko.jpg`,alt:`Heiko Brömmelstrote`},{src:`/avatars/eric.jpg`,alt:`Eric Arrington`}];return(r,i)=>{let a=P,o=ae,s=B;return _(),d(`div`,pe,[t(o,null,{default:b(()=>[(_(),d(y,null,f(n,(e,n)=>t(a,{key:n,src:e.src,alt:e.alt},null,8,[`src`,`alt`])),64))]),_:1}),u(`div`,null,[u(`div`,me,[(_(),d(y,null,f(5,e=>t(s,{key:e,name:`i-heroicons-star-16-solid`,class:`text-yellow-500`})),64))]),u(`p`,he,v(e.label),1)])])}}},_e={class:`relative mt-8 sm:mt-10 mx-auto flex flex-col gap-2 max-w-md`},ve={class:`bg-neutral-100 dark:bg-neutral-900 rounded-3xl p-2`},ye={key:0,class:`mt-2 mx-2`},be={class:`flex items-center gap-2`},xe={class:`text-xs text-neutral-500`},Se=100,Ce=Object.assign(g({__name:`HeroCta`,async setup(e){let r,a,{data:s}=([r,a]=i(()=>A(`/api/purchase-count`,{server:!1,lazy:!0},`$torK76Jxfs`)),r=await r,a(),r);return(e,r)=>{let i=F,a=ne;return _(),d(`div`,_e,[u(`div`,ve,[t(i,{size:`xl`,"data-s:event":`Clicked Main CTA`,to:`essentialPurchaseLink`in e?e.essentialPurchaseLink:o(L),target:`_blank`,ui:{leadingIcon:`size-5`},class:`rounded-2xl text-sm sm:text-[15px] py-2.5 px-3 font-medium border border-[transparent] bg-neutral-900 hover:bg-neutral-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-neutral-900 hover:opacity-90 transition-all duration-150 ease-in-out group relative overflow-hidden whitespace-nowrap flex items-center justify-center bg-gradient-to-b from-[#2c2c30] to-[#1d1d20] text-white before:shadow-[0px_2px_0.4px_0px_rgba(255,_255,_255,_0.16)_inset] before:pointer-events-none before:absolute before:inset-0 before:rounded-xl`},{default:b(()=>[...r[0]||=[n(` Buy Now for $149 (Save $99) `,-1)]]),_:1},8,[`to`]),o(s)===null?w(``,!0):(_(),d(`div`,ye,[u(`div`,be,[t(a,{"model-value":o(s)??0,size:`md`,class:`flex-1`,"aria-label":`Progress of the offer`},null,8,[`model-value`]),u(`span`,xe,v(o(s))+`/`+v(Se)+` used`,1)])]))])])}}}),{__name:`HeroCta`});function J(t,n,r=!1){return(r,i)=>g({inheritAttrs:!1,props:t,emits:[`hydrated`],setup(t,r){let o=a({loader:i}),s=a({hydrate:n(t),loader:()=>Promise.resolve(o)}),c=()=>{r.emit(`hydrated`)};return()=>e(s,p(r.attrs,{onVnodeMounted:c}),r.slots)}})}var Y=J({hydrateOnVisible:{type:[Object,Boolean],required:!1,default:!0}},e=>r(e.hydrateOnVisible===!0?void 0:e.hydrateOnVisible)),we=J({hydrateOnIdle:{type:[Number,Boolean],required:!1,default:!0}},e=>e.hydrateOnIdle===0?void 0:l(e.hydrateOnIdle===!0?void 0:e.hydrateOnIdle))(`components/HeroTestimonials.vue`,()=>O(()=>import(`./BhqFrda92.js`).then(e=>e.default||e),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)),Te={class:`relative isolate`},Ee={class:`hero-grid absolute inset-0 -z-10 pointer-events-none`},De={class:`max-w-5xl mx-auto`},Oe={class:`text-center`},ke={class:`animate-reveal flex justify-center mb-2`},Ae={class:`animate-reveal`,style:{"animation-delay":`300ms`}},je={class:`mt-4`},Me=Object.assign(z(g({__name:`Hero`,setup(e){return(e,n)=>{let r=U,i=fe,a=ge,o=Ce,s=we,c=I;return _(),d(`div`,Te,[u(`div`,Ee,[t(r)]),t(c,{class:`pt-10`},{default:b(()=>[u(`div`,De,[u(`div`,Oe,[u(`div`,ke,[t(i,{directions:`/mascots/scout-directions.webp`,reactions:`/mascots/scout-reactions.webp`,label:`scout`,size:140,class:`-ml-4`})]),n[0]||=u(`h1`,{class:`animate-reveal text-5xl sm:text-6xl font-bold text-balance font-fancy text-neutral-950 dar
2k:text-white`,style:{"animation-delay":`80ms`}},` The Nuxt Saas boilerplate built for AI Coding agents `,-1),n[1]||=u(`p`,{class:`animate-reveal text-base sm:text-xl text-neutral-700 dark:text-neutral-400 mt-3 max-w-5x text-center mx-auto`},` Humans and coding agents both find it easy to extend. Auth, payments, and organizations are done, so you spend your time on the idea - yours, a client's, or your team's. From clone to production in one afternoon. `,-1),u(`div`,Ae,[t(a),t(o)])])]),u(`div`,je,[t(s,{"hydrate-on-idle":``})])]),_:1})])}}}),[[`__scopeId`,`data-v-68fe213a`]]),{__name:`Hero`}),Ne={class:`max-w-3xl mx-auto text-center`},Pe={class:`inline-flex items-center gap-2 text-xs font-medium px-3 py-1 rounded-full bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`},Fe={class:`relative max-w-5xl mx-auto mt-10`},Ie={class:`grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8`},Le={class:`flex items-center gap-2.5`},Re={class:`text-sm font-medium`},ze={class:`text-lg font-semibold mt-5`},Be={class:`mt-5 space-y-3 flex-1`},Ve={class:`text-neutral-700 dark:text-neutral-300`},He={class:`text-sm text-neutral-500 dark:text-neutral-400`},Ue=Object.assign(g({__name:`WhyNotAiAlone`,setup(e){let r=[{key:`blank`,icon:`i-lucide-file-question`,label:`A blank repo + your agent`,headline:`Everything is a decision you have to make first.`,points:[`You spec every auth, billing and permission flow yourself.`,`No conventions exist, so nothing looks like anything else.`,`You review security-critical code you never designed.`,`Each correction costs another prompt, another hour.`],metric:`30 hrs`,metricLabel:`before your first real feature`,card:`border-neutral-200 dark:border-white/10 bg-neutral-50 dark:bg-neutral-900`,chip:`bg-neutral-200 text-neutral-600 dar
2k:bg-white/10 dark:text-neutral-300`,pointIcon:`i-lucide-x`,pointIconClass:`text-rose-500`,divider:`border-neutral-200 dark:border-white/10`,metricClass:`text-neutral-500 dark:text-neutral-400`},{key:`kit`,icon:`i-lucide-sparkles`,label:`Supersaas + your agent`,headline:`The foundation is settled before the first prompt.`,points:[`Auth, billing, teams and admin already work on day one.`,`A skill per module tells your agent the conventions.`,`Docs, llms.txt and an MCP server it can query.`,`Typed end to end, so wrong guesses fail at build time.`],metric:`One afternoon`,metricLabel:`clone, configure, deploy`,card:`border-emerald-500/30 bg-emerald-50/60 dark:bg-emerald-500/5 ring-1 ring-emerald-500/10`,chip:`bg-emerald-500 text-white`,pointIcon:`i-lucide-check`,pointIconClass:`text-emerald-500`,divider:`border-emerald-500/20`,metricClass:`text-emerald-600 dark:text-emerald-400`}];return(e,i)=>{let a=N,o=I;return _(),S(o,{class:`pt-16 md:pt-32`},{default:b(()=>[u(`div`,Ne,[u(`span`,Pe,[t(a,{name:`i-lucide-sparkles`,class:`text-sm`}),i[0]||=n(` Supersaas + AI, not AI alone `,-1)]),i[1]||=u(`h2`,{class:`text-3xl sm:text-4xl font-bold font-fancy mt-5 text-balance text-neutral-950 dark:text-white`},` Your agent is fast. It still needs somewhere to start. `,-1)]),u(`div`,Fe,[u(`div`,Ie,[(_(),d(y,null,f(r,e=>u(`div`,{key:e.key,class:s([`flex flex-col rounded-3xl border p-6 sm:p-8`,e.card])},[u(`div`,Le,[u(`span`,{class:s([`h-9 w-9 shrink-0 rounded-xl flex items-center justify-center`,e.chip])},[t(a,{name:e.icon,class:`text-base`},null,8,[`name`])],2),u(`p`,Re,v(e.label),1)]),u(`p`,ze,v(e.headline),1),u(`ul`,Be,[(_(!0),d(y,null,f(e.points,n=>(_(),d(`li`,{key:n,class:`flex gap-3 text-sm leading-6`},[t(a,{name:e.pointIcon,class:s([`text-base shrink-0 mt-0.5`,e.pointIconClass])},null,8,[`name`,`class`]),u(`span`,Ve,v(n),1)]))),128))]),u(`div`,{class:s([`mt-6 pt-5 border-t flex items-baseline gap-3`,e.divider])},[u(`span`,{class:s([`text-3xl font-bold font-fancy`,e.metricClass])},v(e.metric),3),u(`span`,He,v(e.metricLabel),1)],2)],2)),64))])])]),_:1})}}}),{__name:`WhyNotAiAlone`}),We={class:`rounded-3xl border border-neutral-200 dark:border-white/10 bg-neutral-50 dark:bg-neutral-900 overflow-hidden`},Ge={class:`grid grid-cols-1 lg:grid-cols-3 divide-y lg:divide-y-0 lg:divide-x divide-neutral-200 dark:divide-white/10`},Ke={class:`p-6 sm:p-8`},qe={class:`inline-flex items-center gap-2 text-xs font-medium px-3 py-1 rounded-full bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`},Je={class:`text-2xl sm:text-3xl font-bold font-fancy mt-5 text-balance text-neutral-950 dark:text-white`}
2,Ye={class:`text-sm text-neutral-600 dark:text-neutral-400 mt-3 leading-6`},Xe={class:`font-semibold text-neutral-900 dark:text-white`},Ze={class:`lg:col-span-2 p-6 sm:p-8`},Qe={class:`flex items-baseline justify-between`},$e={class:`text-xs font-mono text-neutral-500 dark:text-neutral-400`},et={class:`grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-1 mt-4`},tt={class:`text-sm truncate flex-1`},nt={class:`text-sm font-mono tabular-nums text-neutral-500 dark:text-neutral-400`},rt={class:`flex items-center justify-between mt-6 pt-4 border-t border-neutral-200 dark:border-white/10`},it={class:`text-3xl font-bold font-fancy text-neutral-950 dark:text-white`},X=50,at=Object.assign(g({__name:`TimeBreakdown`,setup(e){let r=[{icon:`i-lucide-lock`,title:`Authentication`,hours:5},{icon:`i-lucide-users`,title:`Teams & orgs`,hours:4},{icon:`i-lucide-credit-card`,title:`Payments`,hours:3},{icon:`i-lucide-shield-check`,title:`Super admin`,hours:3},{icon:`i-lucide-palette`,title:`UI system`,hours:3},{icon:`i-lucide-megaphone`,title:`Marketing & SEO`,hours:2},{icon:`i-lucide-bot`,title:`Agent-ready`,hours:2},{icon:`i-lucide-database`,title:`Database & ORM`,hours:2},{icon:`i-lucide-mail`,title:`Transactional email`,hours:2},{icon:`i-lucide-rocket`,title:`Deployment`,hours:2},{icon:`i-lucide-hard-drive`,title:`File storage`,hours:2}],i=r.reduce((e,t)=>e+t.hours,0),a=Math.round(i/8),s=(i*X).toLocaleString(`en-US`);return(e,c)=>{let l=N,p=F,m=I;return _(),S(m,{class:`pt-16 md:pt-32`},{default:b(()=>[u(`div`,We,[u(`div`,Ge,[u(`div`,Ke,[u(`span`,qe,[t(l,{name:`i-lucide-hourglass`,class:`text-sm`}),c[0]||=n(` The part nobody puts on the roadmap `,-1)]),u(`h2`,Je,v(o(i))+` hours of foundational work before your first customer. `,1),u(`p`,Ye,[n(` Every SaaS starts with the same unpaid work. At $`+v(X)+`/hr that's `),u(`span`,Xe,`$`+v(o(s)),1),c[1]||=n(` of your time - spent before the part you actually wanted to build. `,-1)]),t(p,{size:`lg`,class:`mt-6`,"data-s:event":`Clicked Time Breakdown CTA`,to:`essentialPurchaseLink`in e?e.essentialPurchaseLink:o(L),target:`_blank`,color:`primary`},{default:b(()=>[n(` Skip all `+v(o(i))+` hours - $149 `,1)]),_:1},8,[`to`]),c[2]||=u(`p`,{class:`text-xs text-neutral-500 dark:text-neutral-400 mt-3`},` One-time payment. Lifetime updates. Unlimited projects. `,-1)]),u(`div`,Ze,[u(`div`,Qe,[c[3]||=u(`p`,{class:`text-xs font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400`},` Build it yourself `,-1),u(`p`,$e,v(r.length)+` modules · `+v(o(a))+` days `,1)]),u(`div`,et,[(_(),d(y,null,f(r,e=>u(`div`,{key:e.title,class:`flex items-center gap-2.5 py-2 border-b border-dashed border-neutral-200 dark:border-white/10`},[t(l,{name:e.icon,class:`text-base text-neutral-400 shrink-0`},null,8,[`name`]),u(`p`,tt,v(e.title),1),u(`p`,nt,v(e.hours)+`h `,1)])),64))]),u(`div`,rt,[c[4]||=u(`p`,{class:`text-sm font-semibold`},` Total `,-1),u(`p`,it,v(o(i))+` hrs `,1)])])])])]),_:1})}}}),{__name:`TimeBreakdown`}),ot={class:`max-w-2xl`},st={class:`inline-flex items-center gap-2 text-xs font-medium px-3 py-1 rounded-full bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`},ct={class:`grid grid-cols-1 md:grid-cols-3 gap-4 mt-12`},lt={class:`h-full p-6 rounded-2xl bg-neutral-50 dark:bg-neutral-900 border border-neutral-200 dark:border-white/10 transition-[transform,box-shadow] duration-200 ease-out hover:-translate-y-1 hover:shadow-lg`},ut={class:`font-semibold text-lg mt-4`}
2,dt={class:`text-sm text-neutral-600 dark:text-neutral-400 mt-1.5 leading-6`},ft=Object.assign(g({__name:`AgentReady`,setup(e){let r=[{icon:`i-lucide-user-round-check`,color:`bg-rose-500`,title:`Human-built & reviewed`,description:`Every feature is crafted and reviewed by a human before it ships. No AI slop, no copy-pasted boilerplate.`},{icon:`i-lucide-blocks`,color:`bg-emerald-500`,title:`A skill for every module`,description:`Auth, database, payments, teams - each module ships with an agent skill so your AI assistant follows the right conventions.`},{icon:`i-lucide-book-open-text`,color:`bg-indigo-500`,title:`AI-readable docs`,description:`Docs structured for humans and LLMs alike - clean MDC, an llms.txt, and an MCP server your agent can query.`}];return(e,i)=>{let a=N,o=I;return _(),S(o,{class:`pt-16 md:pt-52`},{default:b(()=>[u(`div`,null,[u(`div`,ot,[u(`span`,st,[t(a,{name:`i-lucide-sparkles`,class:`text-sm`}),i[0]||=n(` Human-crafted, agent-ready `,-1)]),i[1]||=u(`h2`,{class:`text-4xl font-semibold tracking-tight sm:text-5xl font-fancy mt-6`},` Built by humans. Ready for agents. `,-1),i[2]||=u(`p`,{class:`text-lg text-neutral-600 dar
2k:text-neutral-400 mt-4`},` Code is reviewed by a human - no generated filler. But the codebase is structured so your coding agent understands it instantly: a skill for each module and docs that read as well to an LLM as they do to you. `,-1)]),u(`div`,ct,[(_(),d(y,null,f(r,e=>u(`div`,{key:e.title},[u(`div`,lt,[u(`div`,{class:s([`h-11 w-11 rounded-xl flex items-center justify-center text-white`,e.color])},[t(a,{name:e.icon,class:`text-xl`},null,8,[`name`])],2),u(`h3`,ut,v(e.title),1),u(`p`,dt,v(e.description),1)])])),64))])])]),_:1})}}}),{__name:`AgentReady`}),pt={class:`grid grid-cols-1 md:grid-cols-2 gap-12`},mt={class:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 mt-16`},ht={class:`font-medium mt-2`},gt={class:`text-sm text-neutral-600 mt-1`},_t=Object.assign(g({__name:`Authentication`,setup(e){let n=[{name:`Email/Password`,description:`Classic email and password login & registration`,icon:`i-lucide-mail`},{name:`Social Login`,description:`Sign in with Google, GitHub, and 30+ providers`,icon:`i-logos-google-icon`},{name:`Passkeys (WebAuthn)`,description:`Passwordless login with face id or fingerprint`,icon:`i-lucide-key`},{name:`Magic Links`,description:`One-click email login links with expiration`,icon:`i-lucide-mail-check`},{name:`Phone Authentication`,description:`Login with phone number and SMS verification`,icon:`i-lucide-phone`},{name:`Account Linking`,description:`Connect multiple social accounts to one profile`,icon:`i-lucide-link`},{name:`OTP/2FA`,description:`Two-factor authentication via email or SMS codes`,icon:`i-lucide-shield-check`},{name:`Password Reset`,description:`Secure password recovery workflow with link expiration`,icon:`i-lucide-lock-keyhole`},{name:`Email Verification`,description:`Automated email validation system with link expiration`,icon:`i-lucide-check-circle`},{name:`Login Notifications`,description:`Security alerts for logins with location and device info`,icon:`i-lucide-bell`}];return(e,r)=>{let i=R,a=N,o=I;return _(),S(o,{class:`pt-16 md:pt-52`},{default:b(()=>[u(`div`,pt,[u(`div`,null,[t(i,{eyebrow:`Authentication`,icon:`i-lucide-lock`,title:`Every authentication flow you need`,description:`Email verification, passkey management, social account linking and unlinking, 2FA - all powered by Better Auth and already wired up.`}
2),r[0]||=u(`p`,{class:`text-neutral-600 dark:text-neutral-400 mt-4 text-lg`},` Each flow is its own page and component, so deleting the ones you don't need takes seconds. `,-1)]),r[1]||=u(`div`,null,[u(`div`,{class:`h-full w-full relative rounded-xl overflow-hidden ring-8 ring-neutral-500/10`},[u(`video`,{src:`https://s3.supersaas.dev/1.auth.mp4`,autoplay:``,muted:``,loop:``,playsinline:``,class:`w-full h-full object-cover`})])],-1)]),u(`div`,mt,[(_(),d(y,null,f(n,e=>u(`div`,{key:e.name,class:`p-4 bg-neutral-100 dark:bg-neutral-900 rounded-2xl`},[t(a,{name:e.icon},null,8,[`name`]),u(`p`,ht,v(e.name),1),u(`p`,gt,v(e.description),1)])),64))])]),_:1})}}}),{__name:`FeatureAuthentication`}),vt={class:`grid grid-cols-1 md:grid-cols-2 gap-12`},yt={class:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 mt-16`},bt={class:`font-medium text-sm`},xt=Object.assign(g({__name:`Database`,setup(e){let n=[{name:`NuxtHub - Cloudflare D1`,icon:`i-logos-nuxt-icon`},{name:`Postgres`,icon:`i-devicon-postgresql`},{name:`Turso`,icon:`i-custom-turso`},{name:`Neon`,icon:`i-logos-neon-icon`},{name:`Vercel Postgres`,icon:`i-logos-vercel-icon`},{name:`AWS S3`,icon:`i-logos-aws`},{name:`Digital Ocean Spaces`,icon:`i-logos-digital-ocean-icon`},{name:`Cloudflare R2`,icon:`i-logos-cloudflare-workers-icon`}];return(e,r)=>{let i=R,a=N,o=I;return _(),S(o,{class:`pt-16 md:pt-52`},{default:b(()=>[u(`div`,vt,[t(i,{eyebrow:`Database & storage`,icon:`i-lucide-database`,title:`Pick a database you won't outgrow`,description:`Built-in support for NuxtHub, Postgres, Turso, Neon and Planetscale, with Digital Ocean Spaces or Cloudflare R2 for files. Drizzle ORM throughout, and a maintained branch for every provider - so switching later is a merge, not a rewrite.`}),r[0]||=u(`div`,{class:`h-full w-full relative rounded-xl overflow-hidden ring-8 ring-neutral-500/10`},[u(`video`,{src:`https://s3.supersaas.dev/database.mp4`,autoplay:``,muted:``,loop:``,playsinline:``,class:`w-full h-full object-cover`})],-1)]),u(`div`,yt,[(_(),d(y,null,f(n,e=>u(`div`,{key:e.name,class:`p-4 bg-neutral-100 dark:bg-neutral-900 rounded-2xl flex items-center gap-2`},[t(a,{name:e.icon,class:`text-2xl flex-shrink-0`},null,8,[`name`]),u(`p`,bt,v(e.name),1)])),64))])]),_:1})}}}),{__name:`FeatureDatabase`}),St={class:`grid grid-cols-1 md:grid-cols-2 gap-12`},Ct={class:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mt-16`},wt={class:`font-medium mt-2`}
2,Tt={class:`text-sm text-neutral-600 dark:text-neutral-400 mt-1`},Et=Object.assign(g({__name:`Payments`,setup(e){let n=[{name:`Stripe Checkout`,description:`Hosted checkout with the customer's details already filled in.`,icon:`i-custom-stripe`},{name:`Reliable webhooks`,description:`Signature-verified handlers with retries, so a dropped event never loses a subscription.`,icon:`i-lucide-webhook`},{name:`Billing portal`,description:`Users upgrade, downgrade and cancel themselves - no support ticket required.`,icon:`i-lucide-receipt`},{name:`Plan sync`,description:`Pull your Stripe products and prices into the app from the admin dashboard.`,icon:`i-lucide-refresh-cw`}];return(e,r)=>{let i=R,a=N,o=I;return _(),S(o,{class:`pt-16 md:pt-32`},{default:b(()=>[u(`div`,St,[t(i,{eyebrow:`Payments & billing`,icon:`i-lucide-credit-card`,title:`Get paid without babysitting webhooks`,description:`Stripe customer IDs created up front, checkouts prefilled with customer details, a billing portal your users can manage themselves, and webhook handling that doesn't fail silently at 2am.`}),r[0]||=u(`div`,{class:`h-full w-full relative rounded-xl overflow-hidden ring-8 ring-neutral-500/10`},[u(`video`,{src:`https://s3.supersaas.dev/payments.mp4`,autoplay:``,muted:``,loop:``,playsinline:``,class:`w-full h-full object-cover`})],-1)]),u(`div`,Ct,[(_(),d(y,null,f(n,e=>u(`div`,{key:e.name,class:`p-4 bg-neutral-100 dark:bg-neutral-900 rounded-2xl`},[t(a,{name:e.icon,class:`text-2xl`},null,8,[`name`]),u(`p`,wt,v(e.name),1),u(`p`,Tt,v(e.description),1)])),64))])]),_:1})}}}),{__name:`FeaturePayments`}),Dt={class:`grid grid-cols-1 md:grid-cols-2 gap-12`},Ot={class:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 mt-16`},kt={class:`font-medium mt-2`},At={class:`text-sm text-neutral-600 mt-1`},jt=Object.assign(g({__name:`Teams`,setup(e){let n=[{name:`Organizations/Teams`,description:`Built-in support for groups of users that can share resources and permissions with granular access control.`,icon:`i-heroicons-building-office-2`},{name:`User Invitations`,description:`Users can invite new members, assign roles, and gate access to certain features based on the users' role.`,icon:`i-heroicons-envelope`},{name:`Flexible Role Management`,description:`Comes with predefined roles (Owner, Admin, Member), but you can add your own and customize them as needed.`,icon:`i-heroicons-key`},{name:`Transfer Ownership`,description:`Owners of a team can create a new owner within the team`,icon:`i-heroicons-arrow-path-rounded-square`}];return(e,r)=>{let i=R,a=N,o=I;return _(),S(o,{class:`pt-16 md:pt-32`},{default:b(()=>[u(`div`,Dt,[t(i,{eyebrow:`Teams & organisations`,icon:`i-lucide-users`,title:`Multi-tenancy that already works`,description:`Users create teams, orgs and workspaces, invite colleagues and assign roles. Owners get a dashboard for invites, team settings and billing - the whole surface most kits leave as an exercise for the reader.`}),r[0]||=u(`div`,{class:`h-full w-full relative rounded-xl overflow-hidden ring-8 ring-neutral-500/10`},[u(`video`,{src:`https://s3.supersaas.dev/teams.mp4`,autoplay:``,muted:``,loop:``,playsinline:``,class:`w-full h-full object-cover`})],-1)]),u(`div`,Ot,[(_(),d(y,null,f(n,e=>u(`div`,{key:e.name,class:`p-4 bg-neutral-100 dark:bg-neutral-900 rounded-2xl`},[t(a,{name:e.icon,class:`text-2xl`},null,8,[`name`]),u(`p`,kt,v(e.name),1),u(`p`,At,v(e.description),1)])),64))])]),_:1})}}}),{__name:`FeatureTeams`}),Mt={class:`grid grid-cols-1 md:grid-cols-2 gap-12`},Nt={class:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 mt-16`},Pt={class:`font-medium mt-2`},Ft={class:`text-sm text-neutral-600 mt-1`},It=Object.assign(g({__name:`SuperAdmin`,setup(e){let n=[{name:`User Management`,description:`Add and remove users, look at their team affiliations, connected accounts, and more.`,icon:`i-lucide-users`},{name:`Impersonate Users`,description:`One click impersonate any user to see the app as they do.`,icon:`i-lucide-user-search`},{name:`Ban/Lift Ban`,description:`Ban users from the app with a date and reason. Lift bans when they deserve a second chance.`,icon:`i-lucide-ban`},{name:`Stripe Sync`,description:`Synchronize Stripe plans with your application.`,icon:`i-lucide-credit-card`},{name:`Newsletter Subscriptions`,description:`Monitor newsletter subscriptions and unsubscribe users.`,icon:`i-lucide-mail`},{name:`User Feedback`,description:`Review user feedback and comments.`,icon:`i-lucide-message-circle`},{name:`Email Campaigns`,description:`Send email campaigns to users.`,icon:`i-lucide-mail-c
2heck`,wip:!0}];return(e,r)=>{let i=R,a=N,o=ie,s=I;return _(),S(s,{class:`pt-16 md:pt-32`},{default:b(()=>[u(`div`,Mt,[t(i,{eyebrow:`Super admin`,icon:`i-lucide-shield-check`,title:`The back office you'd have built in month two`,description:`Manage users, impersonate them to debug what they're seeing, ban and unban, sync Stripe plans, watch newsletter signups and read feedback - from one dashboard, on day one.`}),r[0]||=u(`div`,{class:`h-full w-full relative rounded-xl overflow-hidden ring-8 ring-neutral-500/10`},[u(`video`,{src:`https://s3.supersaas.dev/super-admin.mp4`,autoplay:``,muted:``,loop:``,playsinline:``,class:`w-full h-full object-cover`})],-1)]),u(`div`,Nt,[(_(),d(y,null,f(n,e=>u(`div`,{key:e.name,class:`p-4 bg-neutral-100 dark:bg-neutral-900 rounded-2xl`},[t(a,{name:e.icon,class:`text-2xl`},null,8,[`name`]),u(`p`,Pt,v(e.name),1),u(`p`,Ft,v(e.description),1),e.wip?(_(),S(o,{key:0,color:`neutral`,class:`mt-2`,label:`Coming Soon`,variant:`subtle`})):w(``,!0)])),64))])]),_:1})}}}),{__name:`FeatureSuperAdmin`}),Lt={id:`testimonials`,class:`column-1 md:columns-2 lg:columns-3 gap-8 space-y-8 xl:columns-4 scroll-mt-[calc(var(--header-height)+140px+128px+96px)] mt-12`},Rt={class:`p-6 metal-shadow bg-white dark:bg-neutral-900 rounded-xl`},zt={class:`text-lg font-semibold leading-6 before:content-['“'] after:content-['”']`},Bt={class:`mt-3 text-sm leading-7 text-neutral-500 dark:text-neutral-400`},Vt={class:`flex items-center gap-2 mt-4`}
2,Ht={class:`text-neutral-600 dark:text-neutral-400 font-medium`},Ut={class:`text-neutral-500 dark:text-neutral-400 text-xs`},Wt={__name:`Testimonials`,setup(e){let n=[{title:`Launched An App In A Weekend`,quote:`I used the previous version to build and launch bluesky.ms in a weekend! Saved me hours of writing plumbing code. Looking forward to launching more projects with this version.`,author:{name:`Merill Fernando`,description:`Senior PM, Microsoft`,avatar:{src:`/avatars/merrill.png`,loading:`lazy`}}},{title:`Extremely Interesting`,quote:`SuperSaas is one of the few templates / starters that I really find very pretty and extremely interesting in terms of content, etc. Well done, Fayaz!`,author:{name:`Hugo Richard`,description:`Founder, Shelve Cloud`,avatar:{src:`/avatars/hugo.jpg`,loading:`lazy`}}},{title:`Awesome DX`,quote:`The DX is a kin to Laravel. But in a Nuxt Monorepo. I've switched from Laravel to using Supersaas. It's been a good 5 years with Laravel 👋`,author:{name:`Joe Elia`,description:`Founder, notthebestagency.com`,avatar:{src:`/avatars/joe-elia.jpg`,loading:`lazy`}}},{title:`Happy Customer Here`,quote:`I must admit, I have tried some starters in the past, but really never used them, because they lacked a certain polish, which yours has. Kudos to you!`,author:{name:`Johann Schopplich`,description:`Developer`,avatar:{src:`/avatars/johann.jpg`,loading:`lazy`}}},{title:`Great for Educational Purposes`,quote:`I like well structured projects like this not only for shipping fast which is great, but for educational purposes too. Most apps have to deal with the same challenges apart from their own business logic. It's great to have a chance to look how others do!`,author:{name:`Israel Ortuño`,description:`Founder, VueJobs`,avatar:{src:`/avatars/israel.jpg`,loading:`lazy`}}},{title:`Happy with Supersaas`,quote:`Fayaz, I'm so happy with supersass. Thanks for creating this piece of software.`,author:{name:`Md. Danish Yousuf`,description:`Indie Hacker, Iconbuddy.com`,avatar:{src:`/avatars/danish.jpg`,loading:`lazy`}}},{title:`Tood Good`,quote:`One of the best things in Nuxt / Vue community. It's not only best for saas development, even if you are developer and want to learn advance things in Nuxt, this will be best investment than any tutorial. Too good!`,author:{name:`Hafiz Javaid`,description:`Freelance developer`,avatar:{src:`/avatars/hafiz.jpg`,loading:`lazy`}}},{title:`Satisfaction 100%`,quote:`I’m very satisfied of your boilerplate. Thanks!`,author:{name:`Lilian`,description:`SoftwareEngineer`,avatar:{src:``,loading:`lazy`}}},{title:`Super Powerful`,quote:`The stack that Supersaas is built upon is super powerful and easy to work with, especially when used with NuxtHub / Cloudflare. Fayaz has been super helpful in making it work and adopting feedback.`,author:{name:`Tim Pulver`,description:`Freelancer/Software Engineer`,avatar:{src:`/avatars/tim.jpg`,loading:`lazy`}}},{title:`Features i would buy it for`,quote:`This is relly well made! especially with features like passkey and hooks for everything. These are the features i would buy it for`,author:{name:`Rishi Mohan`,description:`Founder, Pika.Style`,avatar:{src:`https://pbs.twimg.com/profile_images/1792311421994147840/ZO_-Kmol_400x400.jpg`,loading:`lazy`}}},{title:`Fantastic`,quote:`👆🏻 As a customer I can confirm, it's fantastic 🔥`,author:{name:`Thomas Sanlis`,description:`Founder, Unned.best`,avatar:{src:`/avatars/thomas-z.jpg`,loading:`lazy`}}},{title:`Absolute time saver`,quote:`It's an absolute time saver! If you are a freelancer or keep building things, get this! ✨`,author:{name:`Mushtaq Ahmed`,description:`Senior Product Engineer, Locale.ai`,avatar:{src:`/avatars/haxzie.jpg`,loading:`lazy`}}},{title:`Simple yet awesome`,quote:`I was struggling with implementing payment and auth in my side projects when I found http://supersaas.dev . Its super simple, with all the necessary things bundled together with proper documentation and abstractions. I got to launch my project in a days work and didnt have to think about the logistics of wiring everything up and was just able to concentrate on my core product. If that aint super i dont know what is.. the founder support is again amazing. He got on a call to ensure everything was implemented correctl`,author:{name:`Sooraj`,description:`Backend Engineer`,avatar:{src:`https://pbs.twimg.com/profile_images/1823407485002113024/6pxHkYUj_400x400.jpg`,loading:`lazy`}}},{title:`Love it!`,quote:`Really well made. Great news! Im playing with Supersaas template and its been amazing! Learned a lot. Thinking about starting to build something with it. Love it!`,author:{name:`Alexandr Os`,description:`Engineer and Foudnder`,avatar:{src:`/avatars/
2alex.jpg`,loading:`lazy`}}},{title:`Saving me a shit ton of time`,quote:`Using these for my side project. This is saving me a shit ton of time and effort. Really happy I purchased this.`,author:{name:`Attaullah F`,description:`Senior Engineer, Congnizant`,avatar:{src:`https://essentials.supersaas.dev/62116.jpg`,loading:`lazy`}}}];return(e,r)=>{let i=R,a=P,o=I;return _(),S(o,{class:`pt-16 md:pt-32 relative`},{default:b(()=>[t(i,{eyebrow:`Receipts, not marketing`,icon:`i-lucide-message-square-quote`,title:`What people are saying about Supersaas`,description:`300+ developers are shipping production apps on Supersaas. Every quote below is a real message, tweet or comment from a customer.`}),u(`div`,Lt,[(_(),d(y,null,f(n,(e,n)=>u(`div`,{key:n,class:`break-inside-avoid`},[u(`div`,Rt,[u(`p`,zt,v(e.title),1),u(`p`,Bt,v(e.quote),1),u(`div`,Vt,[t(a,{src:e.author.avatar.src,alt:e.author.name,size:`md`,loading:`lazy`},null,8,[`src`,`alt`]),u(`div`,null,[u(`p`,Ht,v(e.author.name),1),u(`p`,Ut,v(e.author.description),1)])])])])),64))])]),_:1})}}},Gt={class:`pt-16 md:pt-32`},Kt={class:`grid grid-cols-1 lg:grid-cols-3 gap-4 mt-12`},qt={class:`lg:col-span-2`},Jt={class:`h-full p-6 sm:p-8 rounded-3xl border border-emerald-500/30 bg-emerald-500/5 dark:bg-emerald-500/10`},Yt={class:`flex items-start justify-between gap-4`},Xt={class:`flex items-center gap-3`},Zt={class:`h-11 w-11 rounded-xl flex items-center justify-center bg-white dark:bg-neutral-800 metal-shadow`},Qt={class:`grid grid-cols-1 sm:grid-cols-2 gap-3 mt-5`},$t={class:`flex items-center gap-2`},en={class:`text-sm font-semibold`}
2,tn={class:`text-xs text-neutral-600 dark:text-neutral-400 mt-1.5 leading-5`},nn={class:`flex flex-wrap gap-3 mt-6`},rn={class:`flex flex-col gap-4`},an={class:`h-full flex flex-col p-6 rounded-2xl border border-neutral-200 dark:border-white/10 bg-neutral-50 dark:bg-neutral-900`},on={class:`flex items-center gap-2.5`},sn={class:`font-semibold`},cn={class:`ml-auto text-lg font-bold font-fancy shrink-0`},ln={class:`text-sm text-neutral-600 dark:text-neutral-400 mt-2 leading-6 flex-1`},un={class:`flex items-center gap-2 mt-4`},Z={class:`mt-4 p-6 sm:p-8 rounded-3xl bg-neutral-900 dark:bg-white text-white dark:text-neutral-900 flex flex-col lg:flex-row lg:items-center justify-between gap-6`},dn={class:`flex flex-wrap gap-x-5 gap-y-2 mt-4`},fn=Object.assign(g({__name:`Ecosystem`,setup(e){let r=[{icon:`i-lucide-package`,title:`Essentials repo`,description:`The base codebase - auth, organizations, billing, emails and admin, with no example features on top.`},{icon:`i-lucide-layout-dashboard`,title:`Demo repo`,description:`One app built on that base with five worked modules: AI chat, posts, tasks, a URL shortener and a file manager.`}],i=[{title:`PocketVue`,icon:`i-simple-icons-pocketbase`,price:`$49`,description:`A simple SaaS starter kit made with Nuxt and Pocketbase as the backend.`,buy:`https://buy.polar.sh/polar_cl_P9kR5hT7FK2mqgrYshwHxywyhvPbamffLxK9t2zfdp8`,demo:`https://pocketvue.supersaas.dev`},{title:`Nuxtra`,icon:`i-simple-icons-nuxt`,price:`$29`,description:`A beautiful marketing site template for your SaaS applications with a clean and modern design.`,buy:`https://buy.polar.sh/polar_cl_pWGp2munvVD09Jq2963fraxBAdP4jrNssQM580p8IRB`,demo:`https://nuxtra.pages.dev`}],a=[`Essentials + Demo ($149)`,`PocketVue ($49)`,`Nuxtra ($29)`,`Every future product`,`Lifetime updates`];return(e,s)=>{let c=R,l=N,p=F,m=I;return _(),d(`section`,Gt,[t(m,null,{default:b(()=>[u(`div`,null,[t(c,{eyebrow:`The ecosystem`,icon:`i-lucide-boxes`,title:`Supersaas Ecosystem`,description:`Essentials is the codebase you build on, and it ships with a second repo where those same pieces are already used in five working apps. PocketVue and Nuxtra stand on their own - or take the lot with the All Access Pass.`})]),u(`div`,Kt,[u(`div`,qt,[u(`div`,Jt,[u(`div`,Yt,[u(`div`,Xt,[u(`div`,Zt,[t(l,{name:`i-lucide-rocket`,class:`text-xl text-emerald-500`})]),s[0]||=u(`div`,null,[u(`h3`,{class:`text-xl font-semibold`},` SuperSaas Essentials `),u(`p`,{class:`text-sm text-neutral-500 dark:text-neutral-400`},` Nuxt 4 · Better Auth · your choice of database `)],-1)]),s[1]||=u(`div`,{class:`text-right shrink-0`},[u(`p`,{class:`text-3xl font-bold font-fancy`},` $149 `),u(`p`,{class:`text-xs text-neutral-500 dark:text-neutral-400`},` one-time `)],-1)]),s[4]||=u(`p`,{class:`text-sm text-neutral-600 dar
2k:text-neutral-400 mt-5 leading-6`},` Buy once and you get both repositories - the clean foundation you ship your product on, and a worked reference showing how every layer fits together. `,-1),u(`div`,Qt,[(_(),d(y,null,f(r,e=>u(`div`,{key:e.title,class:`p-4 rounded-2xl bg-white dark:bg-neutral-900 border border-neutral-200 dark:border-white/10`},[u(`div`,$t,[t(l,{name:e.icon,class:`text-base text-emerald-500`},null,8,[`name`]),u(`p`,en,v(e.title),1)]),u(`p`,tn,v(e.description),1)])),64))]),u(`div`,nn,[t(p,{size:`lg`,color:`primary`,"data-s:event":`Clicked Ecosystem Essentials CTA`,to:`essentialPurchaseLink`in e?e.essentialPurchaseLink:o(L),target:`_blank`},{default:b(()=>[...s[2]||=[n(` Buy Essentials - $149 `,-1)]]),_:1},8,[`to`]),t(p,{size:`lg`,color:`neutral`,variant:`ghost`,to:`/docs/getting-started`,"trailing-icon":`i-lucide-arrow-right`},{default:b(()=>[...s[3]||=[n(` Read the docs `,-1)]]),_:1})])])]),u(`div`,rn,[(_(),d(y,null,f(i,e=>u(`div`,{key:e.title,class:`flex-1`},[u(`div`,an,[u(`div`,on,[t(l,{name:e.icon,class:`text-lg text-neutral-500`},null,8,[`name`]),u(`h3`,sn,v(e.title),1),u(`span`,cn,v(e.price),1)]),u(`p`,ln,v(e.description),1),u(`div`,un,[t(p,{color:`neutral`,variant:`solid`,"data-s:event":`Clicked Ecosystem ${e.title} CTA`,to:e.buy,target:`_blank`},{default:b(()=>[n(` Buy `+v(e.price),1)]),_:2},1032,[`data-s:event`,`to`]),t(p,{color:`neutral`,variant:`ghost`,to:e.demo,target:`_blank`,"trailing-icon":`i-lucide-arrow-up-right`},{default:b(()=>[...s[5]||=[n(` Demo `,-1)]]),_:1},8,[`to`])])])])),64))])]),u(`div`,Z,[u(`div`,null,[s[6]||=u(`p`,{class:`text-xl font-semibold font-fancy`},` The All Access Pass `,-1),s[7]||=u(`p`,{class:`text-sm opacity-70 mt-1`},` Get everything you need to build and launch your SaaS business with our complete bundle. Save over 40% with this package and everything we release next. `,-1),u(`div`,dn,[(_(),d(y,null,f(a,e=>u(`span`,{key:e,class:`flex items-center gap-2 text-sm opacity-90`},[t(l,{name:`i-lucide-check`,class:`text-emerald-400 dark:text-emerald-600 text-base shrink-0`}),n(` `+v(e),1)])),64))])]),t(p,{size:`xl`,color:`primary`,class:`shrink-0`,"data-s:event":`Clicked Ecosystem All Access CTA`,to:`https://buy.polar.sh/polar_cl_1DUlsUeXRy6eiZPuCmDEOVE9zcDzDPAYI5aWk2tRyeD`,target:`_blank`},{default:b(()=>[...s[8]||=[n(` Get everything - $199 `,-1)]]),_:1})])]),_:1})])}}}),{__name:`Ecosystem`}),pn={class:`relative grid grid-cols-1 lg:grid-cols-2 gap-12`}
2,mn={class:`rounded-lg metal-shadow bg-white dark:bg-neutral-900 p-4 grid grid-cols-1 sm:grid-cols-2 gap-4 self-start`},hn=[`src`,`alt`],gn=[`src`,`alt`],_n={key:1,class:`font-fancy text-xl text-black dark:text-white !m-0 h-6`},vn={class:`text-sm text-neutral-500`},yn=Object.assign(z(g({__name:`RunByHuman`,setup(e){let r=[{name:`Fayaz Ahmed`,handle:`@fayazara`,to:`https://twitter.com/fayazara`,image:`/fayaz.jpg`,signature:`/signature.png`},{name:`Hafiz Javaid Iqbal`,handle:`@CodeWithHafiz`,to:`https://x.com/CodeWithHafiz`,image:`/avatars/hafiz.jpg`,signature:void 0}];return(e,i)=>{let a=B,o=D,s=I;return _(),S(s,{class:`py-12 px-4 relative`},{default:b(()=>[u(`div`,pn,[i[0]||=u(`div`,null,[u(`h3`,{class:`font-fancy text-6xl font-bold text-black dark:text-white mb-6`},` Run by humans `),u(`p`,{class:`text-balance mb-5 leading-7`},[n(` We are `),u(`span`,{class:`font-semibold`},`Fayaz Ahmed`),n(` and `),u(`span`,{class:`font-semibold`},`Hafiz Javaid Iqbal`),n(`. As a two-person team, we've built this product from the ground up, with no external funding. Every feature is crafted with care, and every decision is made with you, the user, in mind. `)]),u(`p`,{class:`mb-5 leading-7`},` Being an indie product allows us to be agile and responsive to your needs. We are not bound by corporate policies or investor demands, which means we can focus on delivering the best experience for you. When you use this product, you're not just using a tool; you're engaging with our passion and vision. `),u(`p`,{class:`mb-5 leading-7`},` Our commitment is to provide a seamless and enjoyable experience. Every email, question, or feedback you send is read and responded to by us personally. We make sure to respond to every single one of them. We have taken calls from people who have reached out to us, made sure they are able to run their app without any issues. `),u(`p`,{class:`leading-7`},` Thank you for supporting indie products and for being a part of this journey. `)],-1),u(`div`,mn,[(_(),d(y,null,f(r,e=>t(o,{key:e.handle,to:e.to,target:`_blank`,class:`group relative block rounded-lg space-y-4`},{default:b(()=>[t(a,{name:`i-ph-arrow-up-right-bold`,class:`absolute right-2 top-2 text-neutral-300 transition-all group-hover:right-1.5 group-hover:top-1.5 group-hover:text-neutral-500`}),u(`img`,{src:e.image,class:`rounded-full !my-0`,height:`120`,width:`120`,alt:e.name,loading:`lazy`},null,8,hn),e.signature?(_(),d(`img`,{key:0,src:e.signature,alt:`${e.name}s signature`,class:`h-6 w-auto !m-0`,loading:`lazy`},null,8,gn)):(_(),d(`p`,_n,v(e.name),1)),u(`span`,vn,v(e.handle),1)]),_:2},1032,[`to`])),64))])])]),_:1})}}}),[[`__scopeId`,`data-v-99012b3c`]]),{__name:`RunByHuman`}),bn=Y(`components/VideoIntro.vue`,()=>O(()=>import(`./B2KINm822.js`).then(e=>e.default||e),__vite__mapDeps([22,3,1,6,4,23,24,25,12,11,13,19,20,26,27,14,28,2,29,10,30,5,16,31,7,32,33,9,15,17,8,18,34,35,36,37,38,21,39]),import.meta.url)),xn=Y(`components/Feature/More.vue`,()=>O(()=>import(`./CXBYgFV72.js`).then(e=>e.default||e),__vite__mapDeps([40,1,31,16,9,3,2,4,10,11,12,6,13,14,15,17,38,5,7,41]),import.meta.url)),Q=`Nuxt SaaS Boilerplate & Starter Kit built for AI Coding agents`,$=`SuperSaas - Nuxt SaaS Boilerplate & Starter Kit built for AI Coding agents trusted by 300+ customers with everything you need to make your first $ online. From clone to production in one afternoon`,Sn=g({__name:`index`,setup(e){let n=re(),{github:r}=k().socials,i=`${Q} | ${n.siteName}`;return E({title:Q,description:$,ogTitle:i,ogDescription:$,ogUrl:n.url,twitterTitle:i,twitterDescription:$,twitterCard:`summary_large_image`,ogImage:n.image}),T({meta:[{name:`keywords`,content:n.keywords}],script:[{type:`application/ld+json`,innerHTML:JSON.stringify({"@context":`https://schema.org`,"@graph":[{"@type":`Organization`,"@id":`${n.url}/#organization`,name:n.siteName,url:n.url,logo:`${n.url}/logo-square.png`,sameAs:[r,`https://x.com/fayazara`].filter(Boolean)},{"@type":`WebSite`,"@id":`${n.url}/#website`,url:n.url,name:n.siteName,description:$,inLanguage:`en-US`,publisher:{"@id":`${n.url}/#organization`}},{"@type":`SoftwareApplication`,"@id":`${n.url}/#product`,name:n.siteName,description:$,url:n.url,image:n.image,applicationCategory:`DeveloperApplication`,operatingSystem:`Web`,author:{"@i
2d":`${n.url}/#organization`},offers:{"@type":`Offer`,price:`149`,priceCurrency:`USD`,availability:`https://schema.org/InStock`,url:n.url}}]})}]}),(e,n)=>{let r=Me,i=bn,a=Ue,o=at,s=ft,c=_t,l=xt,u=Et,f=jt,p=It,m=xn,h=Wt,g=fn,v=oe,y=yn,b=V;return _(),d(`main`,null,[t(r),t(i,{id:`features`,"hydrate-on-visible":``}),t(a,{id:`why-not-ai-alone`}),t(o,{id:`time-breakdown`}),t(s,{id:`agent-ready`}),t(c,{id:`authentication`}),t(l,{id:`database`}),t(u,{id:`payments`}),t(f,{id:`teams`}),t(p,{id:`super-admin`}),t(m,{id:`more`,"hydrate-on-visible":``}),t(h),t(g,{id:`all-access-pass`}),t(v,{id:`faq`}),t(y,{id:`run-by-human`}),t(b,{id:`ship`})])}}});export{Sn as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.