Full-Stack Distribution Platform

Ramtex

Built the Laravel API, the React operations dashboard and one Flutter app that changes by role for customers, field sales and drivers, then deployed the system and released the app on the App Store.

Role-based shortcuts across sales and inventory
Field-sales console for visits, clients and ordersDriver view for daily delivery runs
My role
Solo product engineer
Engagement
Independent client work
Current state
Live
Year
2026

The product

Ramtex is a complete B2B distribution platform for a tissue and paper-products manufacturer, connecting a Laravel API, React operations dashboard and one role-aware Flutter app. Customers browse the catalog and place orders, field-sales reps register shops and visits, and drivers manage daily delivery runs from the same mobile codebase.

The web dashboard runs products, brands, price lists, stock, clients, suppliers, staff, invoices, offers, returns, receipts and payments, alongside live sales maps and performance reports. I designed the system in Figma, deployed the API and dashboard, and released the mobile app to the iOS App Store.

Scan to open it on your phone

QR code: Ramtex — iOS app on App Store
App Store

Key decisions

Problem, decision, trade-off, result.

  1. Problem

    Orders, field visits, deliveries, stock and finance needed to live in one connected operating system instead of separate tools.

  2. Decision

    One Laravel API as the source of truth behind a React operations dashboard and a single role-aware Flutter app, so customers, field-sales reps and drivers each get their own journey from one codebase.

  3. Trade-off

    One app means one release to maintain, but every screen and endpoint has to enforce role permissions — role leakage, stale field data or a broken stock or finance transition would hit daily operations.

  4. Result

    Deployed for the client; the app is live on the App Store.

Delivery scope

What I built.

Planning a product like this?

Tell me what it has to do, who will use it and when it needs to ship.