The Superthread Tech Stack: Why We Chose Go, NoSQL, and AI-Powered Vectors
Superthread founder David shares the evolution of their tech stack, from early Redis experiments to a high-performance AWS architecture featuring Golang, DynamoDB, and Vector databases.

Jan 24, 2024
|
David Hasovic
From Prototype to High-Performance Architecture
When I started coding the first Superthread prototype, I had one obsession: speed. I wanted the platform to feel instantaneous. Over the years, our stack has evolved from a solo-coded prototype into a robust, AI-ready system.
Here is the honest look at the tools we use, the mistakes we made, and the 'NoSQL-first' philosophy that keeps us fast.
The Backend: Why Golang is Our Core
I chose Golang because I saw it being used for high-intensity, low-latency compute tasks. It is a beautiful, simple, and functional language.
One of my biggest recommendations for early-stage founders is to prioritize 100% unit and integration test coverage. In the early days, this allowed me to move incredibly fast; if I broke something, the tests caught it immediately. Today, all our microservices, handling everything from boards to task cards, are written in Go.
The Database Evolution: Moving to NoSQL
Our database journey was a learning process.
The Redis Experiment: Initially, I used Redis not just for caching, but as our primary NoSQL database. While it worked for a small scale, it became difficult for new team members to manage custom indexing.
The AWS Pivot: After trying a commercial version of Redis that proved flaky, we moved to Amazon DynamoDB.
We are a pure NoSQL shop. Relational databases rely on joins, which eventually slow down as you scale to millions of records. By forcing ourselves to use DynamoDB, we ensure that whether you have ten tasks or ten million, Superthread loads at the same speed. We use DynamoDB Streams connected to SNS and SQS for our queuing and event-driven architecture.
The Frontend: Vue.js over React
On the front end, we use Vue.js. Back when I was making this choice, I found Vuex (Vue's state management) much more intuitive than React's Redux. Vue feels like it was designed with a 'non-programmer' logic that is much cleaner and easier to maintain.
We use JavaScript and TypeScript interchangeably:
TypeScript is our standard for complex systems like our document editor.
JavaScript is used for other, more straightforward parts of the interface.
The AI & Infrastructure Layer
We are currently phasing out Elasticsearch in favor of a more AI-centric search strategy.
Vector Search: We use Amazon RDS with the PG Vector add-on. When you create a card in Superthread, we perform a lookup in this vector database to identify duplicates or categorize the issue (e.g., bug vs. feature) based on our own trained models.
Orchestration: While I used Kubernetes for past projects with millions of users, we now use Amazon EKS to orchestrate our services. It’s stable and does the job without unnecessary complexity.
Edge Computing: We use Cloudflare Workers (Node.js) for edge-heavy tasks like resizing images, proxying Unsplash, and running Yjs for real-time collaborative editing.
Final Thoughts
Our tech stack is now incredibly stable, and we’re leaning even harder into our vector database to power the next generation of AI features. If you’re building for speed, my advice is simple: Automate your testing, embrace NoSQL, and don't be afraid to pivot your infrastructure if it's holding your team back.
Experience the speed of a high-performance workspace.
Built with Golang and NoSQL for teams that can't afford to wait. Sign up for Superthread for free