Saltar al contenido principal
←Volver a proyectos

CASO DE ESTUDIO · 02

Craftie: la identidad de tu marca a partir de una imagen

Empieza con una inspiración: eliges un estilo curado o subes una imagen y Craftie carga al instante los colores semilla de tu marca. Después ajustas roles, revisas el contraste en contexto, eliges tipografía y exportas tu guía.

ROL
Diseño y desarrollo completo
TIPO
Herramienta web · Proyecto personal
TECNOLOGÍAS
Next.js 16 · React 19 · TypeScript · culori (OKLCH) · Vitest
ESTADO
En vivo · 2026
Craftie: la identidad de tu marca a partir de

EL PROBLEMA

Elegir colores que se vean bien juntos y que además se lean bien es difícil. La mayoría de las herramientas te dan colores bonitos, pero no te dicen si el texto encima va a ser legible.

EL OBJETIVO

Pasar de una imagen o una idea a un sistema de marca completo (colores, contraste y tipografía) sin necesitar saber de teoría del color.

PROCESO

De una paleta a un sistema de marca

  1. 01

    Inspiración

    Eliges un estilo curado o subes una imagen. Los colores dominantes se extraen en tu navegador.

  2. 02

    Roles de color

    Los colores se convierten en roles (fondo, texto, principal, acento) con versiones para modo claro y oscuro.

  3. 03

    Legibilidad

    Cada combinación se evalúa con WCAG 2.2, con una lectura complementaria en APCA.

  4. 04

    Tipografía y exportación

    Parejas curadas, Google Fonts o fuentes locales, y una guía que descargas en el formato que necesites.

DECISIONES TÉCNICAS

Lo que pasa detrás de la interfaz

Toda la lógica de color vive en funciones puras y testeadas, separada de la interfaz.

colorMath.tscontraste en OKLCH
// lib/utils/colorMath.ts: ajusta solo la luminosidad hasta cumplir el contraste
export function adjustLightnessForContrast(colorHex: string, againstHex: string, targetRatio: number) {
  const normalized = normalizeHex(colorHex);
  if (contrastRatio(normalized, againstHex) >= targetRatio) return normalized;

  const { c, h, l: originalL = 0 } = parseOklch(normalized);
  const ratioAt = (lightness: number) => contrastRatio(oklchToHex(lightness, c, h), againstHex);

  const darker = findLightnessBound(ratioAt, targetRatio, 0, originalL, true);
  const lighter = findLightnessBound(ratioAt, targetRatio, originalL, 1, false);
  // ...se elige el candidato más cercano al color original
}
  • ¿Por qué OKLCH?

    Cambia la luminosidad sin alterar el tono, así un color se puede ajustar para que pase el contraste sin dejar de parecerse al original.

  • Sugerencias, no solo errores

    Si una combinación no pasa AA o AAA, Craftie te propone el ajuste mínimo de luminosidad para que sí lo haga.

  • Todo en tu navegador

    Las imágenes y las fuentes que subes nunca salen de tu computadora: no hay servidor ni cuentas.

  • Más de 500 tests

    El motor de color y contraste está cubierto por pruebas con Vitest, así los resultados son predecibles.

LA SOLUCIÓN

Así funciona

Captura o video de empieza con una inspiración
01

Empieza con una inspiración

Eliges un estilo curado o subes una imagen (JPG, PNG o WebP, hasta 5 MB). Craftie extrae los colores y los clasifica como pastel, vivos, oscuros o neutros.

Captura o video de toca un rol y ajústalo
02

Toca un rol y ajústalo

Cambias el color de cualquier rol y revisas el contraste en contexto: AA o AAA con WCAG, más una lectura en APCA.

Captura o video de exporta tu guía
03

Exporta tu guía

Eliges tipografía (parejas curadas, Google Fonts o tus propias fuentes) y exportas a CSS, design tokens (JSON), Figma, DESIGN.md o brand kit.

RESULTADO

En números

+500

Tests automáticos

Lógica de color, contraste y exportación cubierta con Vitest.

~90

Combinaciones tipográficas

Recomendadas según el estilo que elijas.

5

Formatos de exportación

CSS, JSON, Figma Tokens, DESIGN.md y brand kit.

LO QUE APRENDÍ

Una herramienta de accesibilidad tiene que ser accesible primero.
Aprendizaje técnico:

Mantener la lógica de color en funciones puras, lejos de la interfaz, me permitió cambiar el diseño muchas veces sin romper los cálculos.

Aprendizaje de producto:

Mostrar el número de contraste junto con una sugerencia concreta ayuda más que un simple "no pasa".

¿Me cuentas tu idea?

No hace falta que la tengas clara ni que sepas cómo se llama lo que necesitas. Escríbeme como le escribirías a una amiga y te respondo en menos de 24 horas.

Respuesta habitual en menos de 24 horas