Because we had Voyage as an internal solution already, it didn't take that long to build a SaaS product around it. We likely went a little overboard on the features we added but because we're devs ourselves, and from our product experience, we felt like we couldn't launch without some of these features.
We ended up using React and Node.