All works

Parfumé exquisité

An e-commerce platform for perfumes and perfume oils.

ReactTypeScriptZustandDjangoFirebaseMaterial UIPostgreSQLVercel
In progress
Early gold-and-black design of the perfume storefront, with a featured bottle and product listings

A shop for discovering fragrances

Parfumé exquisité is a Bulgarian-language storefront for perfumes and perfume oils from Dubai. I built the shop in React and the catalogue API in Django so the products, prices and availability could be managed without changing the frontend. The gold-and-black design puts the bottles first, with space for new arrivals and popular fragrances.

Visitors can browse by product type, brand, fragrance family, price and availability, then choose a size on the product page. The Django REST Framework API handles those filters, sorting and pagination against PostgreSQL. React Query fetches the results for the storefront. Signed-in visitors can save favourites; Firebase handles sign-in, while Django verifies the token and records which products each person has liked. There is also a form for asking the shop about a particular product.

Making the catalogue manageable

The Django admin is where products, their sizes, prices and availability are edited. I added a small React image manager inside the admin for the main photo and gallery, with the files stored in Firebase Storage. It makes managing product photos easier than working through separate upload fields.

On the customer side, React, TypeScript, Vite and Material UI make up the interface. Zustand keeps the basket between visits, including quantities and totals, and React Hook Form helps with the checkout fields.

Where it stands

The checkout collects contact details, delivery or collection choices and payment preferences, then shows an order summary. The Django backend already has order and line-item models and staff admin screens, but the final button in the storefront does not yet create an order through the API. Connecting that last step is still to come.