Fishlo
Featured
Team
Ongoing

Fishlo

A full-stack B2C fish marketplace modernizing traditional wet markets with multi-store management, zone-based geospatial delivery logistics, and real-time order lifecycle tracking.

Role: Full Stack Developer
DjangoReactPostgreSQLPostGISRedisViteRazorpayGoogle Maps APIOpenAI API

About This Project

What I built and why

Fishlo is a production-grade B2C e-commerce platform built specifically for the fresh fish trade, designed to digitize traditional wet market operations at scale. The platform features a multi-store management system where each store manager operates an isolated dashboard with real-time inventory tracking (weight & piece-based), dynamic store-specific pricing with full price history, staff management, and a comprehensive Profit & Loss analytics module with COGS breakdown and expense auditing. The delivery infrastructure leverages PostGIS with MultiPolygon-based geospatial zones for hyper-local delivery eligibility, distance-based dynamic delivery charge calculation, and a batch-based delivery partner ecosystem with OTP-verified handoff, wallet management, and Firebase push notifications. Payment processing is handled through Razorpay integration with an automated reconciliation engine powered by Celery that detects missed callbacks, handles partial pre-order payments, and enforces configurable COD eligibility rules per store. The entire platform is containerized using Docker Compose orchestrating PostgreSQL (PostGIS), Redis, Celery workers & beat scheduler, Nginx reverse proxy with SSL, and Gunicorn — ensuring reliable concurrent order processing through PostgreSQL sequences and atomic transactions.

Key Features

What makes this project stand out

01

Built a multi-zone delivery management system using PostGIS with geospatial polygon-based delivery zones, distance-based dynamic delivery charge calculation, and batch-based order assignment with OTP-verified delivery confirmation and real-time status tracking across 8 order lifecycle stages.

02

Developed a multi-store management dashboard with role-based access control, real-time inventory tracking (weight & piece-based), dynamic store-specific pricing with price history, staff management, and a Profit & Loss analytics module featuring COGS breakdown, expense auditing with soft-delete, and period-over-period comparison charts.

03

Integrated Razorpay payment gateway with automated payment reconciliation via Celery scheduled tasks, handling edge cases like callback failures, payment timeouts, and partial pre-order payments — supporting UPI, cards, netbanking, and Cash on Delivery with configurable eligibility rules per store.

04

Engineered a delivery partner ecosystem with a dedicated partner app featuring wallet management (credit/debit/withdrawal workflows), batch accept/reject flows, Firebase Cloud Messaging push notifications for real-time order alerts, and comprehensive delivery logging for full audit trails.

05

Containerized the entire platform using Docker Compose orchestrating PostgreSQL (PostGIS), Redis, Celery workers & beat scheduler, Nginx reverse proxy with SSL (Certbot), and Gunicorn — handling concurrent order processing with PostgreSQL sequences and atomic transactions for data integrity.

Challenges & Solutions

Problems I faced and how I solved them

Challenges Faced

1

Replacing traditional zip-code delivery validation with high-precision, hyper-local geospatial eligibility checks for multi-zone fish delivery across different storage locations.

2

Handling payment callback failures where users complete Razorpay payments but the app never receives confirmation — leading to paid orders stuck in 'Pending' status.

3

Ensuring strict multi-store data isolation so that each store manager only sees their own inventory, orders, pricing, staff, and P&L analytics — without cross-store data leakage.

4

Managing concurrent order creation under high traffic without generating duplicate order numbers or causing race conditions in inventory stock deduction.

5

Orchestrating a complex 8-stage order lifecycle (Pending → Delivered) with batch-based delivery assignment, OTP-verified handoff, and real-time status sync across customer, store, and delivery partner interfaces.

My Solutions

1

Integrated GeoDjango and PostGIS with MultiPolygon-based delivery zones linked to storage locations, enabling precise Point-in-Polygon spatial queries with distance-based dynamic delivery charge calculation per zone.

2

Built an automated Payment Reconciliation Service using Celery scheduled tasks that polls Razorpay's order API, detects captured payments missed by callbacks, and atomically finalizes orders — with a 30-minute timeout auto-cancel fallback.

3

Implemented role-based store isolation by resolving the manager's StoreManagerProfile → StorageLocation FK, then filtering all backend selectors (inventory, orders, expenses, P&L) through this location context at the query level.

4

Leveraged PostgreSQL sequences (nextval) for atomic, lock-free order number generation (FL-YYMMDD-XXXX) with retry + UUID fallback, and deferred weight-based stock deduction to the Processing stage to avoid premature inventory conflicts.

5

Designed a state-machine order tracking system with DeliveryAssignmentBatch grouping, batch accept/reject flows, OTP-verified delivery confirmation via 2FA service, and Django signals triggering Firebase push notifications for real-time status updates across all user roles.