| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Discuss (mail) • Employees (hr) • Expenses (hr_expense) • Invoicing (account) • Payroll (hr_payroll) • Project (project) • Time Off (hr_holidays) • Calendar (calendar) |
| Lines of code | 4812 |
| Technical Name |
hr_ess_portal |
| License | LGPL-3 |
| Website | https://github.com/meet1432/hr-ess-portal |
Employee Self-Service Portal (ESS)
Modern Neo-Brutalist Employee Self-Service Portal for Odoo 19 Enterprise Edition
💡 Key Objectives
- Reduce Internal User License Costs — Portal users don't require Odoo internal user licenses, saving significant costs while maintaining full HR functionality
- Improve Employee Experience — Intuitive, self-service workflows reduce HR department burden
- Enhance Data Accessibility — Employees can access their HR data 24/7 without HR intervention
- Streamline HR Processes — Automated workflows for leave, attendance, and expenses
- Maintain Security — Enterprise-grade row-level security ensures data isolation
🎯 Core Features
📋 Leave ManagementRequest, track, and manage leave with approval workflows. View leave balance by type, refuse requests with notes, and automatic calculations. |
🕐 Attendance TrackingClock in/out directly from portal, view attendance history, and request attendance corrections with automatic worked hours calculation. |
💰 PayslipsDownload payslips as PDF, view payment history, and search records by date range for complete compensation transparency. |
💳 Expense ManagementSubmit expense claims with receipt attachments, track reimbursement status, and manage documentation securely. |
⏱️ TimesheetsWeekly timesheet calendar view with hourly logging by project and task. Quick-add buttons, modal editing, and submit for approval. |
📊 Projects & TasksBrowse active projects, view assigned tasks with priority, track progress, and filter by project for better work visibility. |
📈 DashboardLeave request status overview, pending approvals count, quick-action buttons, attendance indicators, and weekly hours summary. |
🎨 Neo-Brutalist DesignBold borders, minimal styling, high contrast typography, and mobile-responsive layouts for a modern user experience. |
✨ Why Choose ESS Portal?
- Clean Design — Neo-Brutalist aesthetic with intuitive navigation
- Mobile Ready — Fully responsive design works seamlessly on all devices
- Secure by Default — Row-level access control, users see only their data
- Developer Friendly — Built on Odoo 19 portal framework with clean, documented code
- Easy to Customize — Well-documented, modular architecture for easy extensions
- Cost Effective — No additional license costs for portal users
📋 Requirements
- Odoo 19 Enterprise Edition
- Python 3.8+
- PostgreSQL 12+
- Modules: base, portal, mail, hr, hr_attendance, hr_holidays, hr_expense, hr_payroll, account, project, hr_timesheet
⚙️ Technical Stack
|
Framework
Odoo 19 Portal
|
Frontend
OWL 3 + Vanilla JS
|
|
Database
PostgreSQL
|
Security
Row-level ir.rule
|
🔐 Security Features
- Portal-based role-based access control
- Row-level security rules per model
- Users see only their own records
- CSRF protection on all AJAX calls
- Input validation on backend
- HTML/JavaScript output encoding
- Strict domain filtering on queries
The screenshots below show the portal in action. The cover image is kept as a separate listing thumbnail asset.
📸 Screenshots
Dashboard
Quick overview of pending requests and key metrics
|
Leave Management
Request leave with approval workflow
|
Attendance Tracking
Clock in/out and track hours
|
Timesheets
Weekly calendar view with project tracking
|
Payslips
View and download payslips as PDF
|
Expense Management
Submit and track reimbursement claims
|
Projects & Tasks
Browse and track assigned work
|
Leave Calendar
Visual calendar with leave tracking
|
📚 Support & Resources
Documentation: Complete documentation, API endpoints, and customization guides are available on GitHub
Open Source: Fully open-source under LGPL-3 license with contribution guidelines
Community: Join our community on GitHub Discussions for questions and feature requests
Please log in to comment on this module