1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[533],{5589:(e,t,a)=>{"use strict";a.d(t,{default:()=>o});var s=a(5155),r=a(2115),i=a(1621),n=a(760),l=a(8093);function o(e){let{items:t}=e,[a,o]=(0,r.useState)(null);return(0,s.jsx)("div",{className:"space-y-4",children:t.map((e,t)=>{let r=a===t;return(0,s.jsxs)("div",{className:"card overflow-hidden",children:[(0,s.jsxs)("button",{onClick:()=>{o(a===t?null:t)},className:"w-full flex items-center justify-between p-6 text-left","aria-expanded":r,children:[(0,s.jsx)("span",{className:"text-lg font-semibold text-white pr-4",children:e.question}),(0,s.jsx)(i.P.span,{animate:{rotate:180*!!r},transition:{duration:.3,ease:[.25,.1,.25,1]},className:"flex-shrink-0",children:(0,s.jsx)(l.bv7,{className:"w-5 h-5 text-primary-400"})})]}),(0,s.jsx)(n.N,{initial:!1,children:r&&(0,s.jsx)(i.P.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.3,ease:[.25,.1,.25,1]},children:(0,s.jsx)("div",{className:"px-6 pb-6 text-gray-400 leading-relaxed",children:e.answer})})})]},t)})})}},6155:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>o});var s=a(5155),r=a(2115),i=a(6896),n=a(1621),l=a(3096);function o(e){let{children:t,delay:a=0,direction:o="up",className:d}=e,[c,m]=(0,r.useState)(!1),[u,x]=(0,r.useState)(!1),p=(0,i.s)(),[h,g]=(0,l.Wx)({threshold:.1,triggerOnce:!0});return((0,r.useEffect)(()=>{let e=setTimeout(()=>{m(!0)},100);return()=>clearTimeout(e)},[]),(0,r.useEffect)(()=>{if(c&&g&&!u){let e=setTimeout(()=>{p.start("visible"),x(!0)},100*a);return()=>clearTimeout(e)}},[c,g,u,p,a]),c)?(0,s.jsx)(n.P.div,{ref:h,animate:p,initial:"hidden",variants:(()=>{let e={duration:.5,ease:[.25,.1,.25,1]};switch(o){case"down":return{visible:{opacity:1,y:0,transition:e},hidden:{opacity:1,y:-12}};case"left":return{visible:{opacity:1,x:0,transition:e},hidden:{opacity:1,x:12}};case"right":return{visible:{opacity:1,x:0,transition:e},hidden:{opacity:1,x:-12}};case"scale":return{visible:{opacity:1,scale:1,transition:e},hidden:{opacity:1,scale:.98}};case"fade":return{visible:{opacity:1,transition:e},hidden:{opacity:.3}};default:return{visible:{opacity:1,y:0,transition:e},hidden:{opacity:1,y:12}}}})(),className:d,style:{opacity:1,willChange:"transform, opacity"},children:t}):(0,s.jsx)("div",{style:{opacity:1},className:d,children:t})}},6996:(e,t,a)=>{"use strict";a.d(t,{default:()=>o});var s=a(5155),r=a(6155),i=a(9806),n=a(8093);let l=[{title:"Production\nInfrastructure",subtitle:"The foundation â already built",description:"A complete AWS networking and security foundation that would take weeks to design, configure, and harden. Deployed in minutes via CloudFormation.",colorClasses:{bg:"from-[#28180a] via-[#2c1c0e] to-[#22140a]",border:"border-orange-500/20",text:"text-orange-400",tag:"border-orange-500/20 text-orange-300/80 bg-orange-500/5"},items:["VPC with public and private subnets across multiple AZs","Application Load Balancer with SSL termination","Security groups, NAT gateway, and network isolation","AWS WAF with managed rule sets","CloudFront CDN for global content delivery","KMS encryption for data at rest and in transit"],tags:["Multi-AZ","WAF Protected","Encrypted","CloudFormation"]},{title:"Application\nStack",subtitle:"Production-grade, not a tutorial setup",description:"ECS Fargate containers, a managed database, Redis caching, and shared storage â configured to work together and scale automatically under load.",colorClasses:{bg:"from-[#0e1a28] via-[#102030] to-[#0c1622]",border:"border-sky-500/20",text:"text-sky-400",tag:"border-sky-500/20 text-sky-300/80 bg-sky-500/5"},items:["ECS Fargate â serverless containers that auto-scale with demand","RDS MySQL Multi-AZ with auto-scaling storage up to 300 GB","ElastiCache Redis with TLS for session and application caching","EFS + S3 with ObjectFS plugin for shared file storage","BigBlueButton 3.0 video conferencing (Education tier and above)","Automated daily backups with configurable retention"],tags:["Auto-scaling","Multi-AZ Database","Redis TLS","BBB 3.0"]},{title:"Updates &\nMaintenance",subtitle:"The work that never ends â handled for you",description:"Moodle releases, BigBlueButton upgrades, PHP versions, RDS engine patches, security advisories â keeping everything current is a full-time job. We handle it.",colorClasses:{bg:"from-[#122a20] via-[#163024] to-[#0e221a]",border:"border-emerald-500/20",text:"text-emerald-400",tag:"border-emerald-500/20 text-emerald-300/80 bg-emerald-500/5"},items:["Moodle LTS updates tested and deployed with zero downtime","BigBlueButton version upgrades and configuration updates","PHP runtime updates for security and performance","RDS engine patches and minor version upgrades","CloudFormation template updates as AWS services evolve","Security patches applied promptly when advisories are published"],tags:["Moodle Updates","BBB Upgrades","RDS Patches","Security Fixes"]}];function o(){return(0,s.jsxs)("div",{className:"bg-[#0a0a1a] px-4 md:px-6 pt-8 pb-6","data-nav-theme":"dark",children:[(0,s.jsx)(r.default,{children:(0,s.jsxs)("div",{className:"text-center mb-10 max-w-3xl mx-auto",children:[(0,s.jsx)("span",{className:"text-orange-400 text-sm font-medium uppercase tracking-wider mb-4 inline-block",children:"What You Get"}),(0,s.jsxs)("h2",{className:"text-3xl md:text-4xl font-black mb-4 text-white",children:["What's Behind the"," ",(0,s.jsx)("span",{className:"gradient-text-orange",children:"Platform Fee"})]}),(0,s.jsx)("p",{className:"text-lg text-gray-400 leading-relaxed",children:"Your platform fee covers a production-grade AWS stack, ongoing updates, and the engineering work that would otherwise take months to build and maintain."})]})}
1),(0,s.jsx)(i.A,{cards:l.map(e=>({key:e.title,colorClasses:e.colorClasses,renderLeft:()=>(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("h3",{className:"text-4xl md:text-5xl lg:text-6xl font-black text-white leading-[1.05] tracking-tight",children:e.title.split("\n").map((t,a)=>0===a?(0,s.jsxs)("span",{children:[t,(0,s.jsx)("br",{})]},a):(0,s.jsx)("span",{className:e.colorClasses.text,children:t},a))}),(0,s.jsx)("p",{className:"mt-4 text-gray-500 text-sm font-medium",children:e.subtitle})]}),renderRight:()=>(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("p",{className:"text-lg text-gray-400 leading-relaxed mb-8",children:e.description}),(0,s.jsx)("ul",{className:"space-y-3 mb-8",children:e.items.map(t=>(0,s.jsxs)("li",{className:"flex items-start gap-3",children:[(0,s.jsx)(n.mmf,{className:"w-5 h-5 ".concat(e.colorClasses.text," flex-shrink-0 mt-0.5")}),(0,s.jsx)("span",{className:"text-sm text-gray-300",children:t})]},t))}),(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:e.tags.map(t=>(0,s.jsx)("span",{className:"px-4 py-2 rounded-full text-sm font-medium border ".concat(e.colorClasses.tag),children:t},t))})]})}))})]})}},8116:(e,t,a)=>{"use strict";a.d(t,{default:()=>m});var s=a(5155),r=a(2115),i=a(6874),n=a.n(i),l=a(6155),o=a(8093);let d={users:"Concurrent Users",storage:"Storage",bbb:"BigBlueButton",regions:"Regions",backups:"Backups",ssl:"SSL / Custom Domain",cicd:"CI/CD Pipeline",support:"Support"},c=[{name:"Starter",monthlyPrice:"$125",annualPrice:"$106",awsEstimate:"~$150â250",description:"Self-service Moodle on AWS for small teams and pilot programmes.",cta:"Get Started",ctaLink:"/contact?type=moodle",features:{users:"Up to 100",storage:"50 GB (S3 + EFS)",bbb:!1,regions:"1 region",backups:"Daily (7-day retention)",ssl:"Included",cicd:!1,support:"Email"}},{name:"Education",monthlyPrice:"$399",annualPrice:"$339",awsEstimate:"~$300â500",description:"Purpose-built for schools, colleges, and training providers.",cta:"Get Started",ctaLink:"/contact?type=moodle",recommended:!0,features:{users:"Up to 500",storage:"200 GB (S3 + EFS)",bbb:"Full (BBB 3.0)",regi
1ons:"1 region",backups:"Daily (14-day retention)",ssl:"Included + custom domain",cicd:"Included",support:"Priority email"}},{name:"Professional",monthlyPrice:"From $1,500",annualPrice:"From $1,275",awsEstimate:"~$800â1,500",description:"Fully managed Moodle with dedicated infrastructure and SLA.",cta:"Contact Us",ctaLink:"/contact?type=moodle-managed",managed:!0,features:{users:"Up to 2,000",storage:"500 GB (S3 + EFS)",bbb:"Full (unlimited rooms)",regions:"Multi-region",backups:"Continuous (35-day PITR)",ssl:"Included + custom domain",cicd:"Managed by us",support:"24/7 + dedicated SA"}},{name:"Enterprise",monthlyPrice:"Custom",annualPrice:"Custom",awsEstimate:"Varies",description:"Custom architecture, unlimited scale, and white-glove service.",cta:"Contact Us",ctaLink:"/contact?type=moodle-enterprise",managed:!0,features:{users:"Unlimited",storage:"Unlimited",bbb:"Dedicated cluster",regions:"Global (cross-region DR)",backups:"Continuous + cross-region",ssl:"Included + multi-domain",cicd:"Managed + custom pipelines",support:"Dedicated team + SLA"}}];function m(){let[e,t]=(0,r.useState)(!1);return(0,s.jsxs)("section",{id:"pricing",className:"py-24 bg-[#0d0d20] relative","data-nav-theme":"dark",children:[(0,s.jsx)("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[400px] bg-orange-600/10 rounded-full blur-[120px] pointer-events-none"}),(0,s.jsxs)("div",{className:"container mx-auto px-4 relative z-10",children:[(0,s.jsx)(l.default,{children:(0,s.jsxs)("div",{className:"text-center mb-12",children:[(0,s.jsx)("span",{className:"text-orange-400 text-sm font-medium uppercase tracking-wider mb-4 inline-block",children:"Pricing"}),(0,s.jsxs)("h2",{className:"text-3xl md:text-4xl font-black mb-4 text-white",children:["Simple, Transparent"," ",(0,s.jsx)("span",{className:"gradient-text-orange",children:"Pricing"})]}),(0,s.jsx)("p",{className:"max-w-2xl mx-auto text-lg text-gray-400 leading-relaxed mb-8",children:"Our platform fee covers templates, automation, updates, and support. AWS infrastructure costs are billed separately to your own AWS account."}),(0,s.jsxs)("div",{className:"flex items-center justify-center gap-4",children:[(0,s.jsx)("span",{className:"text-sm font-medium transition-colors ".concat(e?"text-gray-500":"text-white"),children:"Monthly"}),(0,s.jsx)("button",{onClick:()=>t(!e),className:"relative w-14 h-7 rounded-full transition-colors duration-300 ".concat(e?"bg-orange-600":"bg-white/10 border border-white/[0.08]"),"aria-label":"Toggle annual pricing",children:(0,s.jsx)("div",{className:"absolute top-0.5 w-6 h-6 rounded-full shadow transition-transform duration-300 ".concat(e?"translate-x-7 bg-white":"translate-x-0.5 bg-gray-400")})}),(0,s.jsxs)("span",{className:"text-sm font-medium transition-colors ".concat(e?"text-white":"text-gray-500"),children:["Annual ",(0,s.jsx)("span",{className:"text-orange-400 text-xs font-semibold ml-1",children:"Save 15%"})]})]})]})}),(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 max-w-7xl mx-auto",children:c.map((t,a)=>(0,s.jsx)(l.default,{delay:.1*a,children:(0,s.jsxs)("div",{className:"rounded-2xl p-8 h-full flex flex-col relative transition-all duration-300 ".concat(t.recommended?"bg-[#161636] border border-orange-500/30 shadow-[0_0_40px_rgba(249,115,22,0.1)] scale-[1.02]":"bg-[#161636] border border-white/[0.08] hover:border-orange-500/20"),children:[t.recommended&&(0,s.jsx)("div",{className:"absolute -top-3 left-1/2 -translate-x-1/2",children:(0,s.jsx)("span",{className:"bg-gradient-to-r from-orange-600 to-amber-500 text-white text-sm font-semibold px-5 py-1.5 rounded-full shadow-lg shadow-orange-500/25",children:"Recommended"})}),t.managed&&(0,s.jsx)("div",{className:"mb-3",children:(0,s.jsx)("span",{className:"text-xs font-medium px-2.5 py-1 rounded-full bg-orange-500/10 text-orange-400 border border-orange-500/20",children:"Managed Service"})}),(0,s.jsx)("h3",{className:"text-xl font-bold text-white mb-2",children:t.name}),(0,s.jsx)("p",{className:"text-sm text-gray-400 mb-4",children:t.description}),(0,s.jsxs)("div",{className:"mb-2",children:[(0,s.jsx)("span",{className:"text-4xl font-extrabold text-white",children:e?t.annualPrice:t.monthlyPrice}),(e?t.annualPrice:t.monthlyPrice)!=="Custom"&&(0,s.jsx)("span",{className:"text-gray-500 text-sm",children:"/mo"})]}),(0,s.jsxs)("p",{className:"text-xs text-gray-500 mb-6",children:["+ AWS infra: ",t.awsEstimate,"/mo"]}),(0,s.jsx)(n(),{href:t.ctaLink,className:"btn text-center mb-8 ".concat(t.recommended?"btn-moodle":"btn-ghost"),children:t.cta}),(0,s.jsx)("div",{className:"space-y-4 flex-1",children:Object.entries(d).map(e=>{let[a,r]=e,i=t.features[a];return(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[i?(0,s.jsx)(o.mmf,{className:"w-5 h-5 text-orange-400 flex-shrink-0 mt-0.5"}):(0,s.jsx)(o.GRP,{className:"w-5 h-5 text-gray-600 flex-shrink-0 mt-0.5"}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-xs text-gray-500",children:r}),(0,s.jsx)("div",{className:"text-sm font-medium text-gray-300",children:"string"==typeof i?i:i?"Included":"Not included"})]})]},a)})})]})},t.name))}),(0,s.jsx)(l.default,{delay:.4,children:(0,s.jsx)("div",{className:"max-w-3xl mx-auto mt-10",children:(0,s.jsxs)("div",{className:"bg-[#161636] border border-white/[0.08] rounded-2xl p-5 flex items-start gap-4",children:[(0,s.jsx)(o.ZLq,{className:"w-6 h-6 text-orange-400 flex-shrink-0 mt-0.5"}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-sm text-gray-300 font-medium mb-1",children:"About AWS infrastru
1cture costs"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 leading-relaxed",children:"AWS costs depend on usage (compute, database, storage, data transfer) and are billed directly by AWS to your account. Estimates above are based on typical usage for each tier. Actual costs may be lower with Reserved Instances or Savings Plans. We provide a detailed cost breakdown during onboarding so there are no surprises."})]})]})})})]})]})}},9623:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,6874,23)),Promise.resolve().then(a.bind(a,8116)),Promise.resolve().then(a.bind(a,6996)),Promise.resolve().then(a.bind(a,5589)),Promise.resolve().then(a.bind(a,6155))},9806:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var s=a(5155),r=a(6155);function i(e){let{cards:t,sticky:a=!0,stickyOffset:i=80,stickyGap:n=24}=e;return(0,s.jsx)("div",{className:"space-y-6",children:t.map((e,t)=>(0,s.jsx)("section",{className:"relative rounded-[2rem] overflow-hidden bg-gradient-to-br ".concat(e.colorClasses.bg," ").concat(e.colorClasses.border," border ").concat(a?"sticky shadow-2xl shadow-black/40":""),style:a?{top:"".concat(i+t*n,"px")}:void 0,children:(0,s.jsx)("div",{className:"relative z-10 px-8 md:px-16 py-12 md:py-16",children:(0,s.jsx)("div",{className:"max-w-6xl mx-auto",children:(0,s.jsx)(r.default,{children:(0,s.jsxs)("div",{className:"grid lg:grid-cols-2 gap-8 lg:gap-16 items-start",children:[(0,s.jsx)("div",{children:e.renderLeft()}),(0,s.jsx)("div",{className:"lg:pt-2",children:e.renderRight()})]})})})})},e.key))})}}},e=>{var t=t=>e(e.s=t);e.O(0,[760,2,874,639,441,684,358],()=>t(9623)),_N_E=e.O()}]);
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.