# C++20 REST image-processing server for a Unity headset application

> Audit of an undocumented C++/OpenCV toolbox, then a C++20 REST server delivered as sources, Makefile and README, deployed by the client with Docker and Traefik.

- Client: heartside.fr
- Period: March to June 2025
- Stack: C++20, OpenCV, cpp-httplib, nlohmann/json, Make, Docker
- Outcome: Server in production, integrated into the XR project, deployed by the client themselves

## Starting point

heartside.fr builds a virtual art gallery for headsets. A 2,000-line C++/OpenCV toolbox turned a photo into a printable 3D relief, but it was undocumented, and the IT services company in charge of the project was a web team with no C++ skills. Nobody could connect the toolbox to the Unity application.

## The audit

Audit report on the toolbox: documentation gaps, code quality, and an estimate for the server to build.

## The delivery

A C++20 REST server (cpp-httplib, nlohmann/json), built from scratch. It receives a photo and processing instructions (contrast, brightness, posterisation, colourisation, depth to 3D) and returns the processed image to the Unity application.

- Orthodox C++, memory-frugal and low-latency.
- Strict compilation checks, including `-fstack-protector-all` and `-Werror`.
- Delivered as a single source file, a Makefile and a README.

## Today

The client deployed the server themselves with Docker Compose, Traefik and Let's Encrypt. It is in production, integrated into the XR project.
