Back to list

Nov 2025 – Present · Engineering · Logistics & Ops

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

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

StationOn · CEORuby on RailsVue 3TypeScriptPostgreSQLSidekiqRedisTailwind CSSCapacitorPlaywrightESP32SupabaseRender

Background

Running a fulfillment center, I needed a lot of tools — and nothing off the shelf matched how we actually worked.
Operating the floor myself, I 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.

Role

Product, backend, frontend, deployment, and hardware integration — built and operated solo. The real difference from
an off-the-shelf system was being able to ship a change the same day the floor asked for it.

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 fabric-cutting machines I built on ESP32 — 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 2025-11-20 — ~1,429 commits by a single developer