feat: portfolio bilíngue (PT/EN) — Next.js 16 + Tailwind v4

- Hero com terminal animado e identidade de engenheiro de agentes de IA
- 10 projetos curados (destaques: Mika e Agentes de IA com métricas)
- Skills, contato, dark mode, SEO/OG por locale
- Rotas /pt e /en com redirect por Accept-Language
This commit is contained in:
Felipe Domingues 2026-07-21 01:47:54 -03:00
commit be348f70f6
32 changed files with 8631 additions and 0 deletions

174
src/i18n/dictionaries/en.ts Normal file
View file

@ -0,0 +1,174 @@
export type TermLineKind = "cmd" | "ok" | "out";
export interface TermLine {
kind: TermLineKind;
text: string;
}
export const en = {
meta: {
title: "Felipe Domingues — Full-Stack Developer & AI Agent Engineer",
description:
"I build digital products and AI agents that talk to real people: 15,000+ people served and 600,000+ messages exchanged.",
},
nav: {
projects: "projects",
skills: "stack",
contact: "contact",
},
hero: {
status: "online — agents answering in real time",
eyebrow: "full-stack developer · AI agent engineer",
bio: "I turn ideas into digital products and AI agents that hold real conversations — from database to deploy, focused on experience and results.",
ctaPrimary: "see projects",
ctaSecondary: "get in touch",
badges: ["15,000+ people served", "600,000+ messages", "10 products shipped"],
terminal: {
title: "felipe@agents: ~",
lines: [
{ kind: "cmd", text: "mika status --agent felipe" },
{ kind: "ok", text: "telegram: connected" },
{ kind: "ok", text: "memory: synced" },
{ kind: "ok", text: "agents uptime: 24/7" },
{ kind: "cmd", text: "felipe --summary" },
{ kind: "out", text: "Full-stack dev building AI agents" },
{ kind: "out", text: "for real customer conversations." },
] satisfies TermLine[],
},
floatingBadge: "agents online 24/7",
},
marquee: [
"TypeScript",
"React",
"Next.js",
"AI Agents",
"Supabase",
"Telegram Bots",
"Tailwind",
"Rust",
"Cloudflare Workers",
"LLMs",
"Railway",
"TanStack",
],
projects: {
label: "01 — projects",
heading: "Things I've built",
sub: "Real products in production — from SaaS platforms to AI agents serving thousands of people.",
viewRepo: "view repo",
items: {
mika: {
title: "Mika",
description:
"SaaS platform for personal AI agents with native Telegram integration. Multi-tenant container provisioning, one-tap bot onboarding, Paddle payments and a custom agent runtime.",
},
agentes: {
title: "AI Agents in production",
description:
"AI agents serving real people every day — from the first “hi” to resolution, with memory, brand voice and human handoff when it matters.",
},
medix: {
title: "Medix",
description:
"Medical practice management: scheduling, electronic records and full clinic operations in one fast, focused interface.",
},
vitadiet: {
title: "Vitadiet",
description:
"Nutrition platform for clinics: protocols and meal-plan templates, per-patient planning and a patient app with published plans.",
},
licitaos: {
title: "LicitaOS",
description:
"Public procurement intelligence: nationwide PNCP radar, fit-score screening and AI-generated analysis in an operational cockpit.",
},
boraatender: {
title: "BoraAtender",
description:
"Services marketplace with a coin economy, in-app quotes and Mercado Pago payments — web and Android via Capacitor.",
},
barberpass: {
title: "BarberPass",
description:
"A relationship club for barbershops: booking, conversation continuity and membership across client and shop modes.",
},
govtech: {
title: "GovTech",
description:
"Municipal platform: transparency portal, ombudsman, official gazette, health triage & records, and internal management.",
},
memoryos: {
title: "Memory-OS",
description:
"Memory system for AI agents with layered routing — benchmark hit@1 improved from 3/8 to 8/8.",
},
arch: {
title: "Arch",
description:
"A coding-agent harness and TUI in Rust: fullscreen, mouse-interactive, with an extensible plugin architecture.",
},
},
metrics: {
people: "people served",
messages: "messages exchanged",
},
},
skills: {
label: "02 — stack",
heading: "What I build with",
sub: "The toolbox behind ten shipped products and agents that never sleep.",
groups: {
languages: {
title: "languages",
items: ["TypeScript", "JavaScript", "Python", "Rust", "SQL"],
},
frontend: {
title: "frontend",
items: ["React", "Next.js", "TanStack Start", "Tailwind CSS", "Framer Motion"],
},
ai: {
title: "AI & agents",
items: [
"Agent architecture",
"LLMs & prompt design",
"Telegram / WhatsApp bots",
"Ollama",
"Memory & RAG",
],
},
infra: {
title: "infra & backend",
items: [
"Supabase · Edge Functions",
"Cloudflare Workers",
"Railway · Docker",
"Vercel",
"Paddle · Mercado Pago",
],
},
},
},
contact: {
label: "03 — contact",
heading: "Let's build something together?",
sub: "Open to opportunities, projects and conversations about AI agents. Guaranteed human reply — no agent in between.",
emailBtn: "send an email",
linkedinBtn: "LinkedIn",
githubBtn: "GitHub",
card: {
prompt: "cat contacts.txt",
email: "email",
github: "github",
linkedin: "linkedin",
statusLabel: "status",
status: "open to opportunities",
},
},
footer: {
built: "Built with Next.js, Tailwind and a few AI agents.",
rights: "© 2026 Felipe Domingues. All rights reserved.",
top: "back to top",
},
};
export type Dictionary = typeof en;

View file

@ -0,0 +1,6 @@
import type { Locale } from "../config";
import type { Dictionary } from "./en";
import { en } from "./en";
import { pt } from "./pt";
export const dictionaries: Record<Locale, Dictionary> = { en, pt };

167
src/i18n/dictionaries/pt.ts Normal file
View file

@ -0,0 +1,167 @@
import type { Dictionary } from "./en";
export const pt = {
meta: {
title: "Felipe Domingues — Desenvolvedor Full-Stack & Engenheiro de Agentes de IA",
description:
"Construo produtos digitais e agentes de IA que conversam com pessoas reais: 15.000+ pessoas atendidas e 600.000+ mensagens trocadas.",
},
nav: {
projects: "projetos",
skills: "stack",
contact: "contato",
},
hero: {
status: "online — agentes respondendo em tempo real",
eyebrow: "desenvolvedor full-stack · engenheiro de agentes de IA",
bio: "Transformo ideias em produtos digitais e agentes de IA que conversam com pessoas reais — do banco de dados ao deploy, com foco em experiência e resultado.",
ctaPrimary: "ver projetos",
ctaSecondary: "fale comigo",
badges: ["15.000+ pessoas atendidas", "600.000+ mensagens", "10 produtos lançados"],
terminal: {
title: "felipe@agentes: ~",
lines: [
{ kind: "cmd", text: "mika status --agente felipe" },
{ kind: "ok", text: "telegram: conectado" },
{ kind: "ok", text: "memoria: sincronizada" },
{ kind: "ok", text: "agentes ativos: 24/7" },
{ kind: "cmd", text: "felipe --resumo" },
{ kind: "out", text: "Dev full-stack construindo agentes" },
{ kind: "out", text: "de IA para atendimento real." },
],
},
floatingBadge: "agentes online 24/7",
},
marquee: [
"TypeScript",
"React",
"Next.js",
"Agentes de IA",
"Supabase",
"Bots de Telegram",
"Tailwind",
"Rust",
"Cloudflare Workers",
"LLMs",
"Railway",
"TanStack",
],
projects: {
label: "01 — projetos",
heading: "Coisas que construí",
sub: "Produtos reais, em produção — de plataformas SaaS a agentes de IA atendendo milhares de pessoas.",
viewRepo: "ver repositório",
items: {
mika: {
title: "Mika",
description:
"Plataforma SaaS de agentes pessoais de IA com integração nativa ao Telegram. Provisionamento multi-tenant de containers, onboarding do bot em um toque, pagamentos com Paddle e runtime próprio de agentes.",
},
agentes: {
title: "Agentes de IA em produção",
description:
"Agentes de IA atendendo pessoas reais todos os dias — do primeiro “oi” à resolução, com memória, tom de voz e handoff humano quando precisa.",
},
medix: {
title: "Medix",
description:
"Sistema de gestão médica: agenda, prontuário e operação completa do consultório em uma interface rápida e focada.",
},
vitadiet: {
title: "Vitadiet",
description:
"Plataforma de nutrição para consultórios: protocolos e modelos de cardápio, planejamento por paciente e app do paciente com planos publicados.",
},
licitaos: {
title: "LicitaOS",
description:
"Inteligência em licitações: radar nacional do PNCP, triagem por score de aderência e análises geradas por IA em um cockpit operacional.",
},
boraatender: {
title: "BoraAtender",
description:
"Marketplace de serviços com economia de moedas, orçamentos in-app e pagamentos via Mercado Pago — web e Android com Capacitor.",
},
barberpass: {
title: "BarberPass",
description:
"Clube de relacionamento para barbearias: agendamento, conversa contínua e fidelidade em dois modos — cliente e barbearia.",
},
govtech: {
title: "GovTech",
description:
"Plataforma municipal: portal de transparência, ouvidoria, diário oficial, saúde com triagem e prontuário, e gestão interna.",
},
memoryos: {
title: "Memory-OS",
description:
"Sistema de memória para agentes de IA com roteamento em camadas — hit rate de 3/8 para 8/8 no benchmark hit@1.",
},
arch: {
title: "Arch",
description:
"Harness e TUI para coding agents em Rust: fullscreen, interação por mouse e arquitetura extensível de plugins.",
},
},
metrics: {
people: "pessoas atendidas",
messages: "mensagens trocadas",
},
},
skills: {
label: "02 — stack",
heading: "Com o que construo",
sub: "A caixa de ferramentas por trás de dez produtos lançados e agentes que não dormem.",
groups: {
languages: {
title: "linguagens",
items: ["TypeScript", "JavaScript", "Python", "Rust", "SQL"],
},
frontend: {
title: "frontend",
items: ["React", "Next.js", "TanStack Start", "Tailwind CSS", "Framer Motion"],
},
ai: {
title: "IA & agentes",
items: [
"Arquitetura de agentes",
"LLMs & prompt design",
"Bots Telegram / WhatsApp",
"Ollama",
"Memória & RAG",
],
},
infra: {
title: "infra & backend",
items: [
"Supabase · Edge Functions",
"Cloudflare Workers",
"Railway · Docker",
"Vercel",
"Paddle · Mercado Pago",
],
},
},
},
contact: {
label: "03 — contato",
heading: "Vamos construir algo juntos?",
sub: "Aberto a oportunidades, projetos e conversas sobre agentes de IA. Resposta garantida de um humano — sem agente no meio.",
emailBtn: "mandar e-mail",
linkedinBtn: "LinkedIn",
githubBtn: "GitHub",
card: {
prompt: "cat contatos.txt",
email: "email",
github: "github",
linkedin: "linkedin",
statusLabel: "status",
status: "aberto a propostas",
},
},
footer: {
built: "Construído com Next.js, Tailwind e alguns agentes de IA.",
rights: "© 2026 Felipe Domingues. Todos os direitos reservados.",
top: "voltar ao topo",
},
} satisfies Dictionary;