A marketplace that has to be readable
Beresta is a coffee marketplace for finding and buying premium coffee brands. The catalog is the product. If a brand page only becomes meaningful after JavaScript runs, both the buyer on a slow connection and the search engine looking at the first response lose the point of the page.
This article introduces Beresta as a product: what it is for, how the storefront is put together, and the capabilities a buyer actually uses.
How the storefront is built
The public site is a Next.js application. Brand and product URLs are rendered on the server, so the first HTML already contains the name, the origin, and the offer. Shared interface pieces — the catalog, the brand profile, and the path into checkout — are modules. Adding a roaster does not mean inventing a new page structure.
Content is modeled so a brand can be published in more than one language without duplicating the layout. The same component tree follows the document direction of the locale. That is what keeps the marketplace one codebase instead of two storefronts.
What search engines are given
Every public URL is a document with one subject. The title names the coffee or the brand, the description says what is for sale, and the outline follows the order a buyer uses: what it is, where it is from, then how to buy it. Images are prepared before they are requested, and the route stays cacheable.
Capabilities this article is introducing
The list after this section is the feature list for Beresta. Each item is a capability of the product, written so it can be read on its own — on the page, and in the structured data that describes the project.