Platform Engineering Services

Platform engineering services from Keyhole Software include internal developer platforms, cloud-native infrastructure, DevOps pipelines, security, and observability. Empower your teams with scalable, automated platforms.

Mobile Application Security Scanning System Enhancement

Lauren Fournier Bogner Application Enhancement, GoLang, JavaScript, Mobile, Technology & SaaS, TypeScript

Keyhole Software’s expert software consultants played a crucial role in enhancing a sophisticated security scanning system for mobile applications, aiming to boost performance and stability for seamless developer interactions. The system, designed for both Android and iPhone apps, conducted synchronous and asynchronous security scanning through distributed Node.js services orchestrated by a Java Spring backend. The project involved intricate integrations with …

[.NET & JS] Sr. Consultant Contributions at Healthcare Client

Lauren Fournier Bogner .NET, Azure, Healthcare, JavaScript, Microservices, Mobile, React-Native

The project is undertaken for a prominent healthcare system situated on the East Coast of the United States. Keyhole Software has been a trusted consultancy for this organization since 2013, contributing expertise and resources to various departments within the system. The project experience detailed here spans the period from 2020 to 2024 and is representative of the valuable contributions made …

Multi-Dimensional Enterprise Architecture Transformation

Lauren Fournier Bogner Angular, Cloud, Education, Energy & Public Sectors, IT Strategy, Java, JavaScript, Modernization, Platform & Infrastructure

Keyhole Software played a crucial role in driving a comprehensive enterprise transformation at a government entity responsible for the oversight of agriculture and related programs. The highly-skilled Keyhole team focused on architectural enhancements, containerization, modernization, and the adoption of cutting-edge technologies to elevate the development practices. Key Achievements Containerization and Cloud Migration: Led by an expert Keyhole Software architect, the …

JavaScript Monorepos in 2024: Legit or Sus?

JavaScript Monorepos in 2024: Legit or Sus?

Zach Gardner Articles, Development Technologies & Tools, JavaScript, Programming, Tutorial 4 Comments

I’ve been developing JavaScript through all of the major existential changes we’ve had. Browser wars? I remember those. Trying to make a complex application before Firebug? Oh yeah, tell me about it. Having to roll my own AJAX request by hand? Vividly remember.

Something that I experienced in all of my large JS projects before the last few years was an eventual point of no return, a metaphorical event horizon, beyond which the amount of time it took to build the code locally as well as on the CI/CD system was just simply too long.

All projects start fine, but as they grow and evolve and change over time, the amount of build time seems to creep up until it becomes inimical to deploying and testing changes in any reasonable time frame. Further, it becomes very difficult to onboard new developers as any change they make is not isolated, and must take into account all of the other code in the app. Granted, frameworks and libraries like React do help to some extent, but there are no clean-cut boundaries on the source code with different features, it always had to be by convention.

It was during a project a few years ago that I finally put my foot down and decided that something needed to be done. Researching how other architects were doing it, I came across JavaScript monorepos. I was familiar with the concept of monorepos from my research on how Google structures their code base (they have two repos, one for YouTube and one for everything else, no joke), but had never thought to apply that same principle to JavaScript. So I dove in head first, made a lot of mistakes, iterated, and finally got to a place where I feel comfortable sharing my lessons learned.

This blog post is not an extensive study, but it is enough to get you interested in a way to solve two common problems we all have (i.e. sluggish build times and inability to effectively onboard new devs due to lack of feature separation), and give you enough of a context around how I approached the problem to determine how you should proceed.