Data Files
All page content lives in src/data/. Pages import these JSON files — no hardcoded strings inside .astro files. This makes content CMS-editable and keeps pages clean.
pricing.json
Section titled “pricing.json”{ "websitePlans": [ { "name": "Starter", "price": "₹24,999", "usdPrice": "$299", "period": "one-time", "features": [ "5-page custom website", "Mobile responsive", "Contact form", "SSL + global CDN hosting" ], "cta": "Get Starter", "highlight": false, "tagline": "" }, { "name": "Business", "price": "₹44,999", "usdPrice": "$549", "period": "one-time", "features": [ "10-page custom website", "Blog setup", "On-page SEO", "Payment integration" ], "cta": "Get Business", "highlight": true, "tagline": "Most popular" } ], "seoPackages": [ { "name": "SEO Starter", "price": "₹8,000", "period": "/month", "features": [ "Keyword research", "On-page optimisation", "Monthly ranking report" ], "cta": "Start SEO" } ], "seoAudit": { "price": "Free", "description": "Full technical + content audit delivered within 48 hours." }}Used by: src/pages/index.astro, src/pages/services/web-design.astro, src/pages/services/seo.astro.
faqs.json
Section titled “faqs.json”Keyed by page — each page imports only the array it needs.
{ "homepage": [ { "q": "How long does a website take to build?", "a": "2–4 weeks from kickoff to launch, depending on content readiness." } ], "webDesign": [ { "q": "Do you use WordPress?", "a": "No. We build on Astro — static HTML output, no database, no plugins." } ], "seo": [ { "q": "How long until I rank on Google?", "a": "3–6 months for a new site. 12+ months to compete for high-volume terms." } ], "hosting": [ { "q": "What does managed hosting include?", "a": "Global CDN, SSL certificate, uptime monitoring, and deployment support." } ]}5–6 questions per key minimum — needed for Google FAQ rich results.
about.json
Section titled “about.json”{ "team": [ { "initials": "SK", "name": "Suyog Kurlekar", "role": "Web Design & Development", "bio": "Builds fast, conversion-focused websites for service businesses.", "links": { "linkedin": "https://linkedin.com/in/...", "instagram": "https://instagram.com/...", "email": "suyog@jujualpha.in" } } ], "stats": [ { "value": "20+", "label": "Sites launched" }, { "value": "4.9★", "label": "Average rating" }, { "value": "100%", "label": "Edge hosted" }, { "value": "24hr", "label": "Proposal turnaround" } ], "howWeWork": [ { "name": "Astro (static framework)", "desc": "Static HTML output, zero JavaScript overhead. Fast, secure, built to rank." }, { "name": "Tailwind CSS v4", "desc": "Utility-first styling that scales without bloat." }, { "name": "Cloudflare Pages", "desc": "Global CDN, DDoS protection, SSL, 99.9% uptime." } ]}The role field is required by TeamGrid.astro — make sure it’s present on every team member.
comparison.json
Section titled “comparison.json”{ "columns": [ { "key": "feature", "label": "Feature" }, { "key": "wordpress", "label": "WordPress" }, { "key": "agencies", "label": "Agencies" }, { "key": "us", "label": "Juju Alpha", "highlight": true } ], "rows": [ { "feature": "Page Speed", "wordpress": "Slow — plugins, PHP, shared hosting", "agencies": "Varies — often WordPress behind the scenes", "us": "95–100 Lighthouse, Cloudflare CDN" }, { "feature": "Monthly Cost", "wordpress": "₹800–₹3,000/mo hosting + plugin fees", "agencies": "₹2,000–₹8,000/mo retainer", "us": "₹800/mo all-in" } ]}columns[].key must match the field names in each row object. The column with highlight: true gets green accent styling.
homepage.json
Section titled “homepage.json”{ "clients": [ { "name": "Acme Corp", "url": "https://acme.example.com" }, { "name": "Beta Studio", "url": "https://betastudio.example.com" }, { "name": "Gamma Travels", "url": "" } ], "processSteps": [ { "n": "01", "title": "Discovery call", "desc": "30-minute call to understand your business, goals, and timeline." }, { "n": "02", "title": "Proposal", "desc": "Custom scope + pricing within 24 hours of the call." }, { "n": "03", "title": "Build", "desc": "We build, you review. Typically 2–3 rounds of feedback." }, { "n": "04", "title": "Launch", "desc": "Deploy to Cloudflare Pages, submit to Google Search Console." } ]}If a client url is empty, ClientsBar.astro renders the name as plain text rather than a link.
Adding a new data file
Section titled “Adding a new data file”- Create
src/data/my-data.json - Import in the page that needs it:
---import myData from "../data/my-data.json";---- If it should be CMS-editable, add a
filescollection entry inpublic/admin/config.yml(see Sveltia CMS).