diff --git a/app/layout.tsx b/app/layout.tsx index eb01bfd..e2f6b03 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,4 +1,4 @@ -import { Geist, Geist_Mono } from 'next/font/google'; +import { Geist_Mono, IBM_Plex_Sans } from 'next/font/google'; import '../styles/globals.css'; import { config } from '@fortawesome/fontawesome-svg-core'; @@ -13,9 +13,10 @@ import { SITE_NAME, SITE_URL } from '@/lib/site'; // Prevent FontAwesome from adding its CSS dynamically on the server (causes SSR errors) config.autoAddCss = false; -const geistSans = Geist({ +const sans = IBM_Plex_Sans({ subsets: ['latin'], - variable: '--font-geist-sans', + weight: ['400', '500', '600', '700'], + variable: '--font-sans', display: 'swap', }); @@ -91,7 +92,7 @@ export default function RootLayout({ return (
diff --git a/app/me/page.tsx b/app/me/page.tsx index 2abd1e6..2f38118 100644 --- a/app/me/page.tsx +++ b/app/me/page.tsx @@ -3,24 +3,33 @@ import Link from 'next/link'; import type { CSSProperties } from 'react'; import { PageWrapper } from '../components/PageWrapper'; +import type { IconDefinition } from '@fortawesome/fontawesome-svg-core'; import { + faBriefcase, faCakeCandles, + faCheck, faCode, + faFaceFrown, + faFaceSmile, faGraduationCap, faHandshake, - faHeadphones, faIdCard, + faPenNib, faUser, + faXmark, } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import type { Metadata } from 'next'; +import { + CARD_HOVER_LARGE, + CARD_INNER_RING, + hoverRotation, +} from '@/base/card-animation'; import { Card } from '@/base/components/Card'; import { PageTitle } from '@/base/components/PageTitle'; import { SectionHeader } from '@/base/components/SectionHeader'; -import { TagList } from '@/features/about/components'; -import { getGithubLanguages, getGithubUsername } from '@/lib/github'; -import { getLastfmTopTags } from '@/lib/lastfm'; +import { getGithubUsername } from '@/lib/github'; import { SITE_NAME, SITE_URL } from '@/lib/site'; const ABOUT_TITLE = 'Sobre mim'; @@ -28,8 +37,6 @@ const ABOUT_DESCRIPTION = 'Sobre John Enderson'; const ABOUT_URL = `${SITE_URL}/me`; const ABOUT_OG_IMAGE = `${SITE_URL}/og/site/me`; -export const revalidate = 3600; - export const metadata: Metadata = { title: ABOUT_TITLE, description: ABOUT_DESCRIPTION, @@ -84,13 +91,79 @@ const tldrCards = [ }, ]; -const musicTagColors = ['#ec4899', '#f0a66d', '#5bd3c7', '#8b5cf6', '#facc15']; +// Seed fixa: sempre a mesma foto, mesma rotação de hover em toda renderização. +const PHOTO_HOVER_SEED = 2; + +const likes = [ + 'Pizza', + 'Música eletrônica', + 'Instrumentos musicais', + 'Piano e teclado', + 'Tecnologia', + 'Assuntos sobrenaturais', + 'Conversas aleatórias que duram horas', +]; + +const dislikes = ['Incoerência', 'Frio', 'Falta de propósito']; + +const PreferenceCard = ({ + id, + title, + icon, + marker, + tone, + items, +}: { + id: string; + title: string; + icon: IconDefinition; + marker: IconDefinition; + tone: 'positive' | 'negative'; + items: string[]; +}) => ( +Oi, eu sou o John!
++ Meu nome é{' '} + + John Enderson + + . Sou uma pessoa de pele clara, mineira que mora em São + Paulo e que trava uma pequena batalha diária com a balança. +
-- Atualmente sou Engenheiro de Software no{' '} - + Além de programar, adoro ouvir música, sair para festas ou + simplesmente estar em qualquer lugar com os meus amigos. + Também gosto de passar horas em chamadas no Discord, + conhecer pessoas novas e conversar sobre os mais variados + assuntos — daqueles importantes até os completamente + aleatórios. +
+
- Grande parte do meu tempo é dedicada a garantir que nossas
- soluções estejam aderentes às diretrizes, mandates e
- requisitos de compliance do banco. Também sou um aspirante a{' '}
-
- SRE
- {' '}
- (Site Reliability Engineer), papel que desempenho dentro da
- squad, com foco em observabilidade, resiliência e estabilidade
- de sistemas distribuídos.
+ A ideia de criar este espaço surgiu a partir da inspiração de{' '}
+
+ Doce Fernandes
+
+ , do
- Trabalho principalmente com Java e Spring Boot, tecnologias - que utilizo para resolver problemas de negócio e dos clientes. - Também uso Terraform e AWS para criar e gerenciar - infraestrutura. Participar de uma modernização me trouxe - muitas experiências boas, visão de negócio e muita - responsabilidade. + Este site também nasceu como uma forma de me incentivar a + escrever mais — tanto sobre mim quanto sobre as coisas que + venho aprendendo ao longo da minha trajetória.
- Fora do horário comercial, quando não estou lendo, explorando - o{' '} - - Datadog - {' '} - ou escrevendo código, provavelmente estou em uma call no - Discord com amigos ou em algum lugar do mundo vivendo - experiências totalmente distantes da tecnologia. + Quero compartilhar conteúdos que possam ser úteis para pessoas + que estão procurando ideias para programar, construir um + portfólio, desenvolver projetos ou conhecer melhor + determinados assuntos relacionados à tecnologia.
- Ah, e eu também sou pai de pet. A Maya é a responsável por me - lembrar que existe vida fora da tecnologia. rs + Não tenho a pretensão de saber tudo. A ideia é documentar + aprendizados, experiências, erros e descobertas que talvez + também possam ajudar outras pessoas.
-
+ Atualmente, sou{' '}
+
+ Engenheiro de Software no{' '}
+
+ Meu principal papel dentro da squad é contribuir para a + confiabilidade de jornadas críticas que transacionam bilhões + e, em alguns cenários, trilhões de reais mensalmente. +
+ ++ Grande parte do meu trabalho está relacionada à criação e + evolução de soluções seguras, resilientes e aderentes às + diretrizes, aos mandates e aos requisitos de compliance do + banco. +
+ +
+ Também tenho direcionado meus estudos e minha atuação para
+ temas como engenharia de software, arquitetura,
+ observabilidade, confiabilidade e práticas de{' '}
+
- Você também pode ler meus{' '} - - artigos - - . -
+- Ranked Solo/Duo e os campeões com mais maestria. -
-Nenhum jogo para mostrar.
diff --git a/public/me/john_3d.jpg b/public/me/john_3d.jpg new file mode 100644 index 0000000..edd71ca Binary files /dev/null and b/public/me/john_3d.jpg differ diff --git a/src/features/now/card-animation.ts b/src/base/card-animation.ts similarity index 100% rename from src/features/now/card-animation.ts rename to src/base/card-animation.ts diff --git a/src/base/components/Navbar/Navbar.tsx b/src/base/components/Navbar/Navbar.tsx index 891fda3..cd236b1 100644 --- a/src/base/components/Navbar/Navbar.tsx +++ b/src/base/components/Navbar/Navbar.tsx @@ -38,6 +38,21 @@ const MenuIcon = () => ( ); +// Marca do site: o wordmark com o ponto em teal, sem ícone — mesma +// assinatura do "John Enderson." no hero da home. +const Logo = () => { + const dotIndex = SITE_NAME.indexOf('.'); + if (dotIndex === -1) return <>{SITE_NAME}>; + + return ( + <> + {SITE_NAME.slice(0, dotIndex)} + . + {SITE_NAME.slice(dotIndex + 1)} + > + ); +}; + export const Navbar = () => { const pathname = usePathname(); const [scrolled, setScrolled] = useState(false); @@ -71,18 +86,9 @@ export const Navbar = () => {