Cross-Platform Marketplace App
The completed Marketplace app is a platform that connects local producers and sellers of natural products with customers. Through its mobile app and web dashboard, it allows users to conveniently manage sales and orders and discover local offerings all in one place.
The marketplace app is a modern, multi-platform ecosystem designed for local trade and distribution of natural products. The project seamlessly integrates a dedicated mobile app for buyers and sellers, a self-service web panel for sellers, an administrative panel, and a high-performance backend API based on the GraphQL standard.
The product’s main value lies in bridging the gap between local producers and consumers.
Users can discover local stores in real time on an interactive map, browse the product selection, place orders with delivery or in-store pickup options, and rate products.
Sellers are provided with intuitive tools to run their own online stores and manage subscriptions, while administrators retain full operational oversight of the entire ecosystem.
Market context and business challenges
The market for local, natural products can be highly fragmented. End customers often know what products they are looking for, but they lack a centralized source of information on where a specific producer or store is located in their immediate vicinity.
On the other hand, smaller retailers and artisans need a simple, technology-friendly way to showcase their products, build visibility, and accept orders—without having to go through the costly process of building a dedicated online store from scratch.

The seller gains flexibility—they can manage their business on a phone or computer.
Launching an online store
After registration, they provide an address, which the system automatically converts into geographic coordinates using integration with the Google Geocoding API.
Catalog management
The seller sets net/gross prices, assigns categories, and uploads photos (which the system automatically compresses). The number of products that can be marked as “visible” to buyers is dynamically adjusted based on the purchased plan.
The mobile app for end customers focuses on location.
Purchase path
The interface starts with a map view that uses advanced marker clustering (ensuring the screen remains clear even when points are densely packed). The buyer searches for a product or store, clicks a marker, and goes to the offer details. They see a gallery of up to 3 photos, the gross price, delivery options, and ratings. They add items to the cart and place an order.
Cart grouping
The cart automatically groups products by specific store, which eliminates the logistical problem of a single order split across multiple uncoordinated suppliers.
Review mechanism
After purchase, the user can rate the product from the order history, which automatically updates the average rating and builds transparency on the platform.
A dedicated environment for internal marketplace management. It allows you to filter the user database and view transactions and order history. Additionally, it enables the scheduling and bulk sending of email notifications, which the backend processes periodically in batches to prevent overloading the mail server.
Backend NestJS & GraphQL
Built using the NestJS framework.
It provides a single GraphQL API via Apollo, which serves as a common data contract for the mobile app, the merchant website, and the admin panel. The data layer uses Prisma ORM and a PostgreSQL database, ensuring transactional operations (which are critical for processing payments and orders).

Key Design Decisions and Conclusions for the Case Study
Immutability of Order History
When a purchase is finalized, the system saves a complete copy (snapshot) of the product data (name, price, taxes) from the exact moment of purchase. This ensures that subsequent edits to the product lineup or prices made by the seller do not negatively impact the historical order records of the buyer and administrator.
Monetization automation (RevenueCat)
Subscription support in the mobile app has been integrated with RevenueCat. The backend processes webhooks regarding purchases, renewals, or package expirations in real time. In the event of a downgrade, the system automatically hides redundant products, ensuring the integrity of the business model.
Security and compliance with privacy policies
The system operates on a soft delete mechanism (business records are not physically deleted from the database). When an account is deleted, user data is fully anonymized and associated store and product structures are hidden, which protects the integrity of the database.
- Finalizing and completing the entire purchase journey (from discovery
on the map to payment) within a single, cohesive platform. - Building a stable and predictable revenue model for
the marketplace operator based on recurring B2B subscriptions (MRR). - Drastically reducing barriers to entry and operating costs for
local entrepreneurs thanks to a ready-to-use self-service infrastructure. - Strengthening consumer trust in the local market through the implementation of
a transparent system of ratings, reviews, and verified contact information.





