Back to Portfolio

RetailMart
B2B Ecommerce Ecosystem

Complete B2B ecommerce ecosystem — buyer + seller dual-app platform with NestJS backend. 1.5 years of full product ownership.

01Overview

Timeline

1.5 Years

Full ownership

Apps

2

Buyer + Seller

Backend

NestJS

TypeScript API

Ownership

Full

End-to-end product

RetailMart is a complete B2B ecommerce platform I built and owned for 1.5 years — two Flutter apps (buyer + seller) and a NestJS backend. Full product lifecycle: from architecture design through Play Store deployment and post-launch iterations.

02Architecture

Melos Monorepo

Flutter monorepo managed with Melos. Shared packages for auth, networking, models, and UI components across buyer and seller apps.

Swagger → Dart Codegen

NestJS Swagger definitions auto-generate Dart API client code. API changes instantly reflect in the mobile layer — zero manual sync drift.

NestJS + PostgreSQL + Redis

NestJS backend with Prisma ORM, PostgreSQL for data, Redis for caching, and Winston for structured logging. Docker for local dev.

Riverpod State Management

Flutter Riverpod for dependency injection and state. Provider-based architecture with separation of async state, business logic, and UI.

Firebase Auth + Social Login

Firebase authentication for user management. Social login (Google, etc.). JWT passed to NestJS for API authorization.

03Tech Stack

Flutter / DartNestJS / TypeScriptPostgreSQLRedisPrisma ORMFirebase AuthMelosRiverpodChopperDockerSwagger CodegenFCMGeoLocation

04Engineering Learnings

01.Full-stack product ownership at 1 person requires strict API contract discipline — Swagger codegen saved weeks of integration work
02.Monorepo with Melos dramatically improves code sharing quality and keeps shared packages honest
03.GeoLocation features need careful battery optimization — continuous location polling kills battery on Android
04.Backend caching with Redis is mandatory for product listing APIs with heavy filter logic
05.1.5 years of iteration built intuition for what B2B buyers and sellers actually need vs. what they initially ask for

See the Apps Live