/* VA Classes, homepage sections + App */ const SUBJECTS = [ { key: "Math", name: "Math", icon: "calculator", grades: "Grades 1 to 10", page: "math.html", desc: "From counting and times-tables to algebra and exam-ready problem solving." }, { key: "Science", name: "Science", icon: "atom", grades: "Grades 1 to 10", page: "science.html", desc: "Physics, chemistry and biology made visual, hands-on and curious." }, { key: "English", name: "English", icon: "book-open", grades: "Grades 1 to 10", page: "english.html", desc: "Reading, writing, grammar and confident speaking, at every level." }, { key: "Coding", name: "Coding", icon: "code-xml", grades: "Grades 3 to 10", page: "coding.html", desc: "Scratch, Python and web basics. Real projects young builders love." }, ]; const TUTORS_FALLBACK = []; // tutors now live in tutors-data.js (window.VA_TUTORS) const TESTIMONIALS = [ { quote: "My son was really struggling with long division and just shutting down. His tutor figured out why in the first class. Three months in, he does fractions without being asked.", name: "Sandra L.", role: "Grade 4 Math · Vancouver, BC 🇨🇦", flag: "ca", color: "#FF6B6B" }, { quote: "We moved from India last year and worried about the school switch. Their tutor bridged the gap so well, my daughter says science finally makes sense. We signed up after the demo.", name: "Rajesh P.", role: "Grade 8 Science · Mississauga, ON 🇨🇦", flag: "ca", color: "#5B8DEF" }, { quote: "My daughter used to say she was 'just bad at English.' Six weeks later she handed in an essay she was actually proud of. Her teacher noticed.", name: "Farah O.", role: "Grade 6 English · Ottawa, ON 🇨🇦", flag: "ca", color: "#C77DFF" }, { quote: "He was playing video games, now he's building them. Scratch first, now Python. The tutor keeps it fun without it feeling like school.", name: "Tyler B.", role: "Grade 7 Coding · Winnipeg, MB 🇨🇦", flag: "ca", color: "#1F8A4C" }, { quote: "After every class I get a short note on what went well and what needs more work. No fluff. I always know exactly where my son stands.", name: "Nadia T.", role: "Grade 9 Math · Calgary, AB 🇨🇦", flag: "ca", color: "#FF9F1C" }, { quote: "As an Indian family in Canada, we loved that the tutors get both the curriculum here and our expectations at home. My twins have different tutors and it just works.", name: "Deepa S.", role: "Grades 5 & 7 · Edmonton, AB 🇨🇦", flag: "ca", color: "#E0A800" }, { quote: "I was worried about the timezone. Turns out 7pm our time is perfect. Classes every Tuesday, never missed one, tutor is always prepared.", name: "Josh M.", role: "Grade 10 Science · Toronto, ON 🇨🇦", flag: "ca", color: "#2A9DEF" }, { quote: "First class was free with zero pressure. The tutor was warm, prepared, and explained things two different ways until my daughter got it. That's rare.", name: "Melissa D.", role: "Grade 3 English · Halifax, NS 🇨🇦", flag: "ca", color: "#9B5DE5" }, ]; const PLANS = [ { name: "Single subject", sub: "One subject, one expert tutor.", cta: "Start free trial", price: { usd: { month: 49, quarter: 125 }, cad: { month: 65, quarter: 165 } }, feats: ["1 subject of your choice", "4 live 1-on-1 classes / month", "Weekly progress report", "Homework help on chat"] }, { name: "Two subjects", popular: true, sub: "The favourite for most families.", cta: "Start free trial", price: { usd: { month: 89, quarter: 227 }, cad: { month: 119, quarter: 305 } }, feats: ["Any 2 subjects", "8 live 1-on-1 classes / month", "Dedicated tutor match", "Monthly parent review call", "Recording of every class"] }, { name: "All subjects", sub: "Full support across the board.", cta: "Talk to us", price: { usd: { month: 149, quarter: 380 }, cad: { month: 199, quarter: 509 } }, feats: ["All 4 subjects", "12 live 1-on-1 classes / month", "Priority tutor matching", "Exam prep & mock tests", "Family dashboard for 2 kids"] }, ]; const MARKETS = [ { code: "ca", name: "Canada", tag: "Coast to coast", note: "Aligned to the Ontario & provincial curricula", zones: "All 6 time zones" }, ]; const SUBJECT_FILTERS = ["All", "Math", "Science", "English", "Coding"]; function HeroLeadForm() { const [done, setDone] = React.useState(false); const [sending, setSending] = React.useState(false); const [f, setF] = React.useState({ parent: "", phone: "", grade: "5", subject: "Math" }); const set = (k, v) => setF(p => ({ ...p, [k]: v })); const ready = f.parent.trim() && f.phone.trim(); const submit = () => { if (!ready) return; setSending(true); const payload = { parent: f.parent, phone: f.phone, grade: f.grade, subjects: f.subject, email: "", province: "", child: "", schedule: "", goal: "", source: "Hero form", submittedAt: new Date().toLocaleString("en-CA"), page: location.href, }; const finish = () => { setSending(false); setDone(true); }; if (window.VA_LEAD_ENDPOINT && window.VA_LEAD_ENDPOINT.startsWith("http")) { fetch(window.VA_LEAD_ENDPOINT, { method: "POST", mode: "no-cors", headers: { "Content-Type": "text/plain;charset=utf-8" }, body: JSON.stringify(payload) }).then(finish).catch(finish); } else { console.warn("VA_LEAD_ENDPOINT not set — lead not sent:", payload); finish(); } }; return (
{!done ? (
100% free · No card

Book a free trial class

A real 45-minute 1-on-1 class. See the difference before you pay a cent.

set("parent", e.target.value)} />
set("phone", e.target.value)} />

We'll WhatsApp you to confirm, usually within a few hours.

) : (

Thanks, {f.parent.split(" ")[0]}!

We've got your request for a free {f.subject} class (Grade {f.grade}). We'll WhatsApp {f.phone} shortly to lock in a time.

)}
); } function Hero({ onTrial }) { return (

Canada1-on-1 · Grades 1 to 10 · Canada

Classes that finally click.

Live, 1-on-1 tutoring in Math, Science, English and Coding. Expert Indian tutors, handpicked for Canadian families. Better grades start with one great teacher.

{[0,1,2,3,4].map(i => )}
Rated Excellent on Trustpilot Read reviews
Explore subjects See pricing
No card needed Cancel anytime First class free
); } function TeachingEdge() { const pillars = [ { ic: "graduation-cap", title: "IIT and university educated tutors", body: "Every VA tutor holds a degree from India's most rigorous institutions. They teach the concept behind the answer, so your child actually understands it rather than just memorising it." }, { ic: "map-pin", title: "Mapped to your provincial curriculum", body: "Lessons follow Ontario, BC, Alberta or your child's exact syllabus. No filler, no gaps. Exactly what their teacher expects next week." }, { ic: "heart-handshake", title: "High standards, warm delivery", body: "Indian educators set high expectations but deliver them with patience and encouragement. Your child is challenged, never pressured." }, { ic: "message-circle", title: "You stay in the loop, always", body: "After every class, a short WhatsApp note: what went well, what to practise. No jargon. Just clarity." }, ]; useLucide(); return (

The Indian teaching advantage

The teachers your parents wished they had.

India produces the world's most rigorous academic tradition. VA Classes brings that depth of knowledge, with real personal attention, to your child's screen every week. Every lesson maps to the Canadian curriculum your child follows at school.

94% of students show measurable improvement within 8 weeks
4.9★ average tutor rating from Canadian parents
{pillars.map(p => (

{p.title}

{p.body}

))}
); } function SubjectsBand({ onTrial }) { return (

What we teach

Four subjects, one expert tutor each

Every class is one-on-one and built around your child's grade, pace and goals.

{SUBJECTS.map(s => )}
); } function HowItWorks() { const steps = [ { n: "1", ic: "clipboard-list", t: "Tell us about your child", d: "Share your child's grade, the subject they need, and a time that suits you. Takes about 30 seconds, no card, no commitment." }, { n: "2", ic: "user-check", t: "We match the right tutor", d: "We pair your child with a specialist Indian tutor for their grade and goal, and confirm your free demo slot on WhatsApp." }, { n: "3", ic: "sparkles", t: "Watch it click", d: "Your child has a real 1-on-1 demo class. Love it? Continue with a plan. If not, no pressure at all." }, ]; return (

How it works

Book a free demo in 3 simple steps

From first click to first class, it's genuinely this easy.

{steps.map(s => (
{s.n}

{s.t}

{s.d}

))}
); } // A real demo-booking conversation, plays out like a screen recording. const WA_CONVO = [ { from: "in", text: "Hi! Saw your page, is the demo class really free? 😊", t: "9:38 AM" }, { from: "out", text: "Hi Meena! Yes, 100% free, no card needed 🙌", t: "9:38 AM" }, { from: "in", text: "My son's in Grade 5, really struggling with maths lately", t: "9:39 AM" }, { from: "out", text: "Perfect, we'll match a specialist Math tutor for his grade. Which evenings suit you?", t: "9:39 AM" }, { from: "in", text: "Tuesdays & Thursdays after 6 work best 🙏", t: "9:40 AM" }, { from: "out", text: "Booked! Tuesday 6:30pm with Ms. Priya ✅ You'll get a reminder right here.", t: "9:40 AM" }, { from: "in", text: "Amazing, thank you so much! Really excited ❤️", t: "9:41 AM" }, ]; // WhatsApp widgets inspired by real parent feedback (names changed for privacy) const WA_REVIEWS = [ { name: "Ranjit Singh", loc: "Brampton, ON", flag: "ca", time: "4:51 am", color: "#7B61FF", ava: "R", msgs: [ { txt: "94 in math 😭", ts: "6:18 pm", mine: false }, { txt: "arjun", ts: "6:18 pm", mine: false }, { txt: "wowww!! tell him I said well done seriously", ts: "6:19 pm", mine: true }, { txt: "tuesday same time pls. he wants extra class this week also", ts: "6:21 pm", mine: false }, ] }, { name: "Tanya Dhawan", loc: "Mississauga, ON", flag: "ca", time: "2:49 pm", color: "#FF6B6B", ava: "T", msgs: [ { txt: "hi", ts: "4:13 am", mine: false }, { txt: "my son kabir sat through the whole class today. he never does that", ts: "4:14 am", mine: false }, { txt: "sunday evening slot available for english? 7pm EST?", ts: "4:17 am", mine: false }, { txt: "yes sunday 7 works! done ✅", ts: "4:19 am", mine: true }, ] }, { name: "Preethi Nair", loc: "Calgary, AB", flag: "ca", time: "9:24 am", color: "#1F8A4C", ava: "P", msgs: [ { txt: "kenisha had her exam", ts: "7:51 pm", mine: false }, { txt: "she came out smiling", ts: "7:52 pm", mine: false }, { txt: "aww that's the best thing to hear honestly", ts: "7:53 pm", mine: true }, { txt: "she said she wasnt scared at all. thank u so much", ts: "7:54 pm", mine: false }, ] }, { name: "Kavya Iyer", loc: "Winnipeg, MB", flag: "ca", time: "7:02 am", color: "#2A6FDB", ava: "K", msgs: [ { txt: "aryan got 88 in math", ts: "8:29 pm", mine: false }, { txt: "was 61 last term", ts: "8:30 pm", mine: false }, { txt: "that's a massive jump in one term!", ts: "8:31 pm", mine: true }, { txt: "he asked for more classes himself. i dont know what u did lol", ts: "8:32 pm", mine: false }, ] }, { name: "Suresh Pillai", loc: "Halifax, NS", flag: "ca", time: "2:44 am", color: "#E05C5C", ava: "S", msgs: [ { txt: "can we move sunday class to saturday", ts: "5:11 pm", mine: false }, { txt: "rohan has a game", ts: "5:11 pm", mine: false }, { txt: "no problem, saturday 4pm done", ts: "5:13 pm", mine: true }, { txt: "also he passed his test. said to say thanks", ts: "5:14 pm", mine: false }, ] }, { name: "Meera Krishnan", loc: "Surrey, BC", flag: "ca", time: "8:32 am", color: "#FF9F1C", ava: "M", msgs: [ { txt: "diya recited the periodic table for her dad yesterday", ts: "6:59 pm", mine: false }, { txt: "he had no idea she knew all that 😂", ts: "7:00 pm", mine: false }, { txt: "hahaha love this!! she's worked so hard", ts: "7:01 pm", mine: true }, { txt: "she used to say science is boring. not anymore", ts: "7:02 pm", mine: false }, ] }, ]; function WaHeader({ name, color, status, time = "9:41" }) { return ( <>
{time}
{name[0]}
{name} {status}
); } // Animated phone, types and reveals messages on a loop, like a screen recording. function LiveWhatsApp() { const [shown, setShown] = React.useState(0); const [typing, setTyping] = React.useState(false); const bodyRef = React.useRef(null); React.useEffect(() => { const reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches; if (reduce) { setShown(WA_CONVO.length); return; } const timers = []; const run = () => { timers.forEach(clearTimeout); timers.length = 0; setShown(0); setTyping(false); let d = 800; WA_CONVO.forEach((m, i) => { timers.push(setTimeout(() => setTyping(true), d)); d += m.from === "in" ? 1200 : 1000; timers.push(setTimeout(() => { setTyping(false); setShown(i + 1); }, d)); d += 900; }); timers.push(setTimeout(run, d + 2600)); }; run(); return () => timers.forEach(clearTimeout); }, []); React.useEffect(() => { if (bodyRef.current) bodyRef.current.scrollTop = bodyRef.current.scrollHeight; }, [shown, typing]); const nextFrom = WA_CONVO[shown] ? WA_CONVO[shown].from : null; return (
TODAY
{WA_CONVO.slice(0, shown).map((m, j) => (
{m.text} {m.t}{m.from === "out" && ✓✓}
))} {typing && nextFrom && (
)}
Message
); } function WaPhone({ review }) { return (
TODAY
{review.msgs.map((m, j) => (
{m.txt} {m.ts}{m.mine && ✓✓}
))}
CA {review.loc}
Message
); } function WhatsAppReviews() { useLucide(); return (
Messages from parents
); } function Tutors({ onTrial }) { const ALL = (window.VA_TUTORS && window.VA_TUTORS.length) ? window.VA_TUTORS : TUTORS_FALLBACK; const [filter, setFilter] = React.useState("All"); const shown = filter === "All" ? ALL : ALL.filter(t => t.subject.includes(filter)); return (

Meet the tutors

Expert Indian tutors, hand-picked for Canada

Every tutor is a subject specialist based in India, experienced at teaching Canadian students online, patient, qualified and background-checked.

{SUBJECT_FILTERS.map(f => ( ))}
{shown.map(t => )}
); } function Countries() { const stats = [ { ic: "user-round", n: "1-on-1", l: "Every single class" }, { ic: "book-open", n: "4", l: "Core subjects" }, { ic: "graduation-cap", n: "1 to 10", l: "Grades we teach" }, { ic: "gift", n: "Free", l: "First trial class" }, ]; const provinces = ["Ontario", "British Columbia", "Alberta", "Quebec", "Manitoba", "Saskatchewan", "Nova Scotia", "New Brunswick", "Newfoundland & Labrador", "PEI"]; return (

Where we teach

Proudly built for families across Canada 🇨🇦

Coast to coast, every class aligned to your child's provincial curriculum, your time zone, and priced simply in CAD.

Canada
Aligned to the Ontario & provincial curricula
Classes in every Canadian time zone, evenings & weekends
Simple pricing in CAD, no conversion surprises
{provinces.map(p => {p})}
{stats.map(s => (
{s.n}
{s.l}
))}
); } function Testimonials() { return (

Parent stories

Real families. Real results.

Every word here was written by a parent or student, no scripts, no stock quotes. We're a small team and every single review matters to us. Many come from our growing NRI community across Canada.

{TESTIMONIALS.map((q, i) => )}
Every review is from a real family we've taught
See our reviews on Trustpilot
); } function Reviews() { useLucide(); const avatars = ["#FF6B6B", "#FFC700", "#4ECDC4", "#5B8DEF", "#C77DFF", "#FF9F1C"]; return (
Trustpilot Rated Excellent
{[0, 1, 2, 3, 4].map(i => ( ))}

Reviewed by real families

We're a small, growing team, so every review on Trustpilot is from a real parent or student. No bought reviews, no bots. Read them for yourself.

{avatars.map((c, i) => )} Loved by parents & students
Read our reviews on Trustpilot
); } function Pricing({ onTrial }) { const [cycle, setCycle] = React.useState("month"); // CANADA-FIRST: prices shown in CAD only. US/USD is dormant (PLANS still carry usd // figures), to re-enable a currency switch later, restore the currency-toggle below. const currency = "cad"; return (

Simple pricing

Plans that grow with your child

Cancel anytime. Every plan starts with a free trial class, no card required. All prices in CAD.

Prices in Canadian dollars
{window.VA_PLANS.map(p => )}

See full pricing & FAQ

); } function FinalCTA({ onTrial }) { const perks = [ { ic: "shield-check", t: "No card required", d: "Book a free class, zero obligation." }, { ic: "user-round", t: "Matched to your child", d: "We pick the right tutor for their grade and goal." }, { ic: "clock", t: "You pick the time", d: "Evenings, weekends, whatever fits your family." }, { ic: "trending-up", t: "Progress after 1 class", d: "You'll see the difference in the very first session." }, ]; return (

Start today

One free class.
No card. No risk.

Your child's first 1-on-1 lesson is completely free. If it clicks, we'll help you find the right plan. If it doesn't, no hard feelings.

{perks.map(p => (
{p.t}, {p.d}
))}

Book your free class right now

Takes 30 seconds. We'll WhatsApp you to confirm.

We'll WhatsApp you to lock in a time.

); } function App() { const [trial, setTrial] = React.useState(false); useLucide(); const open = () => setTrial(true); return (
); } ReactDOM.createRoot(document.getElementById("root")).render();