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