Trenova README

The project's README from github.com/emoss08/Trenova. As one markdown file: README.md.

Trenova logo

Trenova: Transportation Management System for Trucking Carriers

Source-available trucking TMS written in Go, PostgreSQL, GraphQL, and React.
Dispatch, rating, billing, accounting, EDI, FMCSA compliance, and document automation for asset-based carriers.

Website · Features · Pricing · Self-hosting · Discussions · Discord

TMS tests Client tests Latest release Go 1.26 License: FSL-1.1-ALv2

[!IMPORTANT] Trenova is pre-release software under active development. It is not yet suitable for production use. Follow releases or join the waitlist for updates.

What is Trenova?

Trenova is a transportation management system (TMS) for small and mid-sized over-the-road carriers in the United States. Enterprise TMS platforms often cost more than $50,000 a year, which puts them out of reach for the carriers that make up most of the industry. Trenova aims to close that gap with a flat-priced, self-hostable TMS that covers the full order-to-cash cycle: shipment entry, dispatch, driver assignment, rating, billing, settlement, accounting, and compliance.

The source is public under the Fair Source Functional Source License, so carriers and integrators can read the code, audit it, and run it on their own infrastructure.

Features

See the full capability list at trenova.app/features.

Tech stack

Layer Technology
API Go 1.26, Gin, gqlgen GraphQL
Database PostgreSQL via pgx, SQL-first migrations
Search and cache Meilisearch, Redis (JSON and Streams)
Change data capture GTC: a Go PostgreSQL logical-replication connector that projects rows into Meilisearch and Redis (runs as the ghcr.io/emoss08/gtc image; routing in deploy/gtc/sinks.yaml)
Web client React 19, TypeScript, Vite, GraphQL
Documents Gotenberg (PDF), MinIO / S3-compatible object storage
Deployment Docker images on GHCR, Caddy, Docker Compose

Repository layout

services/tms          Core TMS API (Go)
services/samsara-sim  Samsara telematics simulator for local development
services/edi-partner-sim  EDI trading-partner simulator
shared/               Shared Go packages (money, geo, dispatch planner, PC*MILER, AS2, ...)
client/apps/web       Web application (React)
client/apps/dash      Admin dashboard (React)
deploy/               Dockerfiles, Caddyfile, observability stack
docs/                 Engineering guides referenced by CLAUDE.md, Bun notes, product guide

Quick start (local development)

Prerequisites: Go 1.26+, Node.js with pnpm, Docker, and Task.

git clone https://github.com/emoss08/trenova.git
cd trenova
cp .env.example .env

# Start PostgreSQL, Redis, MinIO, Meilisearch, and Gotenberg
docker compose -f docker-compose-local.yml up -d

# Run the TMS API
task tms:run

# Run the web client
cd client && pnpm install && pnpm dev

Low-resource machines

If a build uses all your RAM and CPU, turn on low-resource mode. Go then compiles one package at a time on one thread and runs its garbage collector harder, golangci-lint and the test runners are capped the same way, hot reload waits 2 s after the last save, and docker-up starts only PostgreSQL, Redis, MinIO and Temporal. Builds take longer, but the machine stays usable.

export LOW_RESOURCE=true               # every task from now on (add it to your shell profile)
task tms:run-watch LOW_RESOURCE=true   # or a single command
task tms:docker-up-minimal             # just the minimal containers, in any mode

On Windows, setx LOW_RESOURCE true sets it for every new terminal.

LOW_RESOURCE_JOBS=2 allows two packages at a time with two threads each; that is a sensible setting on a 16 GB machine. Run only the client app you are working on (pnpm --filter @trenova/web dev) rather than pnpm dev, which starts both.

Run task list to see every available task. Agent-facing engineering guides live in docs/engineering. Operations runbooks, design notes, roadmaps and research live in trenova-documentation.

Self-hosting

Container images are published to GitHub Container Registry on every release:

Deployment files (Dockerfiles, Caddyfile, observability) are in deploy/. See trenova.app/self-hosted for the self-hosting overview. Trenova Cloud production servers use a separate private deployment repository that pins released image tags.

Contributing

Trenova is Fair Source for transparency and community review, but external code contributions are not accepted at this time so the core team can keep the architecture and roadmap consistent. You can still help by:

See CONTRIBUTING.md for details.

License

Trenova is licensed under the Functional Source License, Version 1.1, Apache 2.0 Future License (FSL-1.1-ALv2). You may use, self-host, and modify Trenova, including in commercial environments. You may not offer it as a hosted service or use it to build a competing product. Each release converts to the Apache 2.0 license two years after publication.

Trenova (emoss08/Trenova)

Searching Database…

What is this?Trenova is an open-source (Fair Source) Transportation Management System for small and mid-sized US trucking carriers, covering the full order-to-cash cycle: shipment entry, dispatch, rating, billing, accounting, EDI, and FMCSA compliance.
Is Trenova a SaaS product or something I run myself?It is self-hosted software you deploy on your own infrastructure (there is also a separate paid Trenova Cloud offering); the source code itself is public under a Fair Source license so you can read and audit it.
How do I get it running?For local development you clone the repo and use the Task-based workflow; for real deployment, prebuilt Docker images are published to GHCR (ghcr.io/emoss08/trenova/tms and .../client) along with Caddyfile and Docker Compose files in deploy/.
What do I need installed before I can run it?Go 1.26+, Node.js with pnpm, Docker, and the Task runner for local development; the stack itself also runs PostgreSQL, Redis, MinIO, and Temporal, which the docker-up task can spin up.
Is Trenova ready for production use?No — the README explicitly flags it as pre-release software under active development that is not yet suitable for production, and points interested users to follow releases or join a waitlist.
Who is this built for?Small and mid-sized over-the-road trucking carriers in the US who are priced out of enterprise TMS platforms that often cost tens of thousands of dollars a year.
What does the license actually let me do with it?Trenova uses the Functional Source License (FSL-1.1-ALv2): you can use, self-host, and modify it even commercially, but you can't offer it as a hosted service or build a competing product with it; each release converts to Apache 2.0 two years after publication.
What EDI transactions does it support?Trenova handles EDI 204, 210, 214, 990, and 997 partner workflows, along with telematics integration via Samsara, PCMILER for routing/mileage, and AS2 for transport.
What's the tech stack under the hood?A Go 1.26 API using Gin and gqlgen GraphQL, PostgreSQL via pgx, Meilisearch and Redis for search and real-time data, and a React 19 + TypeScript + Vite web client, with Gotenberg and MinIO/S3 handling document generation and storage.
How does real-time search and sync work?A custom change-data-capture tool called GTC reads PostgreSQL logical-replication changes and projects them into Meilisearch and Redis, powering real-time updates and search across the app.
What are similar projects?casdoor, twenty, skillhub, lightspeed, zitadel, WeKnora, jevbox, dockhand
Creator
emoss08
Size
590.5 MB
Stars
330
Age
3y
Commits · 90 Days