FFRI: a historic textile archive turned into a design tool
Historic patterns that stayed shut in an archive: now they can be searched by likeness, blended, and turned into new designs.
- Year
- 2024
The problem
A textile archive is made of folders: sample books, drawings on paper, print trials. To consult one you already have to know what you are looking for, and you search by year or by collection, meaning by the only labels somebody once had time to write. A designer wanting to start from there spends longer than it would take to draw from scratch.
Fondazione Fashion Research Italy promotes Italian fashion through research and archives: historic patterns, materials, documentation on sustainable fabrics. The brief was not to digitise, that had already been done, but to make that heritage a workable starting point for designing something new.
How we solved it
Search was the first thing we turned around. In place of filters by colour and period, you upload a reference image and the system returns the patterns that resemble it: weave density, colour relationships, recurring geometries. You also find what you did not know you were looking for, which in an archive is half the work.
From there two generative routes open up. Blending takes two patterns chosen from the archive and produces one that keeps something of both. Generation from a prompt goes through OpenAI's DALL-E APIs, but never starts from a blank page: the user's text is anchored to the colour and styling characteristics of existing patterns.

Applying the visual traits of one pattern to another happens inside the browser, with TensorFlow.js and pre-trained models. That is not a technical choice but a contractual one: somebody working on a collection that has not been released cannot upload their files to somebody else's server, and this way they do not have to.
The least photogenic part is the one holding up all the rest: a Python backend speaking SOAP to the Foundation's legacy archives. The existing document system was not rewritten, the tool sits on top of it and takes the patterns from there. Thousands of high-resolution images are a memory problem before they are a bandwidth problem, and it is solved upstream: lazy loading, caching of the most requested patterns, and a preprocessing pipeline that lightens every image before it reaches the model.
An archive nobody can consult is not a heritage: it is a warehouse.
The results
What changes for a designer is not having one more image generator: those are everywhere. It is that the starting point stops being a prompt and goes back to being something that really exists, drawn by somebody, kept for a reason.
A Next.js, TypeScript and Tailwind front end for a responsive interface. Style transfer runs on TensorFlow.js, using pre-trained models for client-side processing. Image generation from text prompts goes through OpenAI's DALL-E APIs, while a Python backend speaking SOAP bridges across to FFRI's legacy archives. To keep things quick: handling of high-resolution images, caching of the most used patterns, and a preprocessing pipeline that lightens both the processing and the browser's memory.
Stack: Next.js, TypeScript, Tailwind, TensorFlow.js, DALL-E, Python, SOAP
A Next.js, TypeScript and Tailwind front end for a responsive interface. Style transfer runs on TensorFlow.js, using pre-trained models for client-side processing. Image generation from text prompts goes through OpenAI's DALL-E APIs, while a Python backend speaking SOAP bridges across to FFRI's legacy archives. To keep things quick: handling of high-resolution images, caching of the most used patterns, and a preprocessing pipeline that lightens both the processing and the browser's memory.
Stack: Next.js, TypeScript, Tailwind, TensorFlow.js, DALL-E, Python, SOAP
- Year
- 2024
Got something similar in mind?
Tell us what you want to build and we will help you find the shortest way there.







