Skip to content

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.


{
"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.


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.


{
"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.


{
"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.


{
"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.


  1. Create src/data/my-data.json
  2. Import in the page that needs it:
---
import myData from "../data/my-data.json";
---
  1. If it should be CMS-editable, add a files collection entry in public/admin/config.yml (see Sveltia CMS).