New

Experience Smart HR with Horilla Mobile App

Google Play Store Google Play Store
Home / Blogs

Overview of Tech Stack and Recommended Practices in Horilla HRMS

Django
·

March 23, 2026

overview-of-tech-stack-and-recommended-practices-in-horilla-hrms

Horilla HRMS is a free, open-source Human Resource Management System designed for teams who want a whole HR system without being “locked-in” to a particular vendor. Knowing what drives Horilla HRMS, as well as how to use it properly, can save you headaches when implementing, integrating, and using the application.

Core application stack

At its heart, Horilla HRMS is a Python web application built on Django. The user interface is delivered through Django templates (not a separate single-page app), with static assets and a theme system so the product can stay visually consistent across modules.

The README highlights common front-end building blocks: HTML5, CSS3, Bootstrap, Tailwind  CSS(on v2), and Chart.js for charts and dashboards. That combination keeps the UI approachable for teams already comfortable.

APIs and authentication

Horilla uses Django REST Framework (DRF) to provide REST APIs. The API is authenticated via JWT with rest_framework_simplejwt, which is suitable for mobile clients, integrations, and scripts making HTTP requests to Horilla. API documentation is enabled via drf-yasg, which is a toolset for Swagger and OpenAPI, allowing developers to understand the API endpoints and test API requests properly.

For browser sessions, the project uses the standard Django auth stack, along with project-specific middleware, which includes company context, two-factor, and password strength, all built atop a custom user model (`horilla_auth.HorillaUser`).

Data layer

Out of the box, Horilla can run on SQLite, which is ideal for evaluation, demos, and small teams. For production workloads with higher concurrency, larger datasets, and safer concurrent writes, PostgreSQL is the usual recommendation.

Modern deployments typically rely on environment-based configuration (`django-environ`), including an optional DATABASE_URL style connection string when you want a single place to define credentials and host details.

Supporting services and cross-cutting concerns

Several packages underpin reliability and operations:

  • WhiteNoise serves compressed static files efficiently in many deployment setups.
  • django-cors-headers helps when browsers call Horilla from other origins (for example separate front-end tools or integrations).
  • django-simple-history and auditlog support change tracking and audit trails important for HR data.
  • django-apscheduler runs scheduled jobs inside the application process.
  • Optional modules such as LDAP (`horilla_ldap`) and integrations like WhatsApp extend enterprise and communication needs.

Internationalization is built in: Horilla ships with multiple languages enabled, and it’s expected that compilemessages will be run when you enable or update translations.

Recommended practices

  • Development and packaging: Use a Python virtual environment, install dependencies from the project’s `requirements.txt`, and keep secrets out of source control. Prefer a `.env file (or your platform’s secret manager) for `SECRET_KEY`, `DEBUG`, `ALLOWED_HOSTS`, `CSRF_TRUSTED_ORIGINS`, database settings, and email configuration.
  • Database: Use SQLite only where it matches your risk profile (trials, small teams, low concurrency). For production, choose PostgreSQL (or another supported server DB), run `makemigrations` / `migrate` on deploy, and plan backups. Horilla includes backup-related tooling you can align with your IT policy.
  • First-run and admin access: After migrations, create administrative access with the project’s `createhorillauser`** command (the Horilla-specific counterpart to Django’s `createsuperuser`), which ties an admin user to the employee model as intended by the product.
  • Static files and locale: Run `collectstatic` in production behind a real web server or platform that serves `/static/` correctly, and run `compilemessages` when you rely on translated UI strings.
  • Security: Treat HR data as sensitive. Enable HTTPS in production, tighten `ALLOWED_HOSTS` and `CSRF_TRUSTED_ORIGINS`, rotate secrets, and keep Django and Python dependencies patched. Check optional features like LDAP and API exposure to match your threat model.
  • Use the Horilla HRMS Documentation for installation documentation and more details

Horilla’s stack is Django-centric and integration-friendly: server-rendered HR workflows, a JWT-backed REST layer for automation, and a database story that scales from SQLite to enterprise engines. Add to that environment-driven config, a production-grade database, and security best practices, and you get a viable foundation for long-term HR operations on OSS.

Download Horilla HRMS from the App Store or Play Store and explore the free HR Experience In Your Hands.

Horilla HR Editorial Team Author

Horilla HR Editorial Team is a group of experienced HR professionals, HRIS consultants, and technical writers who are passionate about HR software. We have deep, hands-on understanding of the HR landscape — from hiring and onboarding to payroll compliance and workforce analytics — and are committed to providing our readers with the most up-to-date and accurate content. We have written extensively on a variety of HR software topics, including applicant tracking systems, performance management software, employee engagement tools, and payroll software. Our content is reviewed against real product capabilities and current compliance standards. We are always looking for new ways to share our knowledge with the HR community. If you have a question about HR software, please don't hesitate to contact us.