It's Friday. Why Not Learn TypeScript and Angular?
This morning, Chick-fil-A sweet tea in hand, I spent some time poking around the Ex Libris Developer Blog. With our NDE migration underway, it felt like a good time to see what the platform was starting to support.
Two posts, both from 2025, caught my attention: How to develop add-on for the NDE UI and Primo NDE: programming an add-on. Instead of the old customization package model, libraries can now build standalone components and load them directly into the interface. There are a million interesting possibilities there.
Naturally, I couldn't just read about it. I had to try it. Never mind that I didn't really know TypeScript or Angular. That seemed like a problem for later.
Skipping the traditional "Hello, World" route, I went straight for something I would actually want to use: a simple way for patrons to tell us whether their search worked. Analytics can tell us what people searched for and what they clicked, but not whether they actually found what they needed. A lightweight search satisfaction widget seemed like the perfect first experiment.
Getting the development environment running was the easy part, even with the learning curve. There’s a sound-quality-challenged YouTube video that walks through most of the high-level setup steps, and within a few hours I had an Angular add-on compiling, loading, and rendering in NDE.
Shockingly, the real challenge wasn't building the component. It was figuring out where the platform actually lets you put one.
That turned into a bit of a rabbit hole. I spent most of the day reading documentation, poking through the NDE source, digging through the DOM, and testing different extension points. Along the way, I learned a lot about how the add-on framework works, what Ex Libris officially supports, and what only appears to be possible. I also picked up a surprising amount of TypeScript and Angular along the way.
By the end of the day, I had a working component. The hook I used near the top of the search interface may not be an approved extension point. That’s probably a question for Ex Libris.
Still, I’m pretty excited about where this could go. The widget itself was never really the point. Understanding the extension model was.
And it turns out the example extension model is a pretty great crash course. If we can capture even a little direct feedback about search satisfaction, we’ll have something that analytics alone could never tell us: whether people actually found what they came looking for.
