feat(blog): proper blog structure with 4 sample posts + footer polish
Blog:
- posts.ts data file with 4 authored posts: feeding by age, health
warning signs, getting started guide, Telegram alerts feature
- /blog listing page with category pills, read time, hover cards
- /blog/[slug] post template: hero, sections (paragraphs/lists/tables/
callouts), IAP schedule table, article footer CTA
- All 4 posts prerendered as SSG (generateStaticParams)
Footer:
- Update phone number to +91 95548 81799
- ❤️ grows on hover with inline-block + hover:scale-150 transition
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
678cf65d70
commit
8be6bbe23f
4 changed files with 624 additions and 21 deletions
165
src/app/(marketing)/blog/[slug]/page.tsx
Normal file
165
src/app/(marketing)/blog/[slug]/page.tsx
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
import type { Metadata } from "next";
|
||||
import Link from "next/link";
|
||||
import { notFound } from "next/navigation";
|
||||
import { POSTS, getPost, formatDate } from "../posts";
|
||||
|
||||
export function generateStaticParams() {
|
||||
return POSTS.map((p) => ({ slug: p.slug }));
|
||||
}
|
||||
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ slug: string }>;
|
||||
}): Promise<Metadata> {
|
||||
const { slug } = await params;
|
||||
const post = getPost(slug);
|
||||
if (!post) return {};
|
||||
return {
|
||||
title: post.title,
|
||||
description: post.excerpt,
|
||||
};
|
||||
}
|
||||
|
||||
export default async function BlogPostPage({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ slug: string }>;
|
||||
}) {
|
||||
const { slug } = await params;
|
||||
const post = getPost(slug);
|
||||
if (!post) notFound();
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-white">
|
||||
{/* Hero */}
|
||||
<div className="bg-gradient-to-br from-rose-50 to-pink-50 border-b border-rose-100">
|
||||
<div className="max-w-2xl mx-auto px-5 pt-12 pb-10">
|
||||
<Link
|
||||
href="/blog"
|
||||
className="inline-flex items-center gap-1.5 text-sm text-rose-500 hover:text-rose-700 font-medium mb-8 transition-colors"
|
||||
>
|
||||
← All articles
|
||||
</Link>
|
||||
|
||||
<div className="flex flex-wrap items-center gap-2 mb-5">
|
||||
<span className={`text-xs font-semibold px-2.5 py-0.5 rounded-full ${post.categoryColor}`}>
|
||||
{post.category}
|
||||
</span>
|
||||
<span className="text-xs text-gray-400">{formatDate(post.date)}</span>
|
||||
<span className="text-xs text-gray-400">·</span>
|
||||
<span className="text-xs text-gray-400">{post.readTime}</span>
|
||||
</div>
|
||||
|
||||
<h1 className="text-3xl sm:text-4xl font-bold text-gray-900 leading-tight mb-4">
|
||||
{post.title}
|
||||
</h1>
|
||||
<p className="text-lg text-gray-500 leading-relaxed">{post.excerpt}</p>
|
||||
|
||||
<div className="mt-6 text-sm text-gray-400">
|
||||
By <span className="text-gray-600 font-medium">{post.author}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Article body */}
|
||||
<div className="max-w-2xl mx-auto px-5 py-12">
|
||||
<div className="space-y-10">
|
||||
{post.sections.map((section, i) => (
|
||||
<div key={i}>
|
||||
{section.heading && (
|
||||
<h2 className="text-xl font-bold text-gray-900 mb-4 mt-2">{section.heading}</h2>
|
||||
)}
|
||||
|
||||
{section.paragraphs?.map((p, j) => (
|
||||
<p key={j} className="text-gray-600 leading-relaxed mb-4">
|
||||
{p}
|
||||
</p>
|
||||
))}
|
||||
|
||||
{section.table && (
|
||||
<div className="overflow-x-auto mb-4">
|
||||
<table className="w-full text-sm border-collapse">
|
||||
<thead>
|
||||
<tr className="bg-rose-50">
|
||||
{section.table.headers.map((h, j) => (
|
||||
<th
|
||||
key={j}
|
||||
className="text-left px-4 py-3 font-semibold text-gray-700 border border-rose-100 first:rounded-tl-lg last:rounded-tr-lg"
|
||||
>
|
||||
{h}
|
||||
</th>
|
||||
))}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{section.table.rows.map((row, j) => (
|
||||
<tr key={j} className="border-b border-gray-100 hover:bg-gray-50">
|
||||
{row.map((cell, k) => (
|
||||
<td key={k} className="px-4 py-3 text-gray-600 border border-gray-100">
|
||||
{cell}
|
||||
</td>
|
||||
))}
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{section.list && (
|
||||
<ul className="space-y-2.5 mb-4">
|
||||
{section.list.map((item, j) => (
|
||||
<li key={j} className="flex items-start gap-3 text-sm text-gray-600">
|
||||
<span className="mt-1.5 w-1.5 h-1.5 rounded-full bg-rose-400 shrink-0" />
|
||||
<span>
|
||||
{item.label && (
|
||||
<span className="font-semibold text-gray-800">{item.label}: </span>
|
||||
)}
|
||||
{item.text}
|
||||
</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)}
|
||||
|
||||
{section.callout && (
|
||||
<div className="bg-rose-50 border border-rose-100 rounded-xl p-5 flex gap-3 items-start mb-4">
|
||||
<span className="text-xl shrink-0 mt-0.5">{section.callout.emoji}</span>
|
||||
<p className="text-sm text-rose-800 leading-relaxed">{section.callout.text}</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* Footer CTA */}
|
||||
<div className="mt-16 pt-10 border-t border-gray-100">
|
||||
<div className="bg-gradient-to-br from-rose-50 to-pink-50 rounded-2xl p-8 text-center border border-rose-100">
|
||||
<div className="text-3xl mb-3">🌸</div>
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Try Tia — free during early access</h3>
|
||||
<p className="text-gray-500 text-sm mb-6 max-w-sm mx-auto">
|
||||
Log feeds, track vaccinations, and build a digital heirloom for your child. Built for Indian families.
|
||||
</p>
|
||||
<Link
|
||||
href="/login"
|
||||
className="inline-flex items-center gap-2 bg-rose-500 hover:bg-rose-600 text-white text-sm font-semibold px-7 py-3 rounded-full transition-colors duration-200"
|
||||
>
|
||||
Get started →
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="mt-10 flex items-center justify-between">
|
||||
<Link
|
||||
href="/blog"
|
||||
className="inline-flex items-center gap-1.5 text-sm font-medium text-rose-600 hover:text-rose-700 transition-colors"
|
||||
>
|
||||
← All articles
|
||||
</Link>
|
||||
<span className="text-xs text-gray-400">By {post.author} · {formatDate(post.date)}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
@ -1,34 +1,66 @@
|
|||
import type { Metadata } from "next";
|
||||
import Link from "next/link";
|
||||
import { POSTS, formatDate } from "./posts";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Blog",
|
||||
description: "Thoughts on parenting, privacy, and building Tia.",
|
||||
description:
|
||||
"Guides on baby feeding, health milestones, vaccination schedules, and how to make the most of Tia — written for Indian families.",
|
||||
};
|
||||
|
||||
export default function BlogPage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-white">
|
||||
<div className="max-w-2xl mx-auto px-5 py-20">
|
||||
<div className="mb-3 text-sm font-medium text-rose-500 uppercase tracking-widest">Journal</div>
|
||||
<h1 className="text-4xl font-bold text-gray-900 mb-6 leading-tight">Blog</h1>
|
||||
|
||||
<div className="bg-rose-50 rounded-2xl p-8 text-center border border-rose-100">
|
||||
<div className="text-4xl mb-4">✍️</div>
|
||||
<h2 className="text-xl font-semibold text-gray-800 mb-3">Coming soon</h2>
|
||||
<p className="text-gray-500 leading-relaxed max-w-sm mx-auto">
|
||||
We're working on thoughtful posts about parenting, privacy, and what it means to build
|
||||
technology for families — not for advertisers.
|
||||
{/* Header */}
|
||||
<div className="bg-gradient-to-br from-rose-50 to-pink-50 border-b border-rose-100">
|
||||
<div className="max-w-3xl mx-auto px-5 py-16 text-center">
|
||||
<div className="mb-3 text-sm font-medium text-rose-500 uppercase tracking-widest">Journal</div>
|
||||
<h1 className="text-4xl font-bold text-gray-900 mb-4 leading-tight">The Tia Blog</h1>
|
||||
<p className="text-lg text-gray-500 leading-relaxed max-w-xl mx-auto">
|
||||
Practical guides on baby feeding, health, vaccination schedules, and getting the most out of Tia — written for Indian families.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-12 pt-8 border-t border-gray-100">
|
||||
<Link
|
||||
href="/"
|
||||
className="inline-flex items-center gap-2 text-sm font-medium text-rose-600 hover:text-rose-700 transition-colors"
|
||||
>
|
||||
← Back to home
|
||||
</Link>
|
||||
{/* Post grid */}
|
||||
<div className="max-w-3xl mx-auto px-5 py-14">
|
||||
<div className="flex flex-col gap-8">
|
||||
{POSTS.map((post) => (
|
||||
<article
|
||||
key={post.slug}
|
||||
className="group border border-gray-100 rounded-2xl p-7 hover:border-rose-200 hover:shadow-md transition-all duration-200 bg-white"
|
||||
>
|
||||
<Link href={`/blog/${post.slug}`} className="block">
|
||||
<div className="flex items-start gap-5">
|
||||
{/* Emoji icon */}
|
||||
<div className="hidden sm:flex shrink-0 w-14 h-14 rounded-xl bg-rose-50 items-center justify-center text-2xl border border-rose-100 group-hover:bg-rose-100 transition-colors duration-200">
|
||||
{post.emoji}
|
||||
</div>
|
||||
|
||||
<div className="flex-1 min-w-0">
|
||||
{/* Meta row */}
|
||||
<div className="flex flex-wrap items-center gap-2 mb-3">
|
||||
<span className={`text-xs font-semibold px-2.5 py-0.5 rounded-full ${post.categoryColor}`}>
|
||||
{post.category}
|
||||
</span>
|
||||
<span className="text-xs text-gray-400">{formatDate(post.date)}</span>
|
||||
<span className="text-xs text-gray-400">·</span>
|
||||
<span className="text-xs text-gray-400">{post.readTime}</span>
|
||||
</div>
|
||||
|
||||
<h2 className="text-xl font-bold text-gray-900 leading-snug mb-2 group-hover:text-rose-700 transition-colors duration-150">
|
||||
{post.title}
|
||||
</h2>
|
||||
<p className="text-gray-500 text-sm leading-relaxed line-clamp-3">{post.excerpt}</p>
|
||||
|
||||
<div className="mt-4 text-sm font-semibold text-rose-500 group-hover:text-rose-600 transition-colors duration-150">
|
||||
Read article →
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
406
src/app/(marketing)/blog/posts.ts
Normal file
406
src/app/(marketing)/blog/posts.ts
Normal file
|
|
@ -0,0 +1,406 @@
|
|||
export interface BlogSection {
|
||||
heading?: string;
|
||||
paragraphs?: string[];
|
||||
list?: { label?: string; text: string }[];
|
||||
callout?: { emoji: string; text: string };
|
||||
table?: { headers: string[]; rows: string[][] };
|
||||
}
|
||||
|
||||
export interface BlogPost {
|
||||
slug: string;
|
||||
title: string;
|
||||
excerpt: string;
|
||||
date: string;
|
||||
author: string;
|
||||
category: string;
|
||||
categoryColor: string;
|
||||
readTime: string;
|
||||
emoji: string;
|
||||
sections: BlogSection[];
|
||||
}
|
||||
|
||||
export const POSTS: BlogPost[] = [
|
||||
{
|
||||
slug: "baby-feed-cycle-by-age",
|
||||
title: "Baby Feed Cycle by Age: A Complete Guide for Indian Parents",
|
||||
excerpt:
|
||||
"From colostrum in the first hour to family meals at twelve months — a stage-by-stage breakdown of what, when, and how much to feed your baby in the first year.",
|
||||
date: "2026-05-15",
|
||||
author: "Tia Team",
|
||||
category: "Feeding",
|
||||
categoryColor: "bg-amber-100 text-amber-700",
|
||||
readTime: "7 min read",
|
||||
emoji: "🍼",
|
||||
sections: [
|
||||
{
|
||||
paragraphs: [
|
||||
"Feeding a newborn is one of the most frequent tasks you'll perform as a new parent — and one of the most confusing. Every baby is different, and advice can vary wildly between your paediatrician, your mother-in-law, and the internet. This guide cuts through the noise with a clear, age-by-age breakdown based on IAP (Indian Academy of Pediatrics) recommendations.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "0–4 Weeks: Demand Feeding Around the Clock",
|
||||
paragraphs: [
|
||||
"Newborns have stomachs roughly the size of a marble. They can hold only a few millilitres at a time, which is exactly why they feed so frequently — 8 to 12 times in 24 hours is completely normal.",
|
||||
"Breast milk is the gold standard. The IAP strongly recommends exclusive breastfeeding for the first six months. In the first few days, your body produces colostrum — a thick, yellowish fluid packed with antibodies. It's low in volume but high in everything your baby needs right now.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "📌",
|
||||
text: "Tip: Wake your baby to feed if more than 4 hours have passed in the first two weeks. After that, feed on demand.",
|
||||
},
|
||||
list: [
|
||||
{ label: "Frequency", text: "Every 2–3 hours (8–12 feeds/day)" },
|
||||
{ label: "Duration", text: "10–20 minutes per breast" },
|
||||
{ label: "Signs of hunger", text: "Rooting, sucking fist, turning head side-to-side" },
|
||||
{ label: "Signs of fullness", text: "Releasing the nipple, relaxed hands, sleepy" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "1–3 Months: Settling into a Rhythm",
|
||||
paragraphs: [
|
||||
"By six weeks, most babies start stretching their feeds slightly — you might see 3–4 hour gaps during the day. Night feeds are still very much on the table; expecting a full night's sleep at this age is unrealistic.",
|
||||
"If you're formula feeding, your baby will typically take 90–120 ml per feed, about 6–8 times a day. Always follow the formula preparation instructions exactly — over- or under-diluting causes real harm.",
|
||||
],
|
||||
list: [
|
||||
{ label: "Breast milk", text: "On demand, roughly every 3 hours" },
|
||||
{ label: "Formula", text: "90–120 ml, 6–8 times/day" },
|
||||
{ label: "Night feeds", text: "Still expected — 1 to 3 per night is normal" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "4–6 Months: The Solid-Food Window Opens",
|
||||
paragraphs: [
|
||||
"The IAP recommends starting complementary foods at exactly 6 months — not earlier. Some babies show interest slightly before, but introducing solids too early increases the risk of allergies, digestive issues, and a reduction in breast milk supply.",
|
||||
"Signs your baby is ready: can sit with support, shows interest in your food, has lost the tongue-thrust reflex that pushes food back out.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "⚠️",
|
||||
text: "Do NOT start solids before 6 months. Contrary to popular belief in India, rice water, dal water, or diluted cow's milk are not appropriate first foods and can cause nutritional deficiencies.",
|
||||
},
|
||||
list: [
|
||||
{ label: "Milk feeds", text: "Breast milk / formula remains primary nutrition" },
|
||||
{ label: "Start solids at 6m", text: "Begin with single-ingredient purées — rice, moong dal, banana, sweet potato" },
|
||||
{ label: "Frequency", text: "1 meal/day alongside regular milk feeds" },
|
||||
{ label: "Texture", text: "Smooth purée, no lumps, no salt, no sugar, no honey" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "6–9 Months: Building Food Variety",
|
||||
paragraphs: [
|
||||
"Now the real exploration begins. Introduce one new food every 3–4 days so you can spot allergic reactions. Offer vegetables before fruit — early exposure to bitter tastes builds acceptance for a wider range of foods.",
|
||||
"Move from purées to mashed textures. Khichdi, suji halwa (without sugar), soft-cooked vegetables, and curd are excellent first Indian foods. Avoid salt, sugar, honey, and whole cow's milk as a drink (though it's fine in cooking).",
|
||||
],
|
||||
list: [
|
||||
{ label: "Meals", text: "2–3 times/day + breast milk / formula" },
|
||||
{ label: "Portion", text: "2–4 tablespoons per meal, increasing gradually" },
|
||||
{ label: "Texture", text: "Mashed, soft lumps" },
|
||||
{ label: "Good first foods", text: "Khichdi, ragi porridge, soft dal, banana, curd" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "9–12 Months: Approaching Family Food",
|
||||
paragraphs: [
|
||||
"By nine months, many babies can manage soft finger foods and are curious about what's on your plate. Encourage self-feeding — yes, it's messy, but it builds motor skills and a healthy relationship with food.",
|
||||
"Breast milk or formula continues alongside 3 meals and 1–2 snacks. The goal is not to replace milk yet, but to steadily increase the variety and texture of solids. By twelve months, your baby should be eating a modified version of most family foods — just without the salt, spice, and whole nuts.",
|
||||
],
|
||||
list: [
|
||||
{ label: "Meals", text: "3 meals + 1–2 snacks" },
|
||||
{ label: "Milk", text: "Breast milk or follow-on formula, 3–4 times/day" },
|
||||
{ label: "Finger foods", text: "Soft chapati pieces, banana chunks, steamed carrot, paneer cubes" },
|
||||
{ label: "Avoid", text: "Honey, whole nuts, added salt, added sugar, cow's milk as a drink" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "How Tia Helps You Track All of This",
|
||||
paragraphs: [
|
||||
"Logging every feed manually in a notebook is exhausting. Tia's Quick Log lets you record a feed in under three seconds — tap the type, confirm the time, done. Over days and weeks, Tia shows you patterns: when hunger peaks, how night feeding is trending, whether solid intake is growing.",
|
||||
"And if you ever have a question — \"Is three feeds at night normal at 8 months?\" or \"My baby rejected every vegetable I tried, what do I do?\" — Ask Tia is there. It answers parenting and feeding questions thoughtfully, and will always tell you when something needs a real paediatrician instead of an app.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "🌸",
|
||||
text: "Join Tia's early access — free during this period — and start building your baby's complete feeding history today.",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "baby-health-warning-signs-first-year",
|
||||
title: "Your Baby's Health in Year One: Signs That Need Immediate Attention",
|
||||
excerpt:
|
||||
"What's normal newborn behaviour, what's a watch-and-wait situation, and what needs a call to the paediatrician right now — a parent's guide to the first twelve months.",
|
||||
date: "2026-05-08",
|
||||
author: "Tia Team",
|
||||
category: "Health",
|
||||
categoryColor: "bg-rose-100 text-rose-700",
|
||||
readTime: "8 min read",
|
||||
emoji: "🩺",
|
||||
sections: [
|
||||
{
|
||||
paragraphs: [
|
||||
"Nothing creates anxiety quite like a sick infant — especially in the first weeks when everything feels fragile and uncertain. This guide is not a replacement for your paediatrician. It's a map: the kind of knowledge that helps you stay calm, act quickly when it counts, and avoid unnecessary panic the rest of the time.",
|
||||
"The IAP recommends a schedule of well-baby visits in the first year. Make sure you attend all of them — they're not just for vaccinations. Your paediatrician uses these visits to track growth, development, and to answer the questions that pile up between appointments.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Fever: The Most Common Alarm",
|
||||
paragraphs: [
|
||||
"A fever is not a disease — it's a sign that your baby's immune system is working. But the response to fever depends entirely on how old your baby is.",
|
||||
],
|
||||
table: {
|
||||
headers: ["Age", "Temperature Threshold", "What to Do"],
|
||||
rows: [
|
||||
["Under 3 months", "38°C (100.4°F) or above", "Emergency — call your doctor immediately or go to hospital"],
|
||||
["3–6 months", "38.5°C (101.3°F) or above", "Call your paediatrician same day"],
|
||||
["6–12 months", "39°C (102.2°F) or above, or lasting 2+ days", "Call your paediatrician"],
|
||||
],
|
||||
},
|
||||
callout: {
|
||||
emoji: "⚠️",
|
||||
text: "In newborns under 3 months, never wait and watch with a fever. A temperature of 38°C or above is a medical emergency regardless of how well your baby looks.",
|
||||
},
|
||||
},
|
||||
{
|
||||
heading: "Dehydration: Harder to Spot Than You Think",
|
||||
paragraphs: [
|
||||
"Babies lose fluids quickly during illness. Dehydration can turn serious within hours, especially in summer or if your baby has diarrhoea and vomiting simultaneously.",
|
||||
],
|
||||
list: [
|
||||
{ label: "Early signs", text: "Fewer wet nappies (fewer than 4 in 24 hours), dry mouth, no tears when crying" },
|
||||
{ label: "Moderate signs", text: "Sunken fontanelle (soft spot on head), sunken eyes, skin that tents when pinched" },
|
||||
{ label: "Severe signs", text: "No urine for 8+ hours, very sunken fontanelle, extreme lethargy — go to hospital" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Breathing: When to Act Immediately",
|
||||
paragraphs: [
|
||||
"Occasional sneezes, snuffles, and irregular breathing during sleep are normal in newborns. What's not normal:",
|
||||
],
|
||||
list: [
|
||||
{ text: "Nostrils flaring with every breath" },
|
||||
{ text: "Skin pulling in between ribs or below the chest (retractions)" },
|
||||
{ text: "Breathing rate above 60 breaths per minute (for infants under 2 months)" },
|
||||
{ text: "A grunt with every breath" },
|
||||
{ text: "Blue tinge around the lips or fingernails (cyanosis) — call emergency services immediately" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Jaundice in Newborns",
|
||||
paragraphs: [
|
||||
"A yellowish tint to the skin and whites of the eyes is jaundice — caused by bilirubin accumulating in the blood. Mild jaundice is extremely common (over 60% of newborns) and usually resolves on its own within 2 weeks.",
|
||||
"What needs attention: jaundice appearing in the first 24 hours of life, jaundice lasting more than 3 weeks, or a baby who is very yellow, difficult to wake, or feeding poorly alongside jaundice.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "☀️",
|
||||
text: "Traditional sunbathing advice for jaundice is outdated. Modern guidance from the IAP recommends phototherapy in a clinical setting for significant jaundice — home sunlight is not sufficient and UV exposure carries its own risks.",
|
||||
},
|
||||
},
|
||||
{
|
||||
heading: "Growth: The Bigger Picture",
|
||||
paragraphs: [
|
||||
"Babies should roughly double their birth weight by 5 months and triple it by 12 months. A single weight measurement tells you little — it's the trend that matters. Tia's growth chart plots your baby's weight, height, and head circumference against the IAP reference curves, flagging percentiles that warrant a conversation with your doctor.",
|
||||
"Slow weight gain can have many causes — a latch problem, illness, or occasionally something that needs investigation. Don't try to self-diagnose from a chart; bring the data to your paediatrician.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "The IAP Vaccination Schedule",
|
||||
paragraphs: [
|
||||
"Vaccines are one of the most powerful tools we have for protecting your baby in the first year. The IAP schedule includes vaccines at birth, 6 weeks, 10 weeks, 14 weeks, 6 months, 9 months, and 12 months — missing or delaying them leaves a real gap in protection.",
|
||||
"Tia tracks the complete IAP schedule and sends you alerts on Telegram before each due date. You can mark vaccines as given and keep a permanent record that travels with your family.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "💉",
|
||||
text: "Never skip or delay vaccines based on mild illness or a mild fever. The IAP guidance: vaccination is safe with mild illness. Significant fever or acute illness is the only reason to postpone.",
|
||||
},
|
||||
},
|
||||
{
|
||||
heading: "A Rule of Thumb for New Parents",
|
||||
paragraphs: [
|
||||
"When in doubt, call your paediatrician. There is no such thing as a silly question in the first year. A good paediatrician would rather you ring once too often than miss something important.",
|
||||
"Tia's Ask Tia feature is designed to answer parenting and logistics questions — sleep patterns, feeding concerns, developmental milestones. For any symptom question — fever, rash, breathing, pain — Ask Tia will always direct you to your paediatrician rather than try to diagnose. We built it that way on purpose.",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "getting-started-with-tia",
|
||||
title: "Getting Started with Tia: Your First Week",
|
||||
excerpt:
|
||||
"A friendly walkthrough for new families — from creating your account to logging your first feed, setting up IAP vaccination alerts, and inviting your partner.",
|
||||
date: "2026-04-28",
|
||||
author: "Tia Team",
|
||||
category: "App Guide",
|
||||
categoryColor: "bg-violet-100 text-violet-700",
|
||||
readTime: "5 min read",
|
||||
emoji: "🌸",
|
||||
sections: [
|
||||
{
|
||||
paragraphs: [
|
||||
"Tia is designed to get out of your way. You shouldn't be spending more than a few seconds on a log when you have a baby in your arms. This guide takes you through the key things to set up in your first week — after that, the app is mostly just quick taps.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Step 1: Creating Your Family",
|
||||
paragraphs: [
|
||||
"Sign in with Google — that's it, no password to create or remember. On your first login you'll be prompted to set up your family: give it a name (most families use their last name or a nickname), and add your baby's name, date of birth, and a photo if you like.",
|
||||
"Tia supports multiple children, so if you have more than one baby, you can add them all and switch between their records instantly.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "🔒",
|
||||
text: "Your family data is stored privately. We use row-level security — your records are invisible to other families and to us. We don't sell your data and we don't run ads.",
|
||||
},
|
||||
},
|
||||
{
|
||||
heading: "Step 2: Logging Your First Entry",
|
||||
paragraphs: [
|
||||
"The Quick Log button is the first thing you see on the home screen. Tap it, pick the activity type (Feed · Sleep · Diaper · Medicine · Note), fill in the details, and tap Save. That's a log.",
|
||||
"For feeds, you can record breast milk (left, right, or both), formula (amount in ml), or solids. For sleep, tap Start when your baby goes down and End when they wake — or log it after the fact. Tia calculates the duration automatically.",
|
||||
],
|
||||
list: [
|
||||
{ label: "Feed", text: "Breastfeed (side + duration) or formula (amount ml) or solids" },
|
||||
{ label: "Sleep", text: "Live timer or manual start/end time" },
|
||||
{ label: "Diaper", text: "Wet, dirty, or both — with optional notes" },
|
||||
{ label: "Medicine", text: "Name, dose, time — and Tia tracks the next due window" },
|
||||
{ label: "Note", text: "Free-form text for anything that doesn't fit a category" },
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Step 3: Setting Up Vaccination Alerts",
|
||||
paragraphs: [
|
||||
"Go to Medical → Vaccinations. Tia pre-loads the complete IAP vaccination schedule based on your baby's date of birth. You'll see every upcoming vaccine with its due date and a description.",
|
||||
"To get Telegram reminders before each due date, tap 'Set up Telegram alerts' and follow the two-step flow: start a chat with our Telegram bot and send the code it gives you. That's it — you'll get a message before each upcoming vaccine so you can book the appointment in time.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "📲",
|
||||
text: "Telegram alerts are completely optional. You can also just check the Vaccinations page manually — it shows upcoming, due, and completed vaccines in a clear timeline.",
|
||||
},
|
||||
},
|
||||
{
|
||||
heading: "Step 4: Inviting Your Partner or a Caregiver",
|
||||
paragraphs: [
|
||||
"Go to Settings → Family Members → Invite. Enter the email address of the person you're inviting and choose their role:",
|
||||
],
|
||||
list: [
|
||||
{ label: "Admin", text: "Full access — can add/edit/delete all records and manage family settings" },
|
||||
{ label: "Caregiver", text: "Can log and view all records, but can't change family settings" },
|
||||
{ label: "Viewer", text: "Read-only — great for grandparents who want to follow along" },
|
||||
],
|
||||
},
|
||||
{
|
||||
paragraphs: [
|
||||
"They'll receive an email with a link. Once they sign in, they're added to your family and can see all your shared records instantly — on their own phone, their own login, no passwords to share.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Step 5: Ask Tia — Your Parenting Companion",
|
||||
paragraphs: [
|
||||
"The AI chat (tap the ✨ icon in the bottom nav) is trained specifically for parenting questions — sleep schedules, feeding concerns, developmental milestones, age-appropriate activities. It knows your baby's age and recent logs, so you can ask things like 'Is she sleeping enough for her age?' and get a contextual answer.",
|
||||
"What Ask Tia won't do: diagnose symptoms, recommend medications, or tell you whether a fever is serious. For any health concern, it will always direct you to your paediatrician. We designed it this way deliberately — an app that plays doctor is dangerous. We'd rather be honest about our limits.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Step 6: Building Memories",
|
||||
paragraphs: [
|
||||
"The Memories section is where Tia becomes something more than a tracker. Upload photos and videos, write captions, and they're organised automatically by your baby's age. A 3-month photo, a first-smile video, a first-steps moment — all in one place, privately stored, and yours to export whenever you want.",
|
||||
"This is the archive your child will one day be able to look back through. Take two minutes every few days to add something. You'll be glad you did.",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "telegram-vaccination-alerts-feature",
|
||||
title: "Introducing Telegram Vaccination Alerts: Never Miss a Jab",
|
||||
excerpt:
|
||||
"We've connected Tia's IAP vaccination schedule to Telegram so you get a reminder before every due date — even when you haven't opened the app in weeks.",
|
||||
date: "2026-04-15",
|
||||
author: "Tia Team",
|
||||
category: "Feature",
|
||||
categoryColor: "bg-sky-100 text-sky-700",
|
||||
readTime: "4 min read",
|
||||
emoji: "💉",
|
||||
sections: [
|
||||
{
|
||||
paragraphs: [
|
||||
"Missed vaccinations are one of the most common and preventable gaps in infant health care. It's not neglect — it's the chaos of early parenthood. Between feeds, sleep deprivation, and everything else, a vaccine due date in three weeks feels like a lifetime away. Until suddenly it's overdue.",
|
||||
"We built Telegram alerts to solve this problem simply and reliably.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "Why Telegram?",
|
||||
paragraphs: [
|
||||
"We looked at several notification options: email, push notifications, SMS. Each had real problems for this use case.",
|
||||
"Email often gets buried. Push notifications only work if you have the app installed and haven't muted it. SMS costs money and has formatting limitations.",
|
||||
"Telegram messages arrive reliably, render beautifully on every phone, and — critically — don't require an active app install to receive. If you've set up the connection, you'll get the reminder even if you've uninstalled Tia, switched phones, or just haven't opened the app in a month. That reliability is the whole point.",
|
||||
],
|
||||
callout: {
|
||||
emoji: "🔒",
|
||||
text: "We only use your Telegram connection to send vaccination reminders. No marketing, no promotions, no third-party sharing. You can disconnect at any time from Settings.",
|
||||
},
|
||||
},
|
||||
{
|
||||
heading: "What the IAP Schedule Covers",
|
||||
paragraphs: [
|
||||
"The Indian Academy of Pediatrics (IAP) releases an updated vaccination schedule each year. Tia's current schedule covers all vaccines from birth through 12 months, with plans to extend to 5 years.",
|
||||
],
|
||||
list: [
|
||||
{ label: "Birth", text: "BCG, Hepatitis B (1st dose), OPV-0" },
|
||||
{ label: "6 weeks", text: "DTwP/DTaP, IPV, Hepatitis B (2nd), Hib, Rotavirus, PCV (1st)" },
|
||||
{ label: "10 weeks", text: "DTwP/DTaP, IPV, Hib, Rotavirus, PCV (2nd)" },
|
||||
{ label: "14 weeks", text: "DTwP/DTaP, IPV, Hib, Rotavirus, PCV (3rd)" },
|
||||
{ label: "6 months", text: "Hepatitis B (3rd), OPV" },
|
||||
{ label: "9 months", text: "MMR (1st), OPV" },
|
||||
{ label: "12 months", text: "Hepatitis A (1st), PCV booster, Varicella (1st)" },
|
||||
],
|
||||
},
|
||||
{
|
||||
paragraphs: [
|
||||
"Tia calculates exact due dates based on your baby's date of birth and sends you a Telegram reminder 7 days before each vaccine is due. You can mark vaccines as given directly from the app, and the record is permanently saved to your family's history.",
|
||||
],
|
||||
},
|
||||
{
|
||||
heading: "How to Set It Up",
|
||||
paragraphs: [
|
||||
"It takes about two minutes:",
|
||||
],
|
||||
list: [
|
||||
{ label: "1", text: "Open Tia → Medical → Vaccinations" },
|
||||
{ label: "2", text: "Tap 'Set up Telegram alerts'" },
|
||||
{ label: "3", text: "Open Telegram and start a chat with @TiaBabyBot" },
|
||||
{ label: "4", text: "Send the 6-digit code shown in the app" },
|
||||
{ label: "5", text: "Done — you'll get a confirmation message immediately" },
|
||||
],
|
||||
callout: {
|
||||
emoji: "✅",
|
||||
text: "Already missed a vaccine? No problem. Tia shows overdue vaccines clearly and lets you log catch-up doses with the actual date administered.",
|
||||
},
|
||||
},
|
||||
{
|
||||
heading: "What's Coming Next",
|
||||
paragraphs: [
|
||||
"Telegram alerts are just the beginning. We're working on:",
|
||||
],
|
||||
list: [
|
||||
{ text: "Alerts for medicines — automatic reminders when the next dose window opens" },
|
||||
{ text: "Growth check reminders — a nudge every 4 weeks to log a new measurement" },
|
||||
{ text: "Monthly milestone prompts — age-appropriate development questions to log" },
|
||||
{ text: "WhatsApp as an alternative notification channel" },
|
||||
],
|
||||
},
|
||||
{
|
||||
paragraphs: [
|
||||
"Early access families shape what we build next. If there's a reminder you'd like that isn't listed here, use the feedback button in Settings — we read every message.",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export function getPost(slug: string): BlogPost | undefined {
|
||||
return POSTS.find((p) => p.slug === slug);
|
||||
}
|
||||
|
||||
export function formatDate(dateStr: string): string {
|
||||
return new Date(dateStr).toLocaleDateString("en-IN", {
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "numeric",
|
||||
});
|
||||
}
|
||||
|
|
@ -86,10 +86,10 @@ export default function MarketingLayout({
|
|||
<div className="flex flex-col gap-2">
|
||||
<p className="font-semibold text-gray-700 mb-1">Contact</p>
|
||||
<a
|
||||
href="tel:+919999999999"
|
||||
href="tel:+919554881799"
|
||||
className="text-gray-500 hover:text-rose-600 transition-colors duration-150"
|
||||
>
|
||||
+91 XXXXX XXXXX
|
||||
+91 95548 81799
|
||||
</a>
|
||||
<a
|
||||
href="mailto:hello@tia.baby"
|
||||
|
|
@ -107,7 +107,7 @@ export default function MarketingLayout({
|
|||
<div className="bg-gray-100 border-t border-gray-200">
|
||||
<div className="max-w-5xl mx-auto px-5 py-4 flex flex-col sm:flex-row items-center justify-between gap-2 text-xs text-gray-500">
|
||||
<p>© {new Date().getFullYear()} Tia. · We don't sell your data — we preserve it.</p>
|
||||
<p>Built with ❤️ in India.</p>
|
||||
<p>Built with <span className="inline-block transition-transform duration-300 hover:scale-150 cursor-default select-none">❤️</span> in India.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue