1---2title: Enterprise compliance platform3slug: enterprise-compliance-platform4role: Frontend Developer5period: Jan 2026 – Present6company: Hashbyt7order: 28summary: Rebuilt a legacy AngularJS compliance application in Angular 19, with assessment and tracking workflows, KPI dashboards and a dark-mode theme.9stack:10 - Angular 1911 - Standalone components12 - NgRx Signals13 - AG Grid Enterprise14 - PrimeNG15 - Tailwind CSS16 - Lazy loading17 - Route guards18 - TypeScript19results:20 - 40% fewer API calls through caching and optimised state management.21 - Legacy AngularJS application rebuilt in Angular 19 with a redesigned UX.22 - Feature areas lazy-loaded and protected by role-based permission guards.23 - Custom PrimeNG theme preset built with Tailwind CSS, including dark mode.24cover: dashboard25capabilities:26 - modernisation27 - dashboards28industry: risk-compliance29---30 31## Problem32 33The compliance application was built in AngularJS. It needed a full rebuild in modern Angular with a redesigned UX, covering several assessment and tracking workflows, with access controlled by role. The screens pull a lot of data from the API, so the number of requests mattered.34 35## What I built36 37- Rebuilt the application in Angular 19 with a standalone architecture, lazy loading and role-based permission guards.38- Built assessment, tracking and reporting workflows powered by NgRx Signals.39- Built AG Grid Enterprise views with server-side pagination, master-detail rows and custom renderers.40- Built real-time KPI dashboards.41- Created a custom PrimeNG theme preset with Tailwind CSS and dark mode support.42- Cut API calls by 40% with caching and optimised state management.43 44<Diagram title="Application layers">45 <Layer name="Routes" detail="Lazy-loaded features, role guards" />46 <Layer name="UI" detail="PrimeNG + Tailwind, AG Grid master-detail" />47 <Layer name="State" detail="NgRx Signals stores with caching" />48 <Layer name="API" detail="REST, 40% fewer calls" />49</Diagram>