Igor Mazur

All projects

Shared navigation extension

One data-driven intranet menu, deployed once and served from configured entries, that site owners maintain themselves.

Role
Principal developer since 2022
Stack
SharePoint Framework, React, TypeScript, PnPjs
Type
Project, 10 of 17

The problem

Every intranet site wants a menu reflecting its own structure. The usual options are a menu maintained by hand per site, which drifts and which nobody updates, or a bespoke component per site, which means a separate codebase to patch for each one when something breaks.

What I did

One application customizer, deployed once, builds each site's menu in the browser from that site's own pages library: title, parent, sort order and icon. The menu is data owned by the site owner. Adding a page to it is filling in two columns; reordering is changing a number. No release, no ticket, no developer.

A colleague started it in 2021; I have been its principal developer since 2022. I replaced the first, flat pass with the recursive tree, onboarded the sites since then, including the one the legal knowledge-base migration depends on, and fixed rendering defects, including one that would have duplicated 111 menu entries on a newly onboarded site, caught before it shipped. Matching is by longest URL prefix, so other configured entries serve a wider set of department sites.

One onboarding took four changes, three of which shipped before the menu appeared, with no error message at any point. The extension simply rendered nothing. The fix that mattered was a fallback placeholder for site templates that lack the preferred one, so a missing injection point now produces a menu instead of a silent blank.

A decision and its cost

Parents are matched by title, not by identifier, so a site owner types a page name they can see instead of looking up an internal ID. The cost is that two pages with the same title are ambiguous and renaming a parent orphans its children. That is robustness traded for usability, made knowingly for an audience of non-technical site owners, and the mitigation is a convention, not a constraint.

  • Legal knowledge-base migration

    Moved a legal department's 1,029 knowledge articles, with attachments, images, topics and per-article permissions, out of a retiring helpdesk product into SharePoint.

    1,029 of 1,029 articles migrated

    Case study Sole author

    Python 3.12 · Microsoft Graph · MSAL · SharePoint Online

  • Internal newsletter builder

    Lets PR and HR staff compose and send branded newsletters from typed blocks, with no designer and no HTML. SharePoint Framework and React.

    77 releases

    Case study Principal developer

    SharePoint Framework · React · TypeScript · Fluent UI

  • Microsoft 365 platform ownership

    One of three administrators of a SharePoint and Microsoft 365 tenant for 7,000+ employees, and the person moving the company off mapped network drives.

    7,000+ employees on the tenant

    Case study One of three tenant administrators

    SharePoint Online · PowerShell · PnP · Microsoft 365

Contact

Warsaw
Office, hybrid or remote
Notice: three months

igor.j.mazur@gmail.com