Sobre o projeto

Hueclid é uma ferramenta open-source que converte capturas de tela ou fotos em paletas de cores acessíveis para interfaces de usuário. Diferente de geradores de paleta típicos que extraem cores dominantes e param por aí, o Hueclid trata a geração de paletas como um problema de otimização restrita, produzindo um conjunto de papéis de design-system—fundo, superfície, texto, ação primária, perigo, e mais—que são verificados entre si quanto ao contraste usando APCA (Algoritmo de Contraste Perceptual Acessível), em vez da razão de contraste mais antiga do WCAG 2. O algoritmo central, chamado ACCORD, busca uma paleta que permaneça fiel às cores reais da imagem de origem enquanto satisfaz simultaneamente todas as restrições de contraste em um grafo de papéis direcionado. Ele usa CP-SAT (Programação com Restrições usando SAT) para resolução exata, o que significa que o resultado é ou comprovadamente correto ou comprovadamente inviável, com uma indicação clara de qual restrição é o problema quando nenhuma paleta válida existe. O projeto está em estágio inicial, mas possui um backend FastAPI funcional e um frontend Next.js, hospedado publicamente em hueclid.cinexg.com. A matemática de cores está implementada e verificada: conversão sRGB para CIELAB, diferença de cor CIEDE2000 (verificada contra dados de referência de Sharma et al. 2005), Oklab e Oklch (verificados contra matrizes de referência do CSS Color 4), mapeamento de gama em Oklch, binning de histograma no espaço Lab, e um extrator de paleta por k-means ponderado. Um cache de histogramas Lab baseado em Postgres é construído para ingestão de conjuntos de dados, validado contra os conjuntos Rico, Enrico e WebUI com mais de 100.000 capturas de tela reais. O projeto se distingue de trabalhos relacionados como Colorgorical e Palettailor ao tratar APCA como uma restrição rígida dentro da geração (não como um pós-filtro), gerando papéis de design-system tipados com um grafo de restrições direcionado (não um conjunto plano de cores distinguíveis), e resolvendo a etapa de seleção restrita exatamente (não por busca estocástica).