Back to projects
Mar 27, 2026
2 min read

Help Desk: Microsoft 365 Native Ticketing System

Built an open-source helpdesk application purpose-built for Microsoft shops, with Entra security group access control, Teams SSO, and Teams Activity Feed notifications.

Overview

Built a full-stack internal helpdesk application designed specifically for organizations running Microsoft 365 and Entra ID. It runs as a standalone web app or as a Microsoft Teams personal tab with automatic SSO, keeping the entire experience inside the tools a Microsoft shop already uses.

What Was Done

  • Built a monorepo with a React/TypeScript frontend, Azure Functions backend, and shared domain packages for types and validation
  • Implemented Microsoft Entra ID authentication with role-based access control via security groups, separating end users, staff, and admins
  • Integrated as a Microsoft Teams personal tab with automatic SSO so users authenticate without any additional login step
  • Added Teams Activity Feed push notifications for ticket updates alongside 30-second in-app polling
  • Built full ticket lifecycle management including inline field editing, bulk actions, per-ticket message threads, and file attachments via Azure Blob Storage
  • Implemented a recycle bin with 90-day soft-delete auto-purge to protect against accidental ticket loss
  • Added custom ticket status and category management, a staff directory, and an interactive Swagger API for admin use
  • Structured the backend on Azure Functions with PostgreSQL for production and an in-memory fallback for development, keeping local setup lightweight

Outcome

Delivers a helpdesk experience native to the Microsoft 365 ecosystem, removing the need for third-party ticketing tools while giving admins full control over access, categories, and team notifications through infrastructure they already manage.

Stack

React · TypeScript · Azure Functions · PostgreSQL · Azure Blob Storage · Microsoft Entra ID · Microsoft Teams · Vite · pnpm