Construido sobre la arquitectura que ya tenías scaffoldeada (src/app +
router + pages/ + components/ + data/ + types/), aplicando el sistema
de diseño de buzzdesign (docs 01–05b) tal cual está documentado. La
inspiración estructural viene de maggie-app.com: navbar flotante, hero con
frase enorme, sección de scroll-reveal palabra por palabra, cards de
features en 3 columnas, y un bloque de "misión + stats" antes del CTA final
— pero traducida al tono y la tipografía propios de Buzzness (Anton,
sombra offset, sin humor de producto de consumo).
src/
├── app/
│ ├── App.tsx # Layout raíz: grid de fondo + Header + <Outlet/> + Footer
│ └── router.tsx # createBrowserRouter con las 5 rutas
├── components/
│ ├── layout/ Container, Header (con menú mobile), Footer
│ ├── sections/ Hero, Services, Projects, Experience, Contact
│ └── ui/ Button, Card, Badge, SectionLabel
├── data/ services.ts, projects.ts, skills.ts, experience.ts
├── types/ service.ts, project.ts
├── lib/ utils.ts (cn), useScrollReveal.ts
├── pages/
│ ├── Home/ compone Hero + Services + Projects + Experience + Contact
│ ├── Services/ página completa de servicios
│ ├── Portfolio/ página completa de proyectos
│ ├── About/ bio + stack + trayectoria
│ └── Contact/ CTA dedicado
├── index.css tokens reescritos completos (reemplaza el archivo anterior)
└── main.tsx actualizado para usar RouterProvider
tailwind.config.js tokens canónicos + keyframes de motion (bz-rise, bz-pop)
index.html con preconnect a Google Fonts (Anton, Darker Grotesque, JetBrains Mono)
Hero.tsx incluye ManifestoReveal: la frase del manifiesto
("Aquí trabaja alguien que piensa antes de ejecutar.") se arma palabra por
palabra mientras haces scroll, usando IntersectionObserver
(useScrollReveal). Es la traducción directa de la sección kinética de
Maggie, pero con una frase que ya es tuya — no copy inventado — y respeta
prefers-reduced-motion.
react-router-dom— instala si no lo tienes:npm i react-router-dom- Alias
@/— los imports usan@/components/...,@/data/..., etc. Agrega envite.config.ts:y enimport path from 'path' // dentro de defineConfig: resolve: { alias: { '@': path.resolve(__dirname, './src') }, },
tsconfig.json(otsconfig.app.json):Si prefieres no tocar la config, puedo reescribir los imports a rutas relativas — dímelo.{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } } } src/App.tsxysrc/App.css(los antiguos, fuera desrc/app/) — quedaron obsoletos por el nuevosrc/app/App.tsx. Puedes borrarlos.- Contenido placeholder a revisar: el email
hola@buzzness.clenFooter.tsxyContact.tsx, y las cifras deExperience.tsx(STATS) — son reales pero vale la pena que las confirmes o ajustes. - Páginas
Services/Portfolio/About/Contactestán completas pero son una primera pasada — pensadas para iterar, no para quedar fijas.
- Sin nuevas dependencias de animación. El scroll-reveal usa
IntersectionObservernativo, no Framer Motion — para no asumir qué tienes instalado. - El botón primario es el único elemento con sombra offset fuera de
cards/quote/hero. Lo traté como CTA Nivel 1 según tu propia jerarquía
cromática (
02-color.md §4.2), no como excepción improvisada. - El grid de fondo vive una sola vez, en
src/app/App.tsx— nunca se replica dentro de componentes individuales, tal como especifica04-composition.md.