
Community Marketplace
Hyperlocal Colombian marketplace — Flutter app, React web, and NestJS API with PostGIS discovery and MercadoPago checkout.
Problem
Define the core challenge
Problem
Neighborhood businesses in mid-size Colombian cities had no lightweight digital channel to reach nearby customers, while buyers relied on informal WhatsApp orders or impersonal national platforms with no local discovery or fulfillment visibility.
Insight
Designing PostGIS GiST-indexed radius queries that stay fast at city scale; enforcing single-store cart constraints and checkout idempotency; wiring secure MercadoPago webhook deduplication; keeping denormalized city_id and ratings consistent across store moves; bridging three clients while the web UI still uses mock data layers for seller/admin flows.
Target
Design a system that improves speed, usability, and delivery confidence without adding maintenance overhead.
Process
How the work was executed
Discover
A full-stack personal project for a geolocalized community marketplace in Colombia: buyers discover nearby stores on a map, browse city-scoped catalogs, and track deliveries in real time; sellers manage products, promotions, and fulfillment; admins govern cities and store approvals. Built as three production-oriented clients on a NestJS modular monolith with Clean Architecture, PostGIS geo queries, and Colombian demo data.
Build
Delivered a three-tier platform: a NestJS API with PostGIS nearby-store search, multi-role JWT auth, order state machine with WebSocket delivery tracking, MercadoPago/Stripe payments, and Firebase push notifications; a React web app with seller and admin dashboards; and a Flutter mobile app with Mapbox maps, debounced geo search, and live auth against the API.
Validate
Designing PostGIS GiST-indexed radius queries that stay fast at city scale; enforcing single-store cart constraints and checkout idempotency; wiring secure MercadoPago webhook deduplication; keeping denormalized city_id and ratings consistent across store moves; bridging three clients while the web UI still uses mock data layers for seller/admin flows.
Solution
Translate constraints into a scalable solution
Process
A full-stack personal project for a geolocalized community marketplace in Colombia: buyers discover nearby stores on a map, browse city-scoped catalogs, and track deliveries in real time; sellers manage products, promotions, and fulfillment; admins govern cities and store approvals. Built as three production-oriented clients on a NestJS modular monolith with Clean Architecture, PostGIS geo queries, and Colombian demo data.
Solution
Delivered a three-tier platform: a NestJS API with PostGIS nearby-store search, multi-role JWT auth, order state machine with WebSocket delivery tracking, MercadoPago/Stripe payments, and Firebase push notifications; a React web app with seller and admin dashboards; and a Flutter mobile app with Mapbox maps, debounced geo search, and live auth against the API.
Architecture
NestJS modular monolith (domain/application/presentation/infrastructure per module) on PostgreSQL + PostGIS and Redis; React web client (feature slices, TanStack Query, Zustand) and Flutter mobile client (Clean Architecture, Riverpod, GoRouter) consuming REST + Socket.IO; S3 presigned uploads, MercadoPago webhooks with idempotency, and Firebase FCM for push.
Results
Ship measurable outcomes
Results
Production-ready backend with Swagger-documented API, Colombian geo seed data, Docker Compose stack, and unit/e2e tests; Flutter app with live auth and store discovery against the API; React web with complete seller/admin/checkout UI scaffolding ready for final API wiring.
Impact
Business and product teams gained better reliability, clearer UX behavior, and a stronger foundation for iteration.
Next
The system now supports future features with less rework and more predictable frontend execution.
Tech stack
- NestJS
- TypeScript
- Prisma
- PostgreSQL
- PostGIS
- Redis
- Flutter
- React
- Vite
- Socket.IO
- MercadoPago
- Docker
- JWT