/* ============================================================
   AURA · Registro de projetos
   ------------------------------------------------------------
   Cada projeto contém:
   - meta (cliente, ano, tag, categoria) com versão PT/EN
   - cover: imagem opcional; se ausente, usa motif geométrico
   - paleta (bg/fg/accent) usada no card e no hero
   - case study completo (overview, challenge, solution, stats,
     services, stack, sections, results e quote opcional)
   ============================================================ */

const AURA_PROJECTS = [
  /* ===== 01 · DOKLY ===== */
  {
    id: 'dokly',
    client: 'Dokly',
    year: '2025',
    cover: 'assets/projects/dokly-cover-tight.png',
    // paleta — púrpura/ciano do produto
    palette: { bg: '#1a1340', fg: '#c4b5fd', accent: '#7c3aed' },
    // fundo da moldura ao redor da imagem (matches o gradiente azul da capa)
    coverBg: 'linear-gradient(180deg, #94d8ec 0%, #6c9fc7 55%, #5b8fc0 100%)',
    motif: 'grid',
    // links
    url: 'https://dokly.com.br',
    demoUrl: 'https://dokly.com.br/docs/d7bcf341-c1db-4d3e-b2b0-b723153f383a',
    urlLabel: 'dokly.com.br',
    demoLabel: { pt: 'Ver doc de exemplo', en: 'View example doc' },
    tag: { pt: 'SaaS · DevTools', en: 'SaaS · DevTools' },
    cat: { pt: 'Sistemas Web · BI & Analytics', en: 'Web Systems · BI & Analytics' },
    title: {
      pt: 'Documentação de produtos e APIs',
      en: 'Product & API documentation',
    },
    overview: {
      pt: 'Plataforma SaaS multi-tenant que centraliza documentação de produto, referência de API (OpenAPI), changelog, roadmap e feedback dos usuários — substituindo o quebra-cabeça de Notion, Mintlify, Canny e Slack por um único produto white-label.',
      en: 'Multi-tenant SaaS platform that brings product documentation, API references (OpenAPI), changelog, roadmap and user feedback into a single white-label product — replacing the typical Notion + Mintlify + Canny + Slack puzzle.',
    },
    challenge: {
      pt: 'Empresas de tecnologia têm documentação fragmentada: docs em uma ferramenta, changelog em outra, roadmap em uma terceira e feedback espalhado pelo Slack. Cada cliente pede um visual próprio. Cada API tem dezenas de endpoints documentados na mão. O resultado: ninguém atualiza nada, ninguém encontra nada.',
      en: 'Tech companies live with fragmented documentation: docs in one tool, changelog in another, roadmap in a third one and feedback scattered across Slack. Each client wants its own visual identity. Each API has dozens of endpoints written by hand. Net result: nobody updates anything, nobody finds anything.',
    },
    solution: {
      pt: 'Construímos um SaaS multi-tenant com identidade visual personalizável por cliente, editor moderno baseado em Tiptap, importação automática de specs OpenAPI 3.x, IA integrada para tradução e melhoria de conteúdo, e billing white-label via Stripe. Tudo num produto só, com RBAC, RLS e segurança de nível enterprise.',
      en: 'We built a multi-tenant SaaS with per-client branding, a modern Tiptap-based editor, automatic OpenAPI 3.x import, AI for translation and content improvement, and white-label billing through Stripe. One product, with RBAC, RLS and enterprise-grade security.',
    },
    stats: [
      { v: '8', l: { pt: 'módulos integrados', en: 'integrated modules' } },
      { v: '3', l: { pt: 'idiomas com tradução IA', en: 'languages, AI translated' } },
      { v: 'OpenAPI 3.x', l: { pt: 'import automático', en: 'auto import' } },
      { v: '100%', l: { pt: 'white-label', en: 'white-label' } },
    ],
    services: {
      pt: ['Sistemas Web', 'UI/UX Design', 'BI & Analytics'],
      en: ['Web Systems', 'UI/UX Design', 'BI & Analytics'],
    },
    stack: ['React', 'Tiptap', 'Supabase', 'Stripe', 'OpenAI'],
    sections: [
      {
        t: { pt: 'Editor & Referência de API', en: 'Editor & API Reference' },
        image: 'assets/projects/dokly-endpoints.png',
        bg: '#f0f0f1',
        d: {
          pt: 'Editor moderno baseado em Tiptap com slash menu, blocos customizados (Webhook, Alert, Toggle), markdown e syntax highlighting. Para APIs: importação automática de specs OpenAPI 3.x (URL, arquivo ou PDF via IA), playground interativo de endpoints e exemplos de código em múltiplas linguagens.',
          en: 'A modern Tiptap-based editor with slash menu, custom blocks (Webhook, Alert, Toggle), markdown and syntax highlighting. For APIs: automatic OpenAPI 3.x spec import (URL, file or PDF via AI), an interactive endpoint playground and code snippets in multiple languages.',
        },
      },
      {
        t: { pt: 'Multi-tenant, Versões & Billing', en: 'Multi-tenant, Versions & Billing' },
        image: 'assets/projects/dokly-versions.png',
        bg: '#2f2f33',
        d: {
          pt: 'Workspaces isolados com papéis (Owner, Editor, Viewer) e permissões granulares por projeto. Snapshots versionados de cada doc, com diff estável. Integração completa com Stripe — assinaturas, webhooks, customer portal — com grace period de 3 dias via pg_cron e limites enforced no banco via triggers BEFORE INSERT.',
          en: 'Isolated workspaces with roles (Owner, Editor, Viewer) and per-project granular permissions. Versioned snapshots of every doc with stable diffs. Full Stripe integration — subscriptions, webhooks, customer portal — with a 3-day grace period via pg_cron and limits enforced at the database with BEFORE INSERT triggers.',
        },
      },
      {
        t: { pt: 'IA & Doc pública white-label', en: 'AI & White-label public docs' },
        image: 'assets/projects/dokly-public.png',
        bg: '#ffffff',
        d: {
          pt: 'Chat "Ask AI" com streaming SSE para visitantes, tradução automática de páginas (EN/PT-BR/ES) preservando markdown, geração de exemplos de erro e melhoria de conteúdo on-demand. Domínios personalizados (CNAME), favicon dinâmico e widget embedável via iframe — cada cliente entrega a sua doc, com a sua cara.',
          en: '"Ask AI" chat with SSE streaming for visitors, automatic page translation (EN/PT-BR/ES) preserving markdown, error-payload generation and on-demand content improvement. Custom domains (CNAME), dynamic favicon and an embeddable iframe widget — each client ships its own docs, with its own face.',
        },
      },
    ],
    results: {
      pt: 'Plataforma em produção substituindo o stack típico de Notion + Mintlify + Canny + Productlane por um único produto. Multi-tenant com RLS em todas as tabelas, sanitização de erros nas Edge Functions e arquitetura preparada para escalar.',
      en: 'A platform running in production replacing the typical Notion + Mintlify + Canny + Productlane stack with a single product. Multi-tenant with RLS across every table, sanitized errors in Edge Functions and an architecture ready to scale.',
    },
    quote: null,
  },
  /* ===== 02 · READ SPHERE ===== */
  {
    id: 'readsphere',
    client: 'Read Sphere',
    year: '2025',
    cover: 'assets/projects/readsphere-cover.png',
    coverStyle: 'marketing', // imagem é arte de marca, não UI — full-bleed
    palette: { bg: '#0a1330', fg: '#cbd5ff', accent: '#4263ac' },
    motif: 'orbit',
    // links
    url: 'https://app.readsphere.com.br',
    urlLabel: 'app.readsphere.com.br',
    tag: { pt: 'B2C · Literatura', en: 'B2C · Literature' },
    cat: { pt: 'Sistemas Web · Apps Mobile · UI/UX Design', en: 'Web Systems · Mobile Apps · UI/UX Design' },
    title: {
      pt: 'Plataforma social de leitura e publicação',
      en: 'Social reading and publishing platform',
    },
    overview: {
      pt: 'SaaS B2C completo para o universo literário brasileiro. Une tracking de leitura (com timer real, metas e estatísticas), catálogo comunitário, plataforma de publicação de obras originais (estilo Wattpad + Substack) e uma economia interna de Lumens que permite autores monetizarem capítulos e leitores ganharem recompensas. App Flutter e painel admin robusto.',
      en: 'A complete B2C SaaS for the Brazilian literary scene. Combines reading tracking (real-time timer, goals and statistics), a community catalog, an original-fiction publishing platform (Wattpad + Substack style) and an internal Lumens economy where authors monetize chapters and readers earn rewards. Flutter app and a robust admin panel.',
    },
    challenge: {
      pt: 'O mercado literário brasileiro é fragmentado: leitores usam um app para tracking, outro para descobrir livros, outro para clubes; autores independentes não têm onde publicar capítulos pagos em português com economia transparente. Cada produto resolve um pedaço, mas ninguém une tudo numa só esfera.',
      en: 'The Brazilian literary market is fragmented: readers use one app for tracking, another for discovery, another for clubs; independent authors have nowhere to publish paid chapters in Portuguese with a transparent economy. Every product solves a slice — nobody puts everything into a single sphere.',
    },
    solution: {
      pt: 'Construímos o Read Sphere — uma esfera onde leitor, autor e comunidade dividem o mesmo espaço. Tracking com timer real e Reading Wrapped anual, catálogo público alimentado por APIs externas, editor estilo Notion para autores publicarem capítulos pagos em Lumens (90% do valor pro autor), clubes de leitura, IA para recomendações e até um MCP Server pra queries via IA.',
      en: 'We built Read Sphere — a single sphere where reader, author and community share the same space. Real-time reading timer plus yearly Reading Wrapped, public catalog fed by external APIs, a Notion-style editor for authors to publish paid chapters in Lumens (90% of revenue goes to the author), book clubs, AI recommendations and even an MCP Server for AI-driven admin queries.',
    },
    stats: [
      { v: '4', l: { pt: 'apps em um produto', en: 'apps in one product' } },
      { v: '90%', l: { pt: 'do Lumen vai pro autor', en: 'of Lumens go to the author' } },
      { v: 'Sistema Web', l: { pt: '+ App Flutter instalável', en: '+ installable Flutter app' } },
      { v: 'MCP', l: { pt: 'server para queries via IA', en: 'server for AI queries' } },
    ],
    services: {
      pt: ['App Mobile', 'Sistema Web', 'UI/UX Design'],
      en: ['Mobile App', 'Web System', 'UI/UX Design'],
    },
    stack: ['Flutter', 'Lovable', 'Supabase', 'Stripe', 'ElevenLabs', 'MCP'],
    sections: [
      {
        t: { pt: 'Para Leitores', en: 'For Readers' },
        image: 'assets/projects/readsphere-home.png',
        bg: '#f2f2f3',
        d: {
          pt: 'Biblioteca pessoal com estantes ("Lendo", "Lidos", "Quero Ler") e tags transversais, timer de leitura em tempo real com auto-resume, diário visual por capítulo, modo offline (IndexedDB) para PDFs/EPUBs e recomendações com IA que justificam cada sugestão.',
          en: 'A personal library with shelves ("Reading", "Read", "Want to Read") and cross-cutting tags, a real-time reading timer with auto-resume, a visual reading diary per chapter, offline mode (IndexedDB) for PDFs/EPUBs and AI recommendations that explain every pick.',
        },
      },
      {
        t: { pt: 'Stats, metas & gamificação', en: 'Stats, goals & gamification' },
        image: 'assets/projects/readsphere-stats.png',
        bg: '#f2f2f3',
        d: {
          pt: 'Heatmap de 16 semanas, Reading Wrapped anual, velocidade de leitura, total de páginas registradas e meta anual. Desafios, badges fixáveis no perfil, check-in diário (10 Lumens) e ads recompensados — tudo desenhado pra criar hábito sem virar grind.',
          en: '16-week heatmap, yearly Reading Wrapped, reading speed, total pages logged and an annual goal. Challenges, profile-pinnable badges, daily check-in (10 Lumens) and rewarded ads — all designed to build a habit without turning into a grind.',
        },
      },
      {
        t: { pt: 'Publicação & Economia Lumens', en: 'Publishing & Lumens Economy' },
        image: 'assets/projects/readsphere-reader.png',
        bg: '#ffffff',
        d: {
          pt: 'Editor estilo Notion (BlockNote) para autores publicarem obras originais. Capítulos pagos em Lumens, audiobooks via ElevenLabs (TTS streaming), wiki de personagens e analytics focado em leitores únicos. Moeda interna integrada com Stripe.',
          en: 'A Notion-style editor (BlockNote) for authors to publish original work. Paid chapters in Lumens, audiobooks via ElevenLabs (TTS streaming), character wiki and analytics focused on unique readers. Internal currency integrated with Stripe.',
        },
      },
      {
        t: { pt: 'Comunidade & Painel Admin', en: 'Community & Admin Panel' },
        image: 'assets/projects/readsphere-badges.png',
        bg: '#f2f2f3',
        d: {
          pt: 'Catálogo público com stats sociais, clubes de leitura (discussão, votação, cronograma), feed social com hashtags clicáveis e o selo "Curtido pelo Autor". No admin: 6 módulos para moderação, push broadcast segmentado, gestão de banners e ads, documentação Swagger e um MCP Server para queries via IA.',
          en: 'Public catalog with social stats, reading clubs (discussion, voting, schedule), a social feed with clickable hashtags and the "Liked by the Author" stamp. In the admin: 6 modules for moderation, segmented push broadcast, banner and ad management, Swagger docs and an MCP Server for AI-driven queries.',
        },
      },
    ],
    results: {
      pt: 'Um único produto que substitui Skoob + Wattpad + Substack + Goodreads no mercado brasileiro, com identidade visual própria, app mobile nativo e economia interna funcional.',
      en: 'A single product replacing Skoob + Wattpad + Substack + Goodreads in the Brazilian market, with its own visual identity, a native mobile app and a working internal economy.',
    },
    quote: null,
  },
];

window.AURA_PROJECTS = AURA_PROJECTS;

/* ============================================================
   Helpers — leem campos em um idioma (PT/EN) com fallback PT
   ============================================================ */
window.projectLocalized = function (proj, lang) {
  const pick = (v) => (v && typeof v === 'object' && 'pt' in v ? v[lang] || v.pt : v);
  return {
    id: proj.id,
    client: proj.client,
    year: proj.year,
    cover: proj.cover,
    coverBg: proj.coverBg,
    coverStyle: proj.coverStyle || 'browser',
    palette: proj.palette,
    motif: proj.motif,
    url: proj.url,
    demoUrl: proj.demoUrl,
    urlLabel: proj.urlLabel,
    demoLabel: proj.demoLabel ? pick(proj.demoLabel) : null,
    quote: proj.quote ? pick(proj.quote) : null,
    quoteAuthor: proj.quoteAuthor ? pick(proj.quoteAuthor) : null,
    tag: pick(proj.tag),
    cat: pick(proj.cat),
    title: pick(proj.title),
    overview: pick(proj.overview),
    challenge: pick(proj.challenge),
    solution: pick(proj.solution),
    results: pick(proj.results),
    services: pick(proj.services),
    stack: proj.stack,
    stats: (proj.stats || []).map((s) => ({ v: s.v, l: pick(s.l) })),
    sections: (proj.sections || []).map((s) => ({ t: pick(s.t), d: pick(s.d), image: s.image || null, bg: s.bg || null })),
  };
};
