Online store + integrated workshop, built from scratch for a Hero motorcycle dealership in Medellín.

The problem we solved

When a customer walks into Convergencia Motos with their Hero Xpulse, Splendor, or Hunk, there are two parallel needs:

  1. Buy parts or accessories — filters, spark plugs, helmets, cables, everything their bike needs.
  2. Leave the bike at the workshop — from an oil change to a full repair.

Most ecommerce platforms only solve the first. We built a platform that integrates both lines of business without the admin having to juggle 5 different tools.

┌─────────────────────────────────────────────────────────────┐
│                    CONVERGENCIA MOTOS                        │
├────────────────────────┬────────────────────────────────────┤
│                        │                                    │
│    ECOMMERCE           │    WORKSHOP (internal sub-app)    │
│                        │                                    │
│  • Hero catalog        │  • Bike intake                    │
│  • Cart + payments     │  • License scan (OCR)             │
│  • Order tracking      │  • Quote and diagnosis            │
│  • Email tracking      │  • Process photo gallery          │
│  • Wompi payments      │  • Chat with customer             │
│    (Nequi, card,       │  • Signed PDF work order          │
│     Bancolombia, PSE)  │  • Public view for customer       │
│                        │    (no login required)            │
└────────────────────────┴────────────────────────────────────┘

The ecommerce — what the customer sees

Buyer journey

 Landing → Catalog → Product → Cart → Checkout → Wompi Payment → Confirmation
    │          │          │         │         │            │              │
    │          │          │         │         │            │              ▼
    │          │          │         │         │            │        Email with
    │          │          │         │         │            │        tracking link
    └──────────┴──────────┴─────────┴─────────┴────────────┘
           Frictionless navigation, optimized for mobile

What makes this ecommerce different

Multi-method payments via Wompi

  • Credit / debit card
  • Nequi (async payment via push notification on the customer's phone)
  • Bancolombia Transfer
  • PSE (any Colombian bank)

Smart shipping

  • Dynamic rates configurable from the admin panel
  • Free shipping above a configurable threshold
  • Real-time quotes by city/department of destination
  • Zones with specific rates + Envia API integration

Order tracking experience

  • Customer receives an email with a unique link
  • Public tracking page — no login needed (works for guest purchases)
  • Auto-refresh while payment processes (critical for Nequi, which can take minutes)
  • Email notifications on each status change: paid, shipped, delivered

Live promotions

  • Configurable banners from admin
  • Product discounts with start/end dates
  • Configurable promotional popup for customers
  • Coupons with custom rules

Abandoned cart recovery

If a customer leaves products in the cart and walks away, they receive an automatic email reminder. Reduces abandonment and recovers sales that would have been lost.

The workshop — the internal sub-app

This is the part no standard ecommerce offers. The workshop team uses an app within the same domain but with its own flow, designed for day-to-day operations.

Bike intake flow

┌──────────────┐   ┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│   CUSTOMER   │   │   VEHICLE    │   │    ORDER     │   │   TRACKING   │
│              │ → │              │ → │              │ → │              │
│ • Details    │   │ • License    │   │ • Services   │   │ • Statuses   │
│ • Phone      │   │   photo      │   │ • Prices     │   │ • Process    │
│ • Email      │   │ • OCR auto-  │   │ • Digital    │   │   photos     │
│              │   │   fills form │   │   signature  │   │ • Chat       │
└──────────────┘   └──────────────┘   └──────────────┘   └──────────────┘

Features that accelerate workshop operations

License plate OCR scanning

Operator opens the order on desktop → a QR is generated on screen → operator scans QR with their phone → takes a photo of the registration document → Google Cloud Vision API reads the data (plate, engine, chassis, owner) → the desktop auto-fills the form in real time.

Eliminates 3–5 minutes of manual typing per bike and prevents transcription errors.

Public view for the customer

  • When the order is created, a unique link (UUID token) is generated
  • Customer opens that link from their phone — NO account needed
  • They see: current bike status, process photos, totals, digital signature
  • Can chat directly with the workshop from there

Process photo gallery

  • Mechanics upload before/during/after photos of the work
  • Customer sees them in their public view
  • Full transparency: the customer trusts because they see what's happening

Signed work order PDF

  • When the bike is received, a PDF is generated with all details + customer's digital signature
  • Archived as legal backup
  • Both parties have the document

Customer–workshop chat

  • The customer can ask questions from their public view
  • The mechanic replies from the workshop panel
  • Reduces phone calls and leaves a written history

Architecture — how it's built

We didn't use a closed SaaS platform. Everything is custom code, built to last and scale.

┌─────────────────────────────────────────────────────────────────┐
│                         FRONTEND                                │
│                 Next.js 14 + TypeScript + Tailwind              │
│                                                                 │
│   /                    /admin               /workshop           │
│   (public store)       (admin panel)        (workshop app)      │
└─────────────────────────────┬───────────────────────────────────┘
                              │
                        HTTPS / REST
                              │
┌─────────────────────────────▼───────────────────────────────────┐
│                          BACKEND                                │
│                   NestJS + TypeORM + JWT                        │
│                                                                 │
│   ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐       │
│   │  Orders  │  │ Payments │  │ Workshop │  │  Email   │       │
│   │          │  │  Wompi   │  │          │  │ (Resend) │       │
│   └──────────┘  └──────────┘  └──────────┘  └──────────┘       │
│   ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐       │
│   │Inventory │  │ Shipping │  │ Coupons  │  │ Reports  │       │
│   │(multi-   │  │ Dynamic  │  │          │  │  admin   │       │
│   │warehouse)│  │          │  │          │  │          │       │
│   └──────────┘  └──────────┘  └──────────┘  └──────────┘       │
└───────────┬─────────────────┬───────────────────┬───────────────┘
            │                 │                   │
   ┌────────▼────────┐ ┌──────▼──────┐   ┌────────▼────────┐
   │   PostgreSQL    │ │    Redis    │   │ Google Cloud    │
   │ (orders, prods, │ │ (cache +    │   │    Vision       │
   │  customers,     │ │  sessions + │   │  (license OCR)  │
   │  workshop)      │ │  OCR relay) │   └─────────────────┘
   └─────────────────┘ └─────────────┘

External services

Service Purpose
Wompi Payment gateway (cards, Nequi, PSE, Bancolombia)
Resend Transactional email delivery
Google Vision Registration document OCR
Envia API Nationwide shipping quotes
Seenode Hosting (staging + production)

Why custom and not a template?

A generic template (Shopify, Wix) would work for selling products. But it can't handle:

  • The workshop flow with OCR and digital signatures
  • Dynamic shipping rates by Colombian zone
  • Nequi and PSE payments integrated natively
  • Multi-warehouse inventory dashboard
  • Direct customer–mechanic chat

Building custom means the software adapts to the business, not the other way around.

Convergencia Motos

Parts and specialized technical service for Hero motorcycles.
Medellín · C. 50 #70-30, Laureles · Colombia

Visit convergenciamotos.com →