Seller2Go App

  • PHP/Laravel
  • Flutter
  • GoLang
  • Firebase
  • FCM
  • REST APIs
  • EU VAT
  • GDPR
  • Encryption
  • Push notification

Role: Lead Developer · DeinConsultant Timeline: 2024 – 2026 Stack: Flutter, Dart, async_redux, PHP/Laravel, Go, Firebase (FCM), REST APIs Links: Google Play · App Store · Seller2Go Web

Overview

Seller2Go is a mobile app for JTL-Shop and e-commerce merchants to manage orders, stock and multiple online stores from one place. It is used by 100+ merchants in Germany.

I led the full refactor of the Flutter app and its release on the App Store and Google Play, as well as the migration of our Go microservices to PHP/Laravel. I also contributed to building the custom PHP plugin that ingests and processes data from merchants' online stores.

What I built

Flutter app

  • Order, stock and multi-store management flows, tested on real iOS and Android devices
  • Shop onboarding by scanning a QR code, including camera permission handling on both platforms
  • Sales and store statistics dashboards built with fl_chart
  • Push notifications via FCM for new orders and stores going offline
  • App-wide state management with async_redux

Migration of Go microservices to PHP/Laravel

I led the move of our Go microservices into a single Laravel backend: I planned it, split the work into stages, and moved the services over one at a time while the app stayed live.

  • Rewrote the full DDD/CQRS Go codebase as a Laravel application following Laravel's standard MVC structure (routes, controllers, Eloquent models)
  • Rebuilt store data ingestion as queued Laravel jobs that process the payloads sent by each store's custom PHP plugin, with retries for failed syncs
  • One versioned REST API with token authentication, shared by the mobile app and the React web dashboard
  • Store offline detection as a scheduled Laravel task that sends FCM push notifications to merchants
  • Kept the existing API contracts, so the Flutter app and web dashboard needed no changes during the migration

Web dashboard

  • Added the Notifications Control and Shipment Tracker features to the React admin dashboard. See Seller2Go Web →

Challenges

Getting through Apple's review Seller2Go is a B2B product with paid licenses, and Apple's review process pushed back on how payments were handled. I moved signup and licensing to a web flow through our website. That got the app approved and avoided the 30% App Store commission.

Migrating from Go to Laravel without downtime Merchants used the app every day, so we couldn't switch everything over at once. I moved one service at a time behind the same API endpoints, checked the Laravel output against the Go service before switching traffic, and only retired each Go service once it matched.

Moving from CQRS in Go to MVC in Laravel The Go services followed Domain-Driven Design with CQRS, which split every feature into separate command and query paths. CQRS was new to me, so I first had to understand how each flow moved through those paths before I could migrate it. In Laravel I rebuilt the same logic on the framework's standard MVC structure, which keeps the backend simpler and familiar to any Laravel developer.

Compliance Merchants' order and customer data is personal data under GDPR, so we applied data minimisation on devices and in the Laravel backend, stored API keys and shop credentials in encrypted database columns, and added consent flows before syncing store data. License pricing on the web signup flow supports VAT-correct amounts for EU businesses.

Outcome

  • Live on iOS and Android since September 2025
  • 100+ merchants managing their stores from the app
  • Owned the product end to end, from mobile UI to backend integration