Skip to content
Client projectPlatform · E-commerce · CRM/ERP

We Smoke Fish

Six apps, one system: from an order on your phone to smoked fish at your door.

Client
wesmokefish.md
City
Chișinău
Year
2026
Status
Live
We Smoke Fish — Platform · E-commerce · CRM/ERP
6apps in one platform
404API endpoints
94screens in the CRM/ERP panel
1 360test files
// Challenge

Challenge

We Smoke Fish smokes fish to order on the day of delivery and keeps no finished-goods stock. The old website, manual order intake, Syrve accounting and Telegram reports all lived apart: the operator copied data by hand, couriers phoned customers, and cash collected at the door was reconciled at the end of the day.

// Solution

Solution

We designed and built a platform of six apps that share one API contract. Customers order on the website or in the app and watch the courier on a map. Couriers build each run by scanning boxes. Operators, the production floor and accounting work in one panel: orders, delivery windows, inventory, recipe cards, purchasing, loyalty, 1C export.

// Project screens

Project screens

App: catalog with pack sizes and prices
App: real-time courier on the map
App: loyalty program and points
App: product page
Website: home page in the client’s brand style
Website: product page with weight selection
Website: delivery zone map
Google Play banner
// What we built

What we built

Online store

  • Nuxt 4 SSR in three languages with localized URLs
  • Every pack size (300 g, 500 g, whole fish) gets its own page with the final price
  • Delivery window picker that explains why a given slot is available
  • Address suggestions and a point check against delivery zone polygons
  • Real-time order status and a customer account with loyalty
  • SEO: JSON-LD, hreflang, sitemap, llms.txt, IndexNow; CSP and a BFF proxy

Customer app

  • iOS and Android on Expo: the catalog opens right away, sign-in only at checkout
  • SMS code sign-in, server-side cart, reorder and cancel
  • Live courier on a map built on our own OpenStreetMap tiles
  • Push notifications, an activity feed and “quiet hours”
  • Loyalty card with QR, points and tiers
  • Offline cache and over-the-air updates

Courier app

  • A shift is a chain of runs, and each run is built by scanning QR codes on boxes
  • Route and one-tap launch of an external navigation app
  • Background location, offline map and a command queue for dead zones
  • Handover confirmed only within the meeting point radius
  • The courier logs the payment method at the door, the server checks the amount

CRM + ERP panel

  • 26 modules and 94 screens: orders, delivery, catalog, inventory, purchasing, accounting
  • Live courier map and delivery zone editor
  • Versioned recipe cards with cost of goods, production and write-off records, month-end close
  • CRM: customers, loyalty program, newsletters and push campaigns
  • Sales analytics by channel, category and time
  • Roles and 45 permissions, staff 2FA, audit log
  • Voice assistant: operators control the panel by voice

Backend

  • NestJS: 25 modules, 404 endpoints, 153 PostgreSQL tables
  • Contract-first: clients for all five apps are generated from OpenAPI
  • Multi-tenant: fish and meat run as two companies on one installation
  • Realtime on Socket.IO + Redis, BullMQ queues, our own OSRM router
  • Integrations with Syrve, fiscalization, the maib terminal, SMS, 1C and RestData
// Outcome

Outcome

01

Customers, operators, the production floor, couriers and accountants work from the same data, and nobody re-enters orders by hand.

02

The “smoked to order, zero stock” model is built into the system: delivery windows, shelf life counted from delivery day, an order feed for the production floor.

03

The system counts the cash at the door: the courier logs the payment, the server checks the amount.

04

A live courier map and push notifications answer the “where’s my order?” question.

05

The in-house ERP (inventory, recipe cards, cost of goods, 1C) paves the way to drop the paid Syrve license.

// Stack

Stack

Nuxt 4Vue 3NestJS 11PostgreSQL 18Redis · BullMQSocket.IOExpo · React NativeElectronMapLibre · OSRMDocker · Cloudflare
// Integrations

Integrations

Syrve (iiko)FiscalTradeDXmaibSMS.MDExpo PushOpenStreetMapTelegram1СRestDataOpenRouter · Whisper
Next case →WeSmokeMeatTheir own till instead of someone else’s license: scale, card terminal, fiscal receipt and inventory in one program.
WeSmokeMeat

Want the same?

Tell us about your challenge — within 24 hours we’ll come back with a solution, timeline and launch plan.