Lessons from late founding a tech debt ridden online startup | Inverted Tree
Lessons from late founding a tech debt ridden online startup
April 7, 2025 · 16 min · Navdeep Saini
Note: This post was not reviewed/edited/written by any LLM/“AI”.
Prelude#
Prior to joining Widgetic I was a Java/Android developer turned Node.js / backend developer, had worked at a Swiss cryptocurrency startup as a backend/desktop developer, and had built more than a few MVPs in the years prior(mobile apps, electron apps etc but not a full stack application). At this point I was relatively inexperienced with web technologies and wanted to work at a product company to understand how these skills/eager learning attitude translated into the real world, especially in the challenging world of business/startups. I coveted more learning and responsibility, so when an opportunity came along to work at Widgetic, I was more than happy jump on it!
I joined Widgetic in 2019 as a backend/devops developer and employee no. 3 - the other two team members - an iOS turned frontend/javascript developer and a product manager. The team was fully remote with members in India(myself), Romania, and Spain. To protect their privacy, I have referred to my colleagues with their initials - AP(product manager) and AN.
Introduction#
Widgetic emerged at at a web development agency in Iasi, Romania after they received multiple requests by different clients for similar kinds of websites sections like image carousels, image hotspots, lightweight audio players, video players etc. They decided to call them widgets. Right from the get go, they understood that website builder platforms like Wix, Weebly, Shopify etc were open to third party “plugins” where the widgets could be sold for monthly/yearly subscriptions. With the semblance of a product emerging, the web agency was wound down and was left with 3 people - a product lead, a frontend developer and myself, a backend+devops engineer (at this point I only knew node.js / hapi.js / REST/ postgresql /linux and that was enough as far as requirements went for the role). Widgets were served as iframes to client websites and integrations with different website builders provided a way to customize the widgets and embed them directly onto the client platform generated websites via native/“raw” web builder interfaces.
Tech Debt: Origins and Lifecycle#
Nothing can be said about Widgetic without talking about the technical debt. As alluded to earlier, the antecedent to Widgetic was this web agency that decided to abstract out the frequent requests for same sort of functional websites into pluggable “widgets”. Since this was a relatively successful agency, they had a lot of interns coming in; who were eventually assigned the work of building these widgets, as a way of contributing and learning new frameworks. The interns were apparently given developer freedom to choose a framework, and interestingly, eventually all the codebases started diverging on framework/ library choice with the prevailing technologies of the time(circa 2014 iirc), including-
coffeescript
backbone.js
spine.js
svelte 1,2
angular 1, 2
react
As the widgets started materializing the agency owners were quick to start integrating with website builder platforms. However, these integrations were developed haphazardly, to reduce the time to GTM(as I reflected on this later, this was great choice business wise because they reached ramen profitability quickly). There was no architectural planning - interns/employees were building integrations and a dedicated veteran of the agency was assigned to build the “GCD” of the widget server, a massive monolith. Now all of this is far from ideal world of careful planning, architecting, securing and provisioning but this wasn’t a complete disaster too - things worked gracefully most of the time(we didn’t really measure the uptime but there was no significant downtitme either). Also, a dedicated app was created with an editor to help non integration users to create and configure widget specifications directly and then these be embedded on any html website from the embed code generated there. So, the backend integrations were created to ease the distribution on the web builder / ecommerce platforms, but with different node.js based micro applications that would basically implement oauth and other necessary functionality to bring these widgets to sale. Here’s what the comprehensive technical stack comprised of when I joined-
node.js + express.js/ hapi.js/ koa.js
php+symfony
mongodb 2.4.x/sqlite
Vagrant based dev env
Varnish cache
digitalocean
Unfortunately, the lead developer who had created the monolith backend left the agency after creating the meat of the system with proper tests and some decoupled documentation. This is the exact point in time that I joined. I had no idea what I was signing up for, never even had heard the...