| 8.1 | Support section & tool request form | Add a "Support" section to the admin portal sidebar with a tool request form (tool name, description, URL, justification) that submits to a support-requests PostgreSQL table and sends a NATS notification to admins. | Users can submit a tool request; admins see the request in a management view; a notification is delivered to the admin notification feed. |
| 8.2 | Error handling & empty states | Audit every page and component for missing error handling. Add user-friendly error pages (403, 404, 500), inline error messages for failed API calls, retry buttons, and illustrated empty states for lists with no data (no domains, no scans, no messages). | Every API failure surfaces a clear message to the user (not a raw stack trace); empty lists show an illustration and a call to action; the 404 page renders for unknown routes. |
| 8.3 | Loading states & skeletons | Replace all spinner-only loading indicators with skeleton screens that match the shape of the content being loaded. Add shimmer animations and ensure skeletons appear within 100 ms of navigation. | Every page that loads data shows a skeleton placeholder before content appears; there is no layout shift when real data replaces the skeleton. |
| 8.4 | Performance optimization | Profile and optimize: enable Angular lazy-loading for all feature modules, tree-shake unused dependencies, compress images, add HTTP caching headers in the API Gateway, and tune PostgreSQL connection pooling. Run Lighthouse audits and address any score below 80. | Lighthouse Performance score is 80+ on the landing page and admin dashboard; Time to Interactive is under 3 seconds on a simulated 4G connection; bundle size is documented. |