About this project

Wavelen is a lightweight, self-hosted web application designed for saving and organizing personal color palettes. It enables users to maintain private lists of hexadecimal color codes, organized into customizable collections. The application provides both an embedded web user interface and a comprehensive RESTful API for programmatic interaction. Key features include: - **Personal Color Management**: Users can sign up, log in, and manage their own collections of colors. Each account starts with a default "Main" collection, but users can create additional named collections. - **Color Harmonies**: The public API offers endpoints to calculate color harmonies such as complements, triads, and ramps for any given hex code. - **Public Data Access**: While user-specific collections are private, the system exposes a public feed of all colors, allowing for sorting by hex value. - **Tech Stack**: Built using Go (targeting Go 1.27), PostgreSQL, and pgx v5. It supports local development via Docker Compose and includes integration tests using testcontainers. - **API & Authentication**: Secure access to private resources requires a bearer token obtained via login. Public endpoints like version info and general color listings do not require authentication. The project is structured to be easily deployable locally or via Docker, with configuration managed through environment variables. It includes logging with correlation IDs for request tracing and follows standard CI/CD practices for versioning and testing.