Case · 01 / 15 Armed Forces of Ukraine

HRM Personnel Management System

Full-featured HRM system for organizational personnel management

HRM – Staff and Position Structure module

This project was developed for a government organization. All personal data shown in screenshots is fictitious and used solely to demonstrate the interface. Any resemblance to real persons is coincidental.

01

About Product

Full-featured <a href="/en/hrm-systems">HRM system</a> (Human Resource Management) for a brigade-level military unit of the Armed Forces of Ukraine. The system fully replaced paper-based records and legacy solutions, providing real-time personnel tracking.

Full-cycle development – from DB architecture to production deployment. 11 Django apps, 12 frontend modules, ~80 API ViewSets.

~93KLines of Code
452Files
17Modules
80+API ViewSets
02

System Interface

Below are screenshots of the key system modules with test data. Actual personnel data is confidential and subject to non-disclosure.

03

Technology Stack

Backend

Python 3.12, Django 6 + DRF, Django Channels, Uvicorn (ASGI), PostgreSQL 16, Redis

Frontend

React 19, TypeScript (strict), Vite, Ant Design 5, TanStack React Query, React Flow, Recharts

Infrastructure

Nginx (reverse proxy + static), systemd, Let's Encrypt SSL, WebSocket (Django Channels + Redis)

Integrations

WhatsApp bot (Node.js), Google Sheets API (OAuth 2.0), DOCX document generation (python-docx)

04

Key Modules & Solutions

Organizational Structure

Flexible unit tree of unlimited depth (django-mptt). Interactive org chart (React Flow + Dagre auto-layout). Positional model: "slots" (positions) exist independently of people – vacancies, staffing table, career history.

Personnel Management

Employee card with fixed + dynamic fields (EAV constructor via UI). Multi-block status system with cascading rules. Full career history: assignments, transfers, promotions, temporary duties, deployments. Soft deletion – records are never deleted, only archived.

Timetable

Employee × days matrix with virtual scrolling. Mapping: status combinations → timetable symbol (configurable via UI). Three data sources: auto-fill, absence panel, manual input. Audit log for every cell change.

RBAC & Data Security

~30 granular permissions, dynamic roles via UI. 3-level data isolation: Django ORM (.for_user()), Middleware checks every API response, PostgreSQL RLS (Row-Level Security) as the last line of defense.

Document Generation

DOCX templates with placeholders → auto-fill data from DB. Batch generation for multiple people. 6 document types: vacations, business trips, medical, position handover, etc.

Reports & Integrations

Daily text report. Complex Excel export with formatting (openpyxl). Report builder (drag-and-drop). Google Sheets integration (OAuth 2.0, bidirectional sync). WhatsApp bot for mass messaging and automated notifications.

Real-time & Performance

WebSocket via Django Channels + Redis. Virtual scrolling for 500+ element lists. Server-side pagination, filtering, sorting. Monthly partitioning for high-load tables. Code splitting (React.lazy + Suspense).

Admin Panel

Online user monitoring. Server statistics (CPU, RAM, disk). Backup management (manual + automatic). System notifications, maintenance mode lockdown.

05

Architecture & Security

Headless architecture: Django serves exclusively as an API backend (no Django Admin, no templates). React SPA communicates via HTTPS and WebSocket. Three levels of data isolation guarantee that no user can access data outside their unit – even through raw SQL.

Frontend
React 19 SPATypeScript (strict)Ant DesignReact Query
HTTPS / WebSocket
Nginx
/api/* → Django/ws/* → Channels/* → Static SPA
Backend
Django 6 + DRFUvicorn (ASGI)Django ChannelsWhatsApp Bot
Data Layer
PostgreSQL 16 + RLSRedis

3 Levels of Data Isolation

1

Django ORM

Custom QuerySet with .for_user() on every ViewSet

2

Middleware

Checks every API response for data leaks, blocks and logs violations

3

PostgreSQL RLS

Row-Level Security – even raw SQL cannot return data outside allowed units

06

What Was Done

Full cycle of <a href="/en/services/custom-development">custom development</a>: system architecture and DB schema, Backend (<a href="https://www.djangoproject.com/" target="_blank" rel="noopener">Django</a> REST API, WebSocket, business logic, RBAC, RLS), Frontend (React SPA with 12 modules), DevOps (Nginx, systemd, SSL, production deployment), integrations (WhatsApp bot, Google Sheets API, document generation).

17 System Modules

Dashboard & Analytics
Organizational Structure
Staff & Position Structure
Combat Strength Table
Attendance Timetable
Absent Personnel
Excluded Personnel
Irrecoverable Losses
Arrived Personnel
Document Generator
Reports & Export
Combat Journal (JBD)
Building Orders
Kanban Task Board
WhatsApp Integration
Admin Panel & Backups
Roles & Permissions (~100+)
07

Frequently Asked Questions

Backend: Python 3.12, Django 6, Django REST Framework, Django Channels (WebSocket), PostgreSQL 16, Redis. Frontend: React 19, TypeScript (strict mode), Vite, Ant Design, TanStack React Query, React Flow. Infrastructure: Nginx, Uvicorn (ASGI), systemd. Integrations: WhatsApp bot (Node.js), Google Sheets API, DOCX document generation.

The system implements 3 levels of data isolation: 1) Django ORM with custom QuerySet manager (.for_user()) on every ViewSet, 2) Middleware that checks every API response for data leaks, 3) PostgreSQL Row-Level Security (RLS) on all unit-scoped tables. Additionally: CSRF protection, rate limiting, VPN-only access, HTTPS, CORS strict origins.

The project consists of ~93,000 lines of code across 452 files: Backend (Python/Django) – 167 files, Frontend (TypeScript/React) – 275 files. 17 functional modules, 80+ API ViewSets, 11 Django apps. Supports real-time WebSocket updates and concurrent multi-user access.

Yes, Artbrain specializes in custom HRM/ERP system development. We can build a tailored solution based on your organization's specific requirements. Contact us to discuss your project.

Start your journey to success

Have a project? Let's bring it to life together.

Need a similar enterprise HRM, ERP or custom system? Tell us about your task — we will reply within 4 working hours with a real estimate.

All cases
— Also

Other services

Cost calculator →
— Journal · insights

From our blog

All articles →
Call Telegram Viber WhatsApp