abelardodiaz.dev~$ abelardodiaz.dev_
Proyectos/proyectosTIL/tilBlog/blogServicios/serviciosAbout/aboutCV/cvContacto/contactoHablemos./whatsapp
← Todos los TILs

TIL - Proyecto portfolio-organico

20 micro-lecciones del proyecto portfolio-organico.

← cd ..

// til/proyecto/portfolio-organico

20 micro-lecciones del proyecto portfolio-organico.

ProyectoTodosbloques-reciclablescall-blockercitas-bot-universalclaude-agent-patternsdevtoolsflask-survey-referral-systemgps-fleet-monitorgps-tracking-patternshikvision-cctv-backendhikvision-isapi-patternslive-conference-translatormulti-ai-provider-patternsportfolio-organicoportfolio-organico-templatesimulabnbtinymedia-compressvideo-frame-analyzerwhatsapp-webhook-patterns
proj:*bloques-reciclablescall-blockercitas-bot-universalclaude-agent-patternsdevtoolsflask-survey-referral-systemgps-fleet-monitorgps-tracking-patternshikvision-cctv-backendhikvision-isapi-patternslive-conference-translatormulti-ai-provider-patternsportfolio-organicoportfolio-organico-templatesimulabnbtinymedia-compressvideo-frame-analyzerwhatsapp-webhook-patterns
  • WeasyPrint: generar PDFs profesionales desde Markdown con Pythonpythonportfolio-organico2026-04-07
  • Vercel CLI: el workflow real para un portfolio en producciontoolingportfolio-organico2026-03-14
  • Vercel Analytics + Speed Insights: observabilidad sin cookies ni consentnextjsportfolio-organico2026-03-13
  • vercel env pull: sincronizar variables sin copiar secrets a manotoolingportfolio-organico2026-03-13
  • OG images dinamicas con Satori: cargar fonts desde Google Fonts APInextjsportfolio-organico2026-03-12
  • Google Analytics condicional: cargar solo si existe NEXT_PUBLIC_GA_IDnextjsportfolio-organico2026-03-10
  • Google Analytics redundante: el mayor culpable de mobile perfperformanceportfolio-organico2026-03-10
  • Animacion con CSS transitions en vez de framer-motion: RotatingLabelreactportfolio-organico2026-02-27
  • @theme inline en Tailwind v4: calc() con CSS variables para radii escalablestailwindportfolio-organico2026-02-25
  • base-ui Button + CVA: headless component con Tailwind variantsshadcnportfolio-organico2026-02-23
  • ButtonLink: componer Next.js Link dentro de base-ui Button via render propshadcnportfolio-organico2026-02-23
  • Dual-theme como storytelling: editorial vs terminal para audiencias diferentesarchitectureportfolio-organico2026-02-21
  • Context con doble eje: theme + mode como estados independientesreactportfolio-organico2026-02-19
  • data-slot en shadcn: cambiar font-family por tema sin conditional classesshadcnportfolio-organico2026-02-17
  • next/font/google: variable fonts automaticas al quitar weightnextjsportfolio-organico2026-02-15
  • gray-matter parsea dates como Date objects: el bug que rompio el buildarchitectureportfolio-organico2026-02-13
  • generateStaticParams + gray-matter: SSG desde archivos MDX sin CMSnextjsportfolio-organico2026-02-11
  • next-mdx-remote/rsc vs next-mdx-remote: server-side MDX sin JS de clientenextjsportfolio-organico2026-02-11
  • @custom-variant en Tailwind v4: crear variantes editorial: y terminal:tailwindportfolio-organico2026-02-09
  • Git como CMS: MDX + frontmatter + generateStaticParams = zero-maintenance contentarchitectureportfolio-organico2026-02-05
  • WeasyPrint: generar PDFs profesionales desde Markdown con Pythonpythonportfolio-organico2026-04-07
  • Vercel CLI: el workflow real para un portfolio en producciontoolingportfolio-organico2026-03-14
  • Vercel Analytics + Speed Insights: observabilidad sin cookies ni consentnextjsportfolio-organico2026-03-13
  • vercel env pull: sincronizar variables sin copiar secrets a manotoolingportfolio-organico2026-03-13
  • OG images dinamicas con Satori: cargar fonts desde Google Fonts APInextjsportfolio-organico2026-03-12
  • Google Analytics condicional: cargar solo si existe NEXT_PUBLIC_GA_IDnextjsportfolio-organico2026-03-10
  • Google Analytics redundante: el mayor culpable de mobile perfperformanceportfolio-organico2026-03-10
  • Animacion con CSS transitions en vez de framer-motion: RotatingLabelreactportfolio-organico2026-02-27
  • @theme inline en Tailwind v4: calc() con CSS variables para radii escalablestailwindportfolio-organico2026-02-25
  • base-ui Button + CVA: headless component con Tailwind variantsshadcnportfolio-organico2026-02-23
  • ButtonLink: componer Next.js Link dentro de base-ui Button via render propshadcnportfolio-organico2026-02-23
  • Dual-theme como storytelling: editorial vs terminal para audiencias diferentesarchitectureportfolio-organico2026-02-21
  • Context con doble eje: theme + mode como estados independientesreactportfolio-organico2026-02-19
  • data-slot en shadcn: cambiar font-family por tema sin conditional classesshadcnportfolio-organico2026-02-17
  • next/font/google: variable fonts automaticas al quitar weightnextjsportfolio-organico2026-02-15
  • gray-matter parsea dates como Date objects: el bug que rompio el buildarchitectureportfolio-organico2026-02-13
  • generateStaticParams + gray-matter: SSG desde archivos MDX sin CMSnextjsportfolio-organico2026-02-11
  • next-mdx-remote/rsc vs next-mdx-remote: server-side MDX sin JS de clientenextjsportfolio-organico2026-02-11
  • @custom-variant en Tailwind v4: crear variantes editorial: y terminal:tailwindportfolio-organico2026-02-09
  • Git como CMS: MDX + frontmatter + generateStaticParams = zero-maintenance contentarchitectureportfolio-organico2026-02-05

© 2026 Abelardo Diaz

// abelardodiaz.dev © 2026