TL;DR: Struggling to keep form validation and UI in sync in your React app? Here’s how I used Zod and React Hook Form together to define a single source of truth—driving both runtime validation and required field indicators in the UI. The Problem: When Validation Drifts from UI I’ve been writing forms for as long as I’ve been writing code—and …
Building Event-Driven Cloud Functions on Google Cloud Platform
Google Cloud Platform (GCP) offers developers and organizations the ability to create and deploy serverless Cloud Run functions. This code – whether it’s written in Node.js, Python, C#, or another language – can interact with other parts of GCP’s infrastructure. By default, the function is triggered by a basic HTTPS request. However, that is not our only option.
In this blog, we’ll introduce the concept of event-driven functions—a powerful way to automatically respond to changes across GCP services with minimal code. You’ll see how these functions can connect services like Cloud Storage, Firestore, and Pub/Sub, creating efficient workflows with less manual intervention…
Keyhole Named Top Software Development Firm in Kansas City By Clutch
Keyhole Software is pleased to share that it has earned multiple Clutch awards for 2025. Clutch, a leading B2B ratings and reviews platform, has ranked Keyhole among the top software development firms in Kansas City.
These accolades highlight Keyhole’s expertise across Kansas and Kansas City, including Top Software Developers, Top Staff Augmentation Company, and Top App Modernization Service. The firm also stands out in key technology areas, earning recognition as a top provider for .NET, Java, Node.js, and Vue.js development…
Implementing GitHub OAuth with NextAuth.js
In my last post, “Introduction to Web Apps with Next.js”, we went through the steps of setting up a new Next.js project, customizing a landing page, and implementing a very simple web application. In this post, we’ll implement an Open Authentication (OAuth) based Single Sign-On (SSO) API within Next.js using NextAuth.js. We’ll be using GitHub as our provider, but the steps here are very similar for other platforms, such as Google or Discord. This will allow us to place portions of our website behind a login screen, restricting access to certain content or APIs for anonymous visitors.
Web and Mobile Dev with Expo and Express
So, you want to develop a new website with spiffy apps on Android and iOS, and you want that website and your APIs to run in Node Express. It sounds like a lot of work to write the website in React (or Flutter or whatever the language de jour is), the Android app with Android Studio, and the iOS app with Xcode…





