// Static data for the SolidAtoms prototype. const SERVICES = [ { id: "web-build", code: "S.01", title: "Web builds, from scratch", summary: "Custom-built marketing sites, web apps, and platforms. Engineered for speed, designed for clarity.", bullets: ["Next.js / Astro / Remix", "Headless CMS integration", "Edge-deployed, Lighthouse 100"], deliverables: ["Discovery + IA", "Design system", "Production build", "Handoff + training"], starts: "$6,000", timeline: "4–8 weeks", }, { id: "web-improve", code: "S.02", title: "Rebuild & rescue", summary: "Have an existing site that's slow, ugly, or held together with duct tape? We rebuild without the rebuild trauma.", bullets: ["Performance audit", "Incremental rewrites", "Stack migrations"], deliverables: ["Audit report", "Migration plan", "Rebuild", "Monitoring"], starts: "$3,500", timeline: "2–6 weeks", }, { id: "seo", code: "S.03", title: "Technical SEO", summary: "Real SEO. Schema, crawl architecture, Core Web Vitals — the stuff that actually moves rankings.", bullets: ["Crawl + index strategy", "Schema markup", "Page speed remediation"], deliverables: ["Tech audit", "Fix list", "Implementation", "Monthly report"], starts: "$1,800", timeline: "Ongoing", }, { id: "ai", code: "S.04", title: "AI integration", summary: "Embed LLMs into your product without the demo-ware feel. Retrieval, agents, evals, the works.", bullets: ["RAG + vector search", "Agents & tool use", "Eval pipelines"], deliverables: ["Architecture", "Prototype", "Production rollout", "Eval dashboard"], starts: "$8,000", timeline: "3–10 weeks", }, { id: "chatbot", code: "S.05", title: "Chatbots that don't suck", summary: "Support bots, sales bots, lead-qualifying bots. Trained on your docs, grounded in your data.", bullets: ["Knowledge base ingestion", "Multi-channel deploy", "Human handoff"], deliverables: ["Bot persona", "Training set", "Integrations", "Dashboard"], starts: "$2,400", timeline: "2–4 weeks", }, { id: "ecom", code: "S.06", title: "Commerce & payments", summary: "Stripe, Shopify Hydrogen, or custom. Subscriptions, one-offs, multi-currency.", bullets: ["Stripe / Paddle / Lemon", "Subscription logic", "Checkout optimisation"], deliverables: ["Setup", "Custom checkout", "Webhooks + ops", "Receipts"], starts: "$2,000", timeline: "1–4 weeks", }, ]; const PORTFOLIO = [ { id: "ledgerline", name: "Ledgerline", tag: "Fintech dashboard", year: "2026", summary: "End-to-end rebuild of a B2B accounting platform serving 12k SMBs.", role: ["Product design", "Full-stack engineering", "Infra"], stack: ["Next.js", "tRPC", "Postgres", "Stripe"], metric: ["Time-to-first-meaningful-paint", "1.8s → 480ms"], color: "#7c9bff", accent: "#d4ff3a", featured: true, }, { id: "northbound", name: "Northbound", tag: "Travel platform", year: "2025", summary: "Marketplace + booking flow for boutique adventure operators.", role: ["Web build", "Search infrastructure"], stack: ["Astro", "Algolia", "Sanity"], metric: ["Booking conversion", "+38%"], color: "#ff8a3a", accent: "#d4ff3a", }, { id: "claro", name: "Claro AI", tag: "Support automation", year: "2025", summary: "RAG-powered support agent ingesting 14k help articles across 7 languages.", role: ["AI integration", "Eval pipeline"], stack: ["OpenAI", "Pinecone", "LangChain"], metric: ["Tickets deflected", "62%"], color: "#a78bfa", accent: "#d4ff3a", }, { id: "tilde", name: "Tilde Studio", tag: "Agency site", year: "2025", summary: "Editorial portfolio site for a design studio in Lisbon.", role: ["Web build", "CMS"], stack: ["Next.js", "Payload"], metric: ["Lighthouse", "100 / 100 / 100"], color: "#7ee787", accent: "#d4ff3a", }, { id: "atlasdocs", name: "Atlas Docs", tag: "Developer docs", year: "2024", summary: "Docs platform for an open-source database — search, versioning, MDX.", role: ["Web build", "DX tooling"], stack: ["Next.js", "Algolia DocSearch"], metric: ["Docs satisfaction", "94%"], color: "#f472b6", accent: "#d4ff3a", }, { id: "verge", name: "Verge Commerce", tag: "E-commerce", year: "2024", summary: "Headless commerce migration off Shopify Plus for a 9-figure DTC brand.", role: ["Migration", "Custom checkout"], stack: ["Hydrogen", "Stripe", "Sanity"], metric: ["AOV", "+22%"], color: "#fde047", accent: "#d4ff3a", }, { id: "okra", name: "Okra Health", tag: "Healthcare SaaS", year: "2024", summary: "HIPAA-compliant patient portal with realtime clinician collaboration.", role: ["Full-stack", "Realtime infra"], stack: ["Remix", "Supabase", "Liveblocks"], metric: ["Clinician hours saved / wk", "11"], color: "#34d399", accent: "#d4ff3a", }, { id: "fold", name: "Fold Finance", tag: "Crypto wallet", year: "2023", summary: "Self-custodial wallet for a stablecoin-native neobank.", role: ["Web app", "Security review"], stack: ["Next.js", "Viem", "WalletConnect"], metric: ["Onboarding completion", "+44%"], color: "#22d3ee", accent: "#d4ff3a", }, ]; const TEAM = [ { id: "you", name: "Hassan A.", role: "Founder / Principal engineer", location: "Karachi → Remote", bio: "Started SolidAtoms in 2022 after 7 years building product at agencies and a YC-backed SaaS.", skills: ["Next.js", "TypeScript", "AI", "Systems"], projects: 41, years: 7, avatar: "HA", role_color: "#d4ff3a", }, { id: "amir", name: "Amir Q.", role: "Lead full-stack engineer", location: "Lahore", bio: "Database whisperer. Has opinions about indexes.", skills: ["Postgres", "Node", "Go", "Infra"], projects: 22, years: 5, avatar: "AQ", role_color: "#7c9bff", }, { id: "sana", name: "Sana R.", role: "Product designer", location: "Islamabad", bio: "Ex-fintech, ex-newsroom. Translates messy briefs into shipped product.", skills: ["UX", "Figma", "Design systems"], projects: 18, years: 6, avatar: "SR", role_color: "#ff8a3a", }, { id: "bilal", name: "Bilal K.", role: "AI engineer", location: "Berlin", bio: "Builds retrieval and agent systems. Eval-pilled.", skills: ["Python", "RAG", "LangChain", "Evals"], projects: 9, years: 4, avatar: "BK", role_color: "#a78bfa", }, { id: "noor", name: "Noor M.", role: "Frontend engineer", location: "Karachi", bio: "Pixel-precise. Lives inside CSS grid.", skills: ["React", "CSS", "Motion"], projects: 14, years: 3, avatar: "NM", role_color: "#7ee787", }, ]; const TOOLS = [ { id: "t01", name: "Lighthouse Diff", tag: "Performance", price: "Free", week: "W18", desc: "Compare Lighthouse runs across deploys in one URL.", new: true }, { id: "t02", name: "Schema Composer", tag: "SEO", price: "Free", week: "W17", desc: "Build JSON-LD by clicking. No more docs spelunking.", new: false }, { id: "t03", name: "Prompt Diff", tag: "AI", price: "$9/mo", week: "W17", desc: "Side-by-side eval of two prompts across a dataset.", new: false }, { id: "t04", name: "OG Card Studio", tag: "Marketing", price: "Free", week: "W16", desc: "Drag-and-drop social card generator. Edge-rendered.", new: false }, { id: "t05", name: "Tailwind to Tokens", tag: "Design", price: "Free", week: "W16", desc: "Convert tailwind.config.js into design tokens.", new: false }, { id: "t06", name: "Stripe Webhook Tester", tag: "Payments", price: "$5/mo", week: "W15", desc: "Replay any webhook locally with edit-and-resend.", new: false }, ]; const POSTS = [ { id: "p01", title: "We rebuilt a 14-year-old PHP monolith in 9 weeks. Here's the playbook.", excerpt: "Six rules for incremental rewrites that don't drag on for 18 months and don't ship regressions.", category: "Engineering", read: "12 min", date: "May 09, 2026", author: "Hassan A.", cover: "#7c9bff", featured: true, }, { id: "p02", title: "RAG is dead. Long live retrieval-augmented agents.", excerpt: "Why we stopped shipping vanilla RAG and what replaced it across our last four AI builds.", category: "AI", read: "9 min", date: "May 02, 2026", author: "Bilal K.", cover: "#a78bfa", }, { id: "p03", title: "Stripe checkout, custom-built — when it's worth it", excerpt: "A decision framework for choosing between Stripe Checkout, Elements, and going fully custom.", category: "Payments", read: "7 min", date: "Apr 24, 2026", author: "Amir Q.", cover: "#fde047", }, { id: "p04", title: "Designing for the LLM-native UI era", excerpt: "Notes from shipping three agentic interfaces and the patterns that survived contact with users.", category: "Design", read: "8 min", date: "Apr 17, 2026", author: "Sana R.", cover: "#ff8a3a", }, ]; // Project plan modules and sprints const MODULES = [ { id: "M01", name: "Foundation", status: "done", scope: ["Brand system", "Tokens & components", "Hosting + CI/CD", "Analytics + monitoring"], priority: "P0" }, { id: "M02", name: "Marketing site", status: "done", scope: ["Homepage", "Services", "Process", "Contact"], priority: "P0" }, { id: "M03", name: "Portfolio", status: "done", scope: ["Index page", "Case-study template", "Filtering", "Related projects"], priority: "P0" }, { id: "M04", name: "Team profiles", status: "done", scope: ["Developer profile schema", "Linked portfolios", "Invite flow", "Public profile pages"], priority: "P1" }, { id: "M05", name: "Blog", status: "done", scope: ["MDX editor in CMS", "Categories + tags", "Search", "Newsletter integration"], priority: "P1" }, { id: "M06", name: "Tools directory", status: "done", scope: ["Tool schema", "Weekly drop pipeline", "Free / paid gating", "Usage analytics"], priority: "P1" }, { id: "M07", name: "CMS (admin)", status: "done", scope: ["Auth & roles", "Content collections", "Media library", "Workflow & drafts"], priority: "P0" }, { id: "M08", name: "Payments", status: "done", scope: ["Stripe Connect", "Quotes & invoices", "Subscriptions", "Tax handling"], priority: "P2" }, { id: "M09", name: "Client portal", status: "done", scope: ["Client auth", "Project status", "File sharing", "Messaging"], priority: "P3" }, { id: "M10", name: "Auth & identity", status: "done", scope: ["Login / signup", "Magic-link", "MFA + backup codes", "SSO providers"], priority: "P0" }, { id: "M11", name: "Marketing pages", status: "done", scope: ["/services route", "/process route", "/work index", "Sitemap + SEO"], priority: "P1" }, { id: "M12", name: "Analytics studio", status: "in-progress", scope: ["Traffic + conversion", "Cohort reports", "Realtime", "Custom events"], priority: "P2" }, { id: "M13", name: "Email + Templates", status: "done", scope: ["Transactional", "Newsletter", "Drip campaigns", "Render previews"], priority: "P0" }, { id: "M14", name: "Onboarding", status: "done", scope: ["First-run flow", "Workspace setup", "Invite teammates", "Sample data"], priority: "P1" }, ]; const SPRINTS = [ { id: "SP01", weeks: "W18–W19", name: "Foundation", status: "done", points: 24, items: ["Repo + CI/CD", "Design tokens", "Component library kickoff"] }, { id: "SP02", weeks: "W20–W21", name: "Marketing site", status: "done", points: 32, items: ["Homepage", "Services", "Contact form", "SEO baseline"] }, { id: "SP03", weeks: "W22–W23", name: "Portfolio + Case studies", status: "done", points: 28, items: ["Index", "Case-study template", "MDX integration"] }, { id: "SP04", weeks: "W24–W25", name: "CMS v1", status: "done", points: 34, items: ["Admin auth", "Content collections", "Media uploads"] }, { id: "SP05", weeks: "W26–W27", name: "Team & profiles", status: "done", points: 22, items: ["Profile schema", "Invite flow", "Public pages"] }, { id: "SP06", weeks: "W28–W29", name: "Blog", status: "done", points: 26, items: ["MDX writing", "Categories", "Newsletter"] }, { id: "SP07", weeks: "W30–W31", name: "Tools directory", status: "done", points: 24, items: ["Tool schema", "Weekly cadence", "Paywall"] }, { id: "SP08", weeks: "W32–W33", name: "Payments", status: "done", points: 30, items: ["Stripe Connect", "Invoice flow", "Subs"] }, { id: "SP09", weeks: "W34–W35", name: "Client portal", status: "done", points: 28, items: ["Project status", "File sharing", "Messaging"] }, { id: "SP10", weeks: "W36–W37", name: "Auth & identity", status: "done", points: 22, items: ["Login + signup", "Magic-link", "MFA + backup codes"] }, { id: "SP11", weeks: "W38–W39", name: "Marketing standalones", status: "done", points: 20, items: ["/services page", "/process page", "/work index"] }, { id: "SP13", weeks: "W40–W41", name: "Email + Templates", status: "done", points: 24, items: ["Transactional library", "Composer + preview", "Drip campaigns", "Deliverability"] }, { id: "SP14", weeks: "W42–W43", name: "Onboarding", status: "done", points: 22, items: ["First-run wizard", "Workspace setup", "Invite teammates", "Sample data"] }, { id: "SP12", weeks: "W44–W45", name: "Analytics studio", status: "active", points: 26, items: ["Event pipeline", "Dashboards", "Cohort reports", "Custom events + alerts"] }, ]; const PRINCIPLES = [ { n: "01", t: "Modules over monoliths", d: "Every feature ships as a self-contained module with its own data, UI, and tests. No file over 300 lines." }, { n: "02", t: "Document before code", d: "Each module gets a spec doc before a single line is written. The doc is the source of truth." }, { n: "03", t: "One job per component", d: "Components do one thing. If it needs an 'or' to describe it, split it." }, { n: "04", t: "Reuse > rewrite", d: "Before building anything new, search the system. If it exists, extend it. If it doesn't, build it once." }, { n: "05", t: "Track every sprint", d: "Two-week sprints. Velocity tracked. Retros logged. No invisible work." }, ]; Object.assign(window, { SERVICES, PORTFOLIO, TEAM, TOOLS, POSTS, MODULES, SPRINTS, PRINCIPLES });