Horilla is an open-source HRMS (Human Resource Management System) designed for organizations seeking full control over their HR operations without vendor lock-in. Built with Django, PostgreSQL, and HTMX, it provides end-to-end HR functionality—from recruitment to offboarding—while allowing self-hosting and deep customization. It’s ideal for small to mid-sized businesses, HR teams, and IT departments looking to replace expensive proprietary HR software with a transparent, modifiable alternative.
Horilla leverages Python and Django for backend logic, PostgreSQL for data storage, HTMX for dynamic UI interactions, and Bootstrap for responsive design. It supports Docker deployment and can be self-hosted on Ubuntu, Windows, or macOS. The system includes built-in biometric integration, payroll automation, and real-time attendance tracking with overtime and late/early-out detection.
What You Get
- Attendance Tracking - Automates employee check-in/out with biometric device integration, late/early-out detection, and overtime calculation using real-time timestamps.
- Biometric Integration - Connects directly with biometric hardware to capture and sync employee attendance data without manual entry.
- Recruitment Pipeline Management - Tracks candidates through stages (application → interview → offer) with customizable workflows and candidate self-tracking portal.
- Leave Management - Handles leave requests, accruals, policy enforcement, and approval workflows with configurable rules based on department, project, or duration.
- Payroll Automation - Calculates salaries, overtime, deductions, and tax liabilities based on attendance and leave records, reducing manual errors.
- Asset Management - Tracks company assets (laptops, phones, tools) with assignment history, status, and location logging for accountability.
- Onboarding & Offboarding Workflows - Automates document collection, equipment assignment, and access provisioning for new hires and exiting employees.
- Helpdesk Module - Provides internal ticketing system for HR-related support requests, enabling tracking and resolution of employee issues.
Common Use Cases
- Running a mid-sized manufacturing plant - A plant manager uses Horilla to sync biometric time clocks with payroll, automatically calculate overtime, and track attendance compliance across shifts.
- Managing a remote-first startup - An HR lead uses Horilla’s recruitment and onboarding modules to screen candidates, assign equipment, and schedule orientation—all without SaaS fees.
- Administering a government agency - An HR officer deploys Horilla on-premise to ensure data sovereignty while automating leave approvals and asset audits across departments.
- Scaling a retail chain with 200+ employees - A corporate HR team uses Horilla’s attendance and payroll modules to standardize time tracking across locations and reduce manual payroll processing time by 70%.
Under The Hood
Architecture
- Django-based MTV pattern with clear separation of models, views, and templates, supporting domain-specific query composition through custom filter and grouping utilities
- Modular app structure isolates concerns for assets, requests, and accessibility, though dependencies are resolved via direct imports rather than formal dependency injection
- Cross-cutting concerns like accessibility are handled via middleware and config classes, but the absence of a service or repository layer tightly couples business logic to the ORM
- Frontend asset compilation via Laravel Mix creates a structural mismatch with the Django backend, reducing architectural cohesion
Tech Stack
- Django with Python 3.10 serves as the core backend, leveraging its built-in ORM, admin interface, and middleware system
- PostgreSQL 16 is used as the production database, deployed in a containerized environment with Docker and SCRAM-SHA-256 authentication for security
- Docker multi-stage builds optimize image size and deployment, with volume-mounted code and health-checked database dependencies
- Frontend relies on lightweight libraries like Alpine.js, Select2, and jQuery UI, with Laravel Mix handling asset compilation despite the Django backend
- Pre-commit hooks enforce code style with Black, isort, and YAML validation, ensuring consistent formatting across the codebase
Code Quality
- Extensive test coverage spans unit, end-to-end, and visual regression tests, with robust Playwright and Jest suites validating complex UI states and RTL support
- Strong type safety and utility testing ensure reliable icon handling and naming conventions, with well-structured test utilities for state management
- Clean, descriptive naming conventions enhance readability across templates, JavaScript modules, and test files
- Frontend validation and HTMX-driven feedback provide responsive error handling, though backend error handling remains underdeveloped
- Test infrastructure is reusable and type-aware, enabling scalable E2E testing without heavy client-side dependencies
What Makes It Unique
- Real-time attendance tracking with embedded timers uses HTMX to enable seamless client-server interaction without a full frontend framework
- Drag-and-drop recruitment pipelines implement Trello-like functionality through server-side sequence persistence and inline AJAX updates
- A custom Ionicon system auto-maps kebab-case names to SVGs at runtime, eliminating external icon dependencies while maintaining flexibility
- Context-aware sidebar animations and UI states are managed with pure CSS and SCSS mixins, removing JavaScript dependency for visual transitions
- Role-based UI rendering via custom template tags dynamically adapts interface elements based on permissions, reducing client-side logic complexity and promoting server-side control