Back to list
Nov 2025 – PresentSoftwareFulfillment

StationOn ERP — Fulfillment, HR, and Sales in One System

Instead of buying the systems a fulfillment operation needs, we built them — outbound and inventory, attendance, payroll and contracts, and marketplace operations all run on one system.

Ruby on RailsVue 3TypeScriptPostgreSQLSidekiqTailwind CSSCapacitorPlaywrightESP32

Background

Running a fulfillment center, we needed a lot of tools — and nothing off the shelf matched how we actually worked.
Operating the floor ourselves, we moved each gap into software one at a time, until fulfillment, HR, finance, and sales
all ran on one system. The company runs on it today.

What it does

Fulfillment

  • The full flow: cutting prep → machine dispatch → packing → boxing → rack storage → outbound and inbound → returns
  • Barcode/QR labels for boxes and packages, with turnover and coverage statistics
  • Integration with our own ESP32 fabric-cutting machines — job dispatch, heartbeat-based offline detection, over-the-air firmware updates
  • Courier booking automation: a browser bot issues waybills and returns tracking numbers and PDFs

HR & finance

  • Attendance verified by GPS geofence and IP allowlist, with automatic clock-out
  • Payroll generation and payslip PDFs, severance calculated from ordinary and average wage, wage ledger
  • Leave requests, approvals, balances, and monthly automatic accrual
  • E-signature contracts (templates, provider sync, archiving to Google Drive), cash-flow and loan repayment tracking

Sales & catalog

  • Marketplace operations — listings, inventory, orders, returns, settlements, inquiries, and 3PL inbound/outbound
  • A product detail page generator and AI image generation across several providers
  • A separate public SPA for customers to search fabric, running on the same backend

How it was built

  • Ruby on Rails 8 API + Vue 3 SPA on PostgreSQL, with Sidekiq for background work
  • Multi-tenant, with tenant context carried per request
  • N+1 queries are blocked by default; every endpoint declares the preloads it needs
  • Role-based permissions, plus a second authentication step for sensitive screens
  • The admin app is wrapped with Capacitor for mobile use
  • Security scanning, static analysis, tests, and type checks all gate deployment in CI

Scale

  • ~274,000 lines of code, 159 tables, 302 migrations
  • 107 admin screens and 237 service objects
  • 434 logged releases
  • In development and production since November 2025