An enterprise-grade verification platform built to streamline the processing of criminal record checks for a closed, access-controlled user group. The application serves as a centralised hub for batch monitoring, permission management, and verification result visualisation — handling sensitive applicant data with strict security and performance requirements.
This is a private platform. Access is restricted to users added by administrators and is not publicly available.
The challenge
The client needed a modern, secure dashboard to manage large volumes of sensitive applicant data across a high-security vetting workflow. The core problems to solve were:
- Visualising diverse verification statuses across thousands of records in a way that was immediately actionable
- Enforcing strict role-based access control so different user types saw only what they were permitted to see
- Tracking batch processing progress and failure rates in real time without performance degradation
- Keeping load times fast and data tables responsive even against large datasets
My role
I built the entire Next.js frontend — architecture, component system, data layer, authentication flow, and integration with the Django REST API backend.
Frontend architecture
The interface is built on Next.js 15 with the App Router and TypeScript throughout. Tailwind CSS and Shadcn UI provide the component foundation, with a mobile-first approach so stakeholders can monitor verification workflows from any device.
Data visualisation is handled by Recharts — pie, donut, and line charts give an at-a-glance view of batch status distribution and trends across configurable timeframes (today, month, year).
TanStack Table manages the data table layer — filtering, sorting, and pagination across large record sets without client-side performance issues. Forms throughout the application use React Hook Form with Zod schema validation, keeping validation logic consistent and type-safe.
Authentication & security
Authentication uses a JWT-based system with silent token refreshing — sessions stay alive without forcing re-logins during active use. Next.js Middleware handles secure routing, acting as a proxy layer between the frontend and the Django REST API so API keys and sensitive endpoints are never exposed to the client.
A granular RBAC (role-based access control) system lets administrators assign specific roles and access levels to both groups and individual users. Permission boundaries are enforced at the API and UI layer — users outside a permission scope do not see routes, actions, or data they are not entitled to access.
Key features
Interactive dashboard — system health overview with key statistics (total batches, active users, matched records, verified status) filterable by timeframe.
Batch management — search, track, and manage data batches with detailed per-batch status reporting across four states: Not Started, In Progress, Complete, and Failure.
Granular RBAC — admin-controlled permission assignment at group and individual user level, with role changes reflected immediately across the interface.
Data search and filter — powerful applicant and result search enabling fast lookup within large datasets, with column-level filtering via TanStack Table.
Responsive design — full functionality on mobile and tablet without layout compromise.
Results
| Area | Outcome |
|---|---|
| Operational efficiency | Automated batch tracking reduced manual oversight by 40% |
| Security compliance | Granular permissions ensured 100% alignment with data privacy standards |
| Perceived performance | Migration to Next.js App Router improved perceived load speed by 60% |
Stack
Next.js 15 TypeScript Tailwind CSS Shadcn UI Recharts TanStack Table React Hook Form Zod JWT Next.js Middleware Django REST Framework
Platform is restricted to closed user groups. Client details withheld.
