/ logistics

Live order tracking on Golang, open sourced by RoseRocket

This is a guest post by Alex Luksidadi CTO and co-founder of RoseRocket a Y Combinator backed transportation management system for trucking.

At RoseRocket we are building a modern transportation management system for trucking companies. Our product eliminates costly paperwork and data entry problems and simplifies dispatching and reporting for our customers. As a small team of 10 members working hard on bringing software efficiencies to an old-school and low-tech industry we want to focus on problems that are core to our stack. This implies using tools and infrastructure that would make our developers more productive as they build new features.

One of the most popular features is live order tracking. Our customers want to be able to see their fleet on a map along with an overview of ongoing pickups and deliveries. We chose to build this feature on HyperTrack.

What stood out for us was the ability to build custom visualizations for our customers by embedding HyperTrack views in our internal dashboards. HyperTrack’s phenomenal onboarding experience made it easy to pick up the building blocks and start building.

Built on Go

The RoseRocket backend is built on Go. We chose Go because it’s scalable: if PHP needs you to crank up 10 servers to support 1 million concurrent requests Go can do it in 1-2 servers. Go compiles to any modern architecture and can actually use all the processors of the machine. It helps that it is strong typed and easy to learn. Google uses Go in production.

As we were integrating the HyperTrack API with our Go application we figured that our code could be useful to other Go developers integrating with HyperTrack. Hence we are open sourcing the hypertrack-go library.

Order Tracking on Golang

Today we’re releasing hypertrack-go: a Golang library for interacting with the HyperTrack API. Now Go developers can easily integrate order tracking APIs with just four lines of code.

  1. Create a user
user err := client.CreateUser("John" "+16267777777" "http://your-photo-url" "user-lookup-id" "group-id")
  1. Create an action
action err := client.CreateAction("123 Fake St" "Toronto" "M5V 1C8" "Canada" "lookup-id" "pickup" "2017-06-02T18:14:04.481983Z")
  1. Assign action to user
user err := client.AssignActionToUser("user-id" []string{"action-id1" "action-id2"})
  1. Complete the action
action err := client.CompleteAction("action-id")

If you’re looking for more API support raise a pull request and we would be happy to add your contributions to the library.