Back to Projects

Logistics Platform

A two-sided freight and logistics SaaS marketplace connecting clients who need cargo shipped with transporters and trucking companies that provide transport services. The platform was built to manage the full shipment lifecycle, from shipment creation and bidding to payment, delivery confirmation, fleet operations, messaging, notifications, transporter discovery, public profiles, reviews, verification, and admin moderation.

SaaS PlatformLogistics MarketplaceFreight TransportReactTypeScriptStrapi v5PostgreSQLSocket.IOPaysera PaymentsOneSignalUX Design
Logistics Platform preview 1
Logistics Platform preview 2
Logistics Platform preview 3
Logistics Platform preview 4

Two-Sided Logistics SaaS Marketplace

2025

Frontend Developer / Full-Stack Product Builder / UX Designer

React, TypeScript, Strapi v5, Node.js, PostgreSQL, Socket.IO, Paysera, OneSignal, UI/UX Design

Overview

The Logistics Platform is a two-sided freight and logistics marketplace designed to connect clients who need cargo shipped with transporters, such as trucking companies and professional transport providers. The platform works as a logistics SaaS product where different user roles can manage shipments, offers, payments, tours, fleet operations, messaging, notifications, transporter discovery, public profiles, verification, trust signals, and administrative workflows in one centralized system.

The project was not only a simple transport dashboard. It was designed as a complete logistics marketplace with three user roles: client, transporter, and admin. Clients can create shipments, upload cargo details, receive offers, accept or reject bids, browse a public transporter directory, view transporter profiles with galleries and reviews, communicate with transporters, pay online or choose cash payment, track the shipment lifecycle, cancel shipments before pickup, report issues after pickup, leave star ratings with written review comments, block or report transporters, and archive shipments.

Transporters can browse a live shipment marketplace, place bids, manage platform jobs and manual offline jobs, organize tours, choose between full-load and multi-job tour types, assign drivers and vehicles, manage vehicles and service records, store IBAN and banking details in their company profile for payment processing, upload a profile gallery, communicate with clients, receive notifications, and build their reputation through completed jobs and reviews.

Admins can review transporter verification requests, manage reported shipment issues, manage profile reports through a status workflow, view support conversations, block or unblock users, and moderate platform activity.

The core idea was to reduce the fragmentation that often exists in logistics workflows. Instead of relying on phone calls, spreadsheets, disconnected payment flows, manual coordination, and separate fleet tools, the platform centralizes the entire process into one structured SaaS environment.

Core Concept

The core concept is a two-sided freight and logistics marketplace connecting clients who need cargo shipped with transporters, mainly trucking companies and transport providers.

The platform was built with a React and TypeScript frontend, a Strapi v5 backend based on Node.js, PostgreSQL for data storage, Socket.IO for real-time communication, Paysera payments for online payment processing, and OneSignal for push notifications.

The system includes three main user roles:

Client

The client is the user who needs cargo shipped. Clients can create shipments for cars or general cargo, add pickup and delivery addresses, upload photos and documents, describe packages, define transport preferences, receive bids from transporters, accept or reject offers, pay online or choose cash payment, communicate with transporters, track status updates, cancel shipments before pickup, report issues after pickup, leave star ratings and written review comments, and archive shipments. Clients can also browse a public transporter directory. The transporter directory allows clients to search transporters by name or company, sort by rating, completed jobs, or alphabetically, see verified status and block status, and click through to a full public transporter profile page. The full public transporter profile page shows company information, rating, completed jobs, gallery images, and reviews. From the transporter profile page, clients can start a direct message conversation, block the transporter, or report the transporter.

Transporter

The transporter is the trucking company or transport provider. Transporters can browse the live shipment marketplace, place bids with price, ETA window, and message, manage accepted jobs, confirm pickup and delivery steps, group multiple jobs into tours, choose between full-load and multi-job tour types, assign drivers and vehicles to tours, manage vehicles and service records, create manual offline jobs, manage driver hours and kilometers, communicate with clients, and build their reputation through completed jobs, ratings, and written reviews. Transporters can manage their company profile, including business information, verification documents, IBAN and banking details for payment processing, and a public profile gallery with multiple images visible on their public transporter profile.

Admin

The admin manages platform trust, safety, and moderation. Admins can approve or reject transporter verification requests, review uploaded company documents, provide rejection reasons, manage reported shipment issues, manage profile reports through the status workflow reported → under review → resolved, view all profile reports with status filters, block or unblock users, access support conversations, and manage users and profiles.

Goal

The goal was to design and build a scalable logistics SaaS platform that supports the complete workflow of a freight and logistics marketplace. The platform needed to be usable for both sides of the marketplace: clients who want a simple way to ship cargo, and transporters who need operational tools to manage jobs, fleet resources, drivers, offers, vehicles, tours, banking details, and company profiles.

A major focus was creating a clear structure for a complex product. The platform had to support many different workflows, including shipment creation, transporter discovery, public profiles, bidding, payment processing, cancellation logic, refund preparation, tour planning, full-load and multi-job tours, vehicle assignment, vehicle maintenance tracking, real-time messaging, notifications, verification, blocking, reporting, and admin moderation.

The goal was also to make the platform feel professional and trustworthy. Since logistics involves cargo, money, reliability, and timing, the user experience needed to support transparency, clear status updates, secure payments, transporter verification, reputation systems, written reviews, public profile galleries, company information, and strong role-based access control.

My Role

My role covered frontend development, product structure, UX design, and implementation of key platform workflows. I worked on translating a complex logistics marketplace into a structured digital SaaS experience.

On the frontend side, I worked with React and TypeScript to build role-based interfaces for clients, transporters, and admins. This included shipment views, marketplace screens, offer flows, transporter directory pages, public transporter profiles, gallery sections, review displays, messaging interfaces, notifications, payment-related screens, fleet and tour management areas, company profile settings, banking detail inputs, forms, dashboards, and status-based UI states.

From a UX perspective, I focused on making a complex product understandable. The platform includes many connected workflows, so it was important to design clear navigation, consistent page structures, reusable components, visible status indicators, trust signals, and workflows that guide users through each process.

The project also required thinking through marketplace logic: how clients and transporters interact, how offers are created and accepted, how transporter profiles support trust, how reviews and galleries affect credibility, how payment states change, how cancellations affect refunds and reputation, how blocked users are filtered, how tours combine platform shipments and manual jobs, how vehicles and drivers are assigned, and how admins manage trust and safety.

Tech Stack

The transport and logistics platform was built using:

  • React and TypeScript for the frontend
  • Strapi v5 backend with Node.js
  • PostgreSQL database
  • Socket.IO for real-time messaging and notifications
  • Paysera payment gateway integration
  • OneSignal push notifications
  • Cookie-based JWT authentication
  • Role-based route guards and API access control
  • Internationalization with English, Albanian, and German

Shipments

Clients can create shipments for car transport or general cargo. Shipment creation includes addresses, packages, photos, documents, and transport preferences.

The platform supports the full shipment status lifecycle: draft → open → assigned → in_progress → delivered → cancelled.

Clients can cancel before pickup with automated refund calculation and reputation impact.

Users can report an issue after pickup with proof uploads.

Shipments can also be archived.

Transporter Discovery & Public Profiles

Clients can browse a full public transporter directory.

The transporter directory allows clients to search transporters by name or company. Clients can sort transporters by rating, completed jobs, or alphabetically. Clients can see transporter verified status and block status, and click through to a full public transporter profile page.

The public transporter profile page includes company information, rating, completed jobs, gallery images, and written reviews. Transporter profiles include a gallery with multiple images, which helps build trust and credibility.

From the transporter profile page, clients can start a direct message conversation, block the transporter, or report the transporter.

Offers / Bidding

Transporters can browse a live shipment marketplace and place bids. Each bid can include price, ETA window, and a message.

The system enforces one active bid per shipment per transporter.

Clients can accept or reject offers.

Pickup and delivery confirmations are tracked per offer.

Payments

The platform includes Paysera payment gateway integration with signed requests and callback verification. This is not a Stripe integration — it is a custom Paysera gateway integration with signature verification and callback validation.

Online payments include a 4% platform fee, split between client and transporter.

The order lifecycle follows: pending → paid → refunded/cancelled.

The platform also supports a cash payment off-platform option with a risk disclosure modal.

Cancellation includes automated refund preparation with fee split logic based on who cancelled.

Transporters can store IBAN and banking details in their company profile for payment processing. The transporter company profile includes IBAN and cardholder name fields.

Tours & Fleet Operations

Transporters can group multiple jobs into tours. These jobs can include both platform shipments and manual offline jobs.

Transporters can choose between two tour types: full-load and multi-job.

The tour lifecycle follows: planning → assigned → in progress → completed.

Drivers and vehicles can be assigned to tours. Tour vehicle assignment includes vehicle information such as plate number, make, and model.

Transporters can manage their vehicle fleet, including truck information and service date tracking.

The platform includes automatic maintenance status detection and notifications when a vehicle is overdue for service. Automatic vehicle maintenance detection runs through a daily background job. Vehicle service history is logged.

Driver hours and kilometers can also be recorded.

Manual Jobs

Transporters can create their own offline jobs, meaning non-platform jobs that did not originate from the marketplace.

These manual jobs can be managed alongside platform shipments in the same workflow. This allows transporters to use the logistics SaaS platform not only as a marketplace, but also as an internal tour and operations planning tool.

Two types of jobs are supported in one workflow: platform shipments and manual offline jobs. Both can be managed in the same tour planner.

Messaging

The platform includes real-time conversation threads between client and transporter per deal.

Messages support attachment sharing and shipment-card sharing.

A dedicated platform support channel is automatically created for every user.

The messaging system includes unread badges and live WebSocket delivery.

Clients can start a direct message conversation from a transporter public profile page.

Notifications

The platform includes an in-app notification inbox for every major platform event, including offers, status changes, payments, messages, cancellations, verification updates, reports, tours, vehicle service reminders, and other operational events.

Real-time push notifications are delivered through Socket.IO while the app is open. OneSignal push notifications are used when the app is closed or on mobile.

The platform includes 18 distinct notification event types:

  • shipment_created
  • shipment_status_changed
  • offer_received
  • offer_sent
  • offer_accepted
  • offer_rejected
  • tour_created
  • pickup_confirmed
  • delivery_confirmed
  • driver_assigned
  • payment_approved
  • message_received
  • conversation_started
  • shipment_cancelled_by_client
  • shipment_cancelled_by_transporter
  • issue_reported
  • refund_processed
  • vehicle_service_due

User Verification, Trust & Reputation

Transporters go through a company verification workflow: document upload → admin review → approve/reject.

Verified transporters receive a verified badge on their profile.

Clients can leave star ratings and written review comments. The platform automatically recalculates transporter reputation scores.

Transporter reputation counters include: cancelled_by_client_count, unsuccessful_shipments, and completed_jobs. These counters are updated on every relevant event.

Users can block or unblock other users. Users can report a profile.

The marketplace is block-aware, meaning blocked transporters are filtered from the shipment feed.

Transporter public profiles include company information, verified status, rating, completed jobs, gallery images, and reviews.

Admin Tools

Admins can approve or reject transporter verifications and provide a rejection reason.

Admins can view and manage reported shipment issues.

Admins can manage profile reports through a structured status workflow: reported → under review → resolved. Admins can filter profile reports by status and see all profile reports.

Admins can manage all users and profiles.

Admins have full conversation visibility for support threads.

Admins can support trust and safety workflows through verification, issue review, profile reports, and user moderation.

Auth & Security

The platform uses cookie-based JWT authentication with httpOnly cookies and secure settings in production.

It includes forgot password and reset password flows.

It includes a CSRF token endpoint.

Production security headers are included, such as HSTS, X-Frame protection, XSS protection, and referrer policy.

The platform uses role-based route guards and API access control.

Role sync runs on startup and handles database migration repair automatically at boot.

Internationalization

The full UI is available in three languages: English, Albanian (sq), and German.

The multilingual setup is not only basic i18n keys. It covers all strings, including legal and payment-related copy.

Product & Engineering Highlights

These details are easy to omit in a portfolio write-up, but they were central to how the logistics SaaS platform behaved in production:

  • Paysera payment integration (not Stripe): custom gateway integration with signature verification and callback validation
  • Two job types in one workflow: platform shipments and manual offline jobs, managed in the same tour planner
  • Automatic vehicle maintenance detection through a daily background job
  • Role sync on startup, handling database migration repair automatically at boot
  • Block-aware marketplace logic: blocked transporters filtered from the shipment feed
  • Reputation counters (cancelled_by_client_count, unsuccessful_shipments, completed_jobs) updated on every relevant event
  • Multilingual interface in three languages, including legal and payment copy — not only translation keys
  • Transporter public directory: search by name or company, sort by rating / completed jobs / alphabetical, verified and block status, links to full public transporter profile pages
  • Full public transporter profiles: company info, rating, completed jobs, gallery, written reviews; actions to message, block, or report
  • Reviews: star rating plus written review comment
  • Profile gallery with multiple images on transporter public profiles
  • Tour types: full-load and multi-job; drivers and vehicles assignable to tours
  • Company profile: IBAN and cardholder name for payment processing
  • Profile reports for admins: reported → under review → resolved

Design Approach

The design approach focused on turning a complex logistics marketplace into a clear and usable SaaS product. Since the platform has different user roles and many operational workflows, the interface needed to be structured around clarity, status visibility, trust, and guided actions.

For clients, the experience needed to feel simple and trustworthy. They should be able to create a shipment, compare offers, browse transporter profiles, review company information, view gallery images and reviews, start a direct conversation, pay, and track progress without needing to understand the operational complexity behind the scenes.

For transporters, the interface needed to support more advanced workflows: browsing shipments, placing bids, managing accepted jobs, grouping work into tours, choosing between full-load and multi-job tours, assigning drivers and vehicles, managing vehicles, tracking service dates, creating manual offline jobs, managing company profile information, adding banking details, and uploading gallery images for their public profile.

For admins, the interface needed to support moderation, verification, profile report workflows, issue management, user management, and support visibility.

The design therefore used role-based structures, clear dashboards, status labels, trust signals, reusable UI components, and practical workflow layouts.

Technical Approach

The platform architecture was designed around a modern full-stack SaaS structure. The frontend was built with React and TypeScript, while the backend used Strapi v5 with Node.js and PostgreSQL.

Real-time communication was handled through Socket.IO, supporting live messaging, unread badges, real-time notification delivery, and conversation updates. OneSignal was used for push notifications when the app was closed or used on mobile.

Payments were integrated through Paysera, including signed payment requests and callback verification. This required more custom handling than a standard Stripe integration, especially around payment security, refund preparation, fee splitting, payment lifecycle states, transporter banking details, and callback validation.

The platform also included authentication and security features such as cookie-based JWT auth, CSRF token endpoint, production security headers, forgot/reset password, and role-based access control.

Operational logic included role sync on startup, block-aware marketplace filtering, automatic vehicle maintenance detection through a daily background job, reputation counter updates, tour planning with full-load and multi-job tour types, manual offline job support, profile report status workflows, and multilingual support for English, Albanian, and German.

Outcome

The result was a detailed full-stack SaaS marketplace for transport and logistics operations. The platform connects clients and transporters, supports the complete shipment lifecycle, includes bidding and payment workflows, enables real-time messaging and notifications, includes transporter discovery and public profiles, supports written reviews and galleries, and gives transporters advanced tools for tour planning, fleet management, vehicle maintenance tracking, driver logs, banking details, and manual offline job management.

The project demonstrates my ability to work on a complex SaaS product with multiple user roles, real-time functionality, payment integration, backend-driven workflows, internationalization, public marketplace discovery, trust and verification systems, admin moderation, and operational UX design.

It also shows my ability to think beyond simple frontend screens and understand how a digital product needs to function as a complete business system.

What I Learned

This project strengthened my experience in building complex SaaS platforms with multiple user roles and interconnected workflows.

I learned how to structure a marketplace product where clients and transporters interact through shipments, public profiles, offers, payments, messaging, reputation, reviews, galleries, and status changes.

I also gained experience with real-time systems, Paysera payment gateway integration, role-based access, transporter verification, public profile design, trust and reputation workflows, multilingual product design, fleet management, tour planning, vehicle maintenance logic, and operational tools for transport companies.

Most importantly, the project helped me understand how important product thinking is in software development. A platform like this is not only about writing code or designing screens. It requires understanding users, business workflows, edge cases, security, payment logic, operational risks, trust systems, moderation flows, and long-term scalability.

Client Role
Shared
Transporter Role