Logistics TMS is a multi‑tenant platform that automates every step of your transport workflow – from quoting and dispatching to real‑time GPS tracking, invoicing and payroll. Built with modern, cloud‑native technologies and a clean Domain‑Driven‑Design architecture, it scales from a single fleet to nationwide operations.
- Overview
- Live Demo
- Architecture
- Getting Started
- Tech Stack & Architecture
- Contributing
- License
- Contact
- Screenshots
Logistics TMS is purpose‑built for trucking fleets that specialise in moving large intermodal containers and finished vehicles. Whether you are shuttling 40‑foot high‑cubes from the port to inland depots or running multi‑deck car carriers across state lines, the platform gives dispatchers, drivers, and customers a single source of truth.
Logistics TMS targets trucking companies that want to replace error‑prone Excel workflows with an end‑to‑end digital system—automating load planning, invoicing, payroll, and more. The platform is composed of:
Layer | Apps & Services |
---|---|
Front‑end | Admin Web, Office Web, Driver Mobile |
Back‑end | Logistics API (REST), Identity Server (OIDC/OAuth 2.0), Real‑Time Hub (SignalR) |
Data | Multi‑tenant PostgreSQL (one master + tenant shards) |
All services are container‑ready and can be orchestrated on Kubernetes or run locally with .NET Aspire.
- Multi-Tenant Architecture: Separate databases for each company, allowing for isolated data management.
- Role-Based Access Control: Different roles for users, including super admin, owner, manager, dispatcher, and driver.
- Applications:
- Admin Web App: For super admins to manage users, tenants, and configurations.
- Office Web App: For owners, managers, and dispatchers to manage transport operations.
- Driver Mobile App: For drivers to manage their tasks and communicate with the office.
- Backend:
- Web API: Provides RESTful services for the applications.
- Identity Server: Manages authentication and authorization.
- Backend:
- Payment Integration: Supports Stripe for payment processing.
- Load Management: Allows dispatchers to create, manage, and track loads such as big containers, car loads, and other shipments.
- Employee Management: Manage employees, including drivers and their tasks.
- Notifications: Real-time notifications for drivers and office users.
- Payroll Management: Manage employee payrolls and payments.
- Analytics Dashboard: Provides insight into operations, including load statistics, driver performance, and financial metrics.
- GPS Tracking: Real-time GPS tracking of drivers and vehicles.
- Invoicing: Generate and manage invoices for loads.
- Trip Management: Manage trips, including start and end locations for trucks.
- Document Management: Upload and manage documents related to loads.
- Reporting: Generate detailed reports on loads, drivers, and financials.
- Mobile App Enhancements: Improve the driver mobile app with additional features like route optimization and offline capabilities.
- Integration with Third-Party Services: Integrate with other logistics and transportation services for enhanced functionality.
- AI-Powered Features: Implement AI-driven features for load optimization, route planning, and predictive analytics.
A live demo of the application is available at https://logistics-office.suxrobgm.net. Use one of the following test credentials to log in to the application:
Role | E‑mail | Password | Access |
---|---|---|---|
Owner | [email protected] |
Test12345# |
Office Web App |
Manager | [email protected] |
Test12345# |
Office Web App |
Dispatcher | [email protected] |
Test12345# |
Office Web App |
Driver | [email protected] |
Test12345# |
Driver Mobile App only |
Super Admin | [email protected] |
Test12345# |
Admin Web App only |
Note
The demo uses fake Stripe keys and sample data. Do not enter real payment information.
To run the Logistics TMS application locally, you need to have the following prerequisites installed on your machine:
- Download and install the .NET 9 SDK.
- Install Bun runtime to run an Angular project. Follow these instructions.
- Download and install the PostgreSQL database from here.
- (Optional) Install Docker to run the application in containers. Follow these instructions.
Note
If you prefer to run the application in containers, you can skip the steps related to installing dependencies and configuring the database connection strings. Instead, you can use the .NET Aspire app to run the application in containers in a single command. To do this, follow the instructions in the Running with Docker section below.
-
Clone this repository:
git clone https://github.com/suxrobgm/logistics-app.git cd logistics-app
-
Install Angular app dependencies:
cd src\Client\Logistics.OfficeApp bun install
-
Update database connection strings:
- Modify local or remote
PostgreSQL
database connection strings in the Web API appsettings.json and the IdentityServer appsettings.json under theConnectionStrings:MasterDatabase
andConnectionStrings:DefaultTenantDatabase
section. Update tenant databases configuration in the Web API appsettings.json under theTenantsConfig
section.
- Modify local or remote
-
Seed databases: To initialize and populate the databases, run the
seed-databases.cmd
script provided in the repository. Alternatively, you can run the Logistics.DbMigrator project to seed the databases. -
Run applications: Launch all the applications in the project using the respective
.cmd
scripts in the repository. -
Stipe CLI (Optional):
- If you want to test the Stripe payment integration, you need to run the Stripe CLI.
- First, get your Stripe secret key and publishable key from your Stripe dashboard.
- Update the Stripe keys in the Web API appsettings.json under the
StripeConfig:SecretKey
andStripeConfig:PublishableKey
sections. - The Stripe CLI is already included in the project, and you can run it using the provided listen-stripe-webhook.cmd script.
- After running the script, Stripe will provide you a webhook secret key, which you need to update in the Web API appsettings.json under the
StripeConfig:WebhookSecret
section.
-
Access the applications: Use the following local URLs to access the apps:
- Web API: https://127.0.0.1:7000
- Identity Server: https://127.0.0.1:7001
- Admin app: https://127.0.0.1:7002
- Office app: https://127.0.0.1:7003
-
Login to the applications: Use the test credentials in the Test Credentials section to log in to the applications. See the access column in the table to determine which app you can access with each role.
To run the application in Docker containers, follow these steps:
- Ensure you have Docker installed and running on your machine.
- Open a terminal and run the following command to build and run the Docker containers:
dotnet run --project src/Aspire/Logistics.Aspire.AppHost
Note
If you want to test payment integration, you need to obtain a Stripe secret key and update the Aspire appsettings.json file with your Stripe keys under the Stripe
section.
Also, you need to update the Web API appsettings.json with the same Stripe keys under the StripeConfig
section.
The Aspire app will automatically build the necessary Docker images and start the containers for the Web API, Identity Server, Admin app, Stripe CLI, and Office app. It will be accessible at the https://localhost:8100.
- .NET 9
- ASP.NET Core
- Entity Framework Core
- Deunde Identity Server
- FluentValidator
- MediatR
- PostgreSQL
- xUnit
- Moq
- Angular 20
- PrimeNG
- Blazor
- MAUI
- Firebase
- SignalR
- Docker
- CI/CD
- Bun
- Aspire
- Multi-Tenant Architecture
- Domain-Driven Design
- CQRS
- Domain Events
- Event Sourcing
- Unit Of Work
- Repository & Generic Repository
- Inversion of Control / Dependency injection
- Specification Pattern
The Logistics TMS application follows a Domain-Driven Design architecture with a focus on separation of concerns and modularity. The architecture consists of the following layers:
- Presentation Layer: Contains API host, Identity Server, and Database Migrator projects.
- Application Layer: Contains the core business logic, including services, commands, and queries.
- Domain Layer: Contains the domain entities, value objects, and domain events.
- Infrastructure Layer: Contains the data access layer and repositories.
- Client Apps: Contains the Angular and Blazor applications for the Office and Admin interfaces, as well as the MAUI application for the Driver interface, and the HTTP client library for API communication.
- Aspire App: The .NET Aspire app orchestrates the entire applications and services, allowing for easy deployment and telemetry.
Note
I am working on this project in my spare time, so I may not always be available. However, I am open to collaboration and contributions.
Pull requests are welcome – whether it is a bug‑fix, new feature, or doc tweak.
- Fork → Feature Branch → PR
- Follow the existing coding conventions.
If you would like to discuss a larger change, open an issue first or ping me directly.
This project is distributed under the Creative Commons Attribution-NonCommercial 4.0 International License license.
For commercial licensing, please contact me.
Created with passion by Sukhrob Ilyosbekov.
- E‑mail: [email protected]
- Telegram: @suxrobgm
Here is a sneak peek into the Office Application: