Home How-to guides

How-to guides

Step-by-step guides for everyday tasks
By Ilija ฤ†uriฤ‡
โ€ข 8 articles

Configure Email

This guide covers email notification setup and management. SMTP Configuration Access Email Settings 1. Sign in as an admin 2. Navigate to Settings > Email Configure SMTP Server Fill in your SMTP server details: | Field | Description | Common Values | |-------|-------------|---------------| | SMTP Host | Mail server address | smtp.gmail.com, smtp-mail.outlook.com | | SMTP Port | Server port | 587 (TLS), 465 (SSL), 25 (unencrypted) | | Username | Authentication email | your-email@domain.com | | Password | SMTP password | App-specific password recommended | | From Email | Sender address | noreply@company.com | | From Name | Display name | CHRIS HR System | | Use TLS | Enable encryption | Yes (recommended) | Provider-Specific Setup === "Gmail" 1. Enable 2-factor authentication on your Google account 2. Create an [App Password](https://myaccount.google.com/apppasswords) 3. Use these settings: - Host: `smtp.gmail.com` - Port: `587` - TLS: Enabled - Username: Your Gmail address - Password: The 16-character app password === "Outlook/Microsoft 365" 1. Create an [App Password](https://account.live.com/proofs/AppPassword) 2. Use these settings: - Host: `smtp-mail.outlook.com` - Port: `587` - TLS: Enabled - Username: Your Outlook address - Password: The app password === "Custom SMTP" Consult your email provider's documentation for: - SMTP host address - Required port - Authentication method - TLS/SSL requirements Test Configuration 1. Click Send Test Email 2. A test email will be sent to your logged-in email address 3. Check your inbox (and spam folder) 4. If successful, you'll see a green confirmation !!! failure "Test Failed?" Common issues: - Wrong password (use app-specific password) - Incorrect port for TLS setting - Firewall blocking outbound SMTP - Account requires additional verification Email Templates View Available Templates Navigate to Settings > Email Templates: | Template | Trigger | Recipients | |----------|---------|------------| | Leave Request Submitted | New request created | Team leaders, HR | | Leave Request Approved | Request approved | Employee | | Leave Request Rejected | Request rejected | Employee | | Welcome Email | New employee created | New employee | | Password Reset | Password reset requested | Employee | Edit a Template 1. Click on a template to edit 2. Modify the content: - Subject: Email subject line - Body: HTML email content 3. Use placeholders for dynamic content 4. Click Save Available Placeholders Use these in templates with double curly braces: | Placeholder | Description | |-------------|-------------| | {{employee_name}} | Full name of the employee | | {{employee_email}} | Employee's email address | | {{leave_type}} | Type of leave requested | | {{start_date}} | Leave start date | | {{end_date}} | Leave end date | | {{working_days}} | Number of working days | | {{status}} | Request status | | {{approver_name}} | Name of person who approved/rejected | | {{comments}} | Approver's comments | Example Template <h2>Leave Request {{status}}</h2> <p>Dear {{employee_name}},</p> <p>Your leave request has been <strong>{{status}}</strong>.</p> <ul> <li>Type: {{leave_type}}</li> <li>Dates: {{start_date}} - {{end_date}}</li> <li>Working Days: {{working_days}}</li> </ul> <p>Decision by: {{approver_name}}</p> {{#if comments}} <p>Comments: {{comments}}</p> {{/if}} Email Rerouting Use email rerouting during testing to prevent sending to real users. Enable Rerouting 1. Go to Settings > Email 2. Toggle Enable Email Rerouting to on 3. Enter a Reroute Address (e.g., testing@yourcompany.com) 4. Click Save All notification emails will now go to the reroute address instead of actual recipients. When to Use Rerouting - Initial system setup - Testing email templates - Staging environment - Training sessions Disable for Production !!! warning "Remember to Disable" Before going live, ensure email rerouting is disabled so notifications reach actual recipients. Troubleshooting Emails Not Sending 1. Check SMTP credentials: Verify host, port, username, password 2. Verify TLS setting: Some servers require TLS, others don't 3. Check Edge Function logs: Supabase Dashboard > Functions > send-notification-email > Logs 4. Test with minimal settings: Try with a simple SMTP provider first Emails Going to Spam 1. Ensure "From Email" matches your domain 2. Set up SPF/DKIM records for your domain 3. Avoid spam trigger words in subjects 4. Use a reputable SMTP provider Template Variables Not Replacing 1. Check placeholder syntax: {{variable_name}} 2. Verify the variable exists in the template context 3. Check for typos in variable names Rate Limiting Some providers limit email frequency: | Provider | Typical Limit | |----------|---------------| | Gmail | 500/day | | Outlook | 300/day | | SendGrid | Varies by plan | For high-volume needs, consider a dedicated email service like SendGrid, Mailgun, or Amazon SES.

Last updated on Jun 12, 2026

Generate Reports

This guide covers viewing analytics and generating reports in CHRIS. Prerequisites - Admin or HR Manager role for full reporting - Employees can view their own statistics Dashboard Statistics Employee Dashboard The employee dashboard shows: - Leave Balance: Remaining days by leave type - Pending Requests: Count of awaiting approval - Recent Activity: Latest request updates - Team Calendar: Upcoming team leave (if assigned) HR/Admin Dashboard Additional statistics for HR and admins: - Total Employees: Active employee count - Pending Approvals: Requests awaiting action - Leave Overview: Organization-wide leave status - Team Coverage: Leave distribution by team Leave Reports View Leave Summary 1. Navigate to Reports > Leave 2. Select the date range 3. View summary statistics: - Total days taken by type - Approval/rejection rates - Average leave duration Filter Options | Filter | Options | |--------|---------| | Date Range | Custom, This Month, This Quarter, This Year | | Team | All teams or specific team | | Employee | All or specific employee | | Leave Type | All or specific type | | Status | All, Approved, Rejected, Pending | Leave Balance Report View remaining balances for all employees: 1. Go to Reports > Balances 2. Filter by team if needed 3. See: - Entitled days - Used days - Remaining days - Carryover days Export Data Export Leave Requests 1. Navigate to Reports > Leave 2. Apply desired filters 3. Click Export CSV 4. Download the file Exported columns: - Employee Name - Email - Leave Type - Start Date - End Date - Working Days - Status - Approved By - Request Date Export Employee Data 1. Go to Reports > Employees 2. Apply filters 3. Click Export 4. Choose format (CSV) Exported columns: - Name - Email - Role - Team - Position - Contract Type - Start Date - Leave Entitlement - Status Team Analytics Team Leave Overview For team leaders and HR: 1. Navigate to Reports > Teams 2. Select a team 3. View: - Total leave taken - Leave by type breakdown - Coverage calendar - Pending requests Coverage Calendar Visual view of team availability: - Green: Full coverage - Yellow: Partial coverage (some on leave) - Red: Low coverage (multiple on leave) Use this for: - Planning approval decisions - Identifying coverage gaps - Resource planning Audit Reports View Audit Logs Track changes made in the system: 1. Navigate to Settings > Audit Logs 2. Filter by: - Date range - Entity type (profiles, leave_requests, etc.) - Action type (create, update, delete) - User who made the change Audit Log Details Each log entry shows: | Field | Description | |-------|-------------| | Timestamp | When the change occurred | | Actor | User who made the change | | Entity Type | What was changed (profile, leave_request) | | Entity ID | Specific record ID | | Action | Create, Update, Delete | | Old Values | Previous state (for updates) | | New Values | New state | Export Audit Logs 1. Apply filters as needed 2. Click Export 3. Download CSV for compliance records Scheduled Reports Enable Email Reports Admins can configure automatic reports: 1. Go to Settings > Reports 2. Click Add Scheduled Report 3. Configure: - Report type - Frequency (daily, weekly, monthly) - Recipients - Filters to apply Available Scheduled Reports | Report | Description | |--------|-------------| | Weekly Leave Summary | Approved leave for the week | | Monthly Balance Report | All employee balances | | Quarterly Leave Analysis | Trends and patterns | | Low Balance Alert | Employees with < 5 days remaining | Custom Reports Using Filters Effectively Combine filters for specific insights: Example: Team coverage this month 1. Filter: Team = Engineering 2. Filter: Date Range = This Month 3. Filter: Status = Approved Example: Sick leave trends 1. Filter: Leave Type = Sick Leave 2. Filter: Date Range = Last 6 Months 3. View by month to see patterns Saving Filter Presets 1. Configure your filters 2. Click Save Preset 3. Name the preset 4. Access from the Presets dropdown Data Visualization Charts Available | Chart | Shows | |-------|-------| | Leave by Type | Pie chart of leave type distribution | | Monthly Trend | Bar chart of leave over time | | Team Comparison | Leave usage across teams | | Balance Status | Employees by remaining balance | Interpreting Data High pending requests: May indicate approval bottleneck Uneven team distribution: Some teams may have coverage issues Seasonal patterns: Plan for peak leave periods (summer, holidays) Best Practices Regular Reviews Schedule regular report reviews: - Weekly: Pending approvals, upcoming leave - Monthly: Balance status, team coverage - Quarterly: Trend analysis, policy compliance - Annually: Leave utilization, carryover management Data-Driven Decisions Use reports for: - Identifying employees with high unused leave - Spotting patterns in sick leave - Planning team capacity - Compliance auditing Data Retention - Leave request data: Keep for employment duration + legal requirements - Audit logs: Typically 7 years for compliance - Export and archive old data as needed

Last updated on Jun 12, 2026

Manage Employees

This guide covers adding, editing, and managing employees in CHRIS. Prerequisites - Admin or HR Manager role - At least one team created (for assignment) - Holiday scheme set up (for contract) Add a New Employee Step 1: Open Employee Form 1. Navigate to Employees 2. Click Add Employee Step 2: Enter Basic Information | Field | Required | Description | |-------|----------|-------------| | Email | Yes | Login email (must be unique) | | First Name | Yes | Employee's first name | | Last Name | Yes | Employee's last name | | Role | Yes | admin, hr_manager, or employee | | Team | No | Team assignment | Step 3: Set Role Choose the appropriate role: | Role | Capabilities | |------|--------------| | employee | Submit requests, view own data | | hr_manager | Above + approve any request, view all employees | | admin | Full access including settings | Step 4: Contract Details (Optional) | Field | Description | |-------|-------------| | Position | Job title | | Start Date | Employment start date | | End Date | Contract end (if applicable) | | Contract Type | Full-time, Part-time, etc. | | Leave Entitlement | Annual leave days per year | | Holiday Scheme | Which public holidays apply | | Rate Type | Hourly, Monthly, Yearly | | Rate Amount | Salary/rate value | | Currency | Payment currency | Step 5: Create Employee Click Create Employee. The system will: 1. Create the user account in Supabase Auth 2. Create the employee profile 3. Send a welcome email with login instructions !!! note "Email Delivery" Ensure SMTP is configured for the welcome email to be sent. View Employee List Navigate to Employees to see all employees: - Search: Filter by name or email - Filter by Role: Show only admins, HR, or employees - Filter by Status: Active or inactive employees - Sort: By name, email, or creation date Edit Employee Profile Basic Information 1. Click on an employee to view their profile 2. Click Edit 3. Modify fields as needed: - Name (first, last) - Email (requires re-verification) - Role - Team assignment 4. Click Save Contract Information 1. In the employee profile, go to Contracts tab 2. Click Edit Contract or Add Contract 3. Update contract details 4. Save changes Upload CV/Resume 1. In the employee profile, find Documents section 2. Click Upload CV 3. Select a PDF or document file 4. The file is stored securely in Supabase Storage Profile Photo 1. In the employee profile, click on the avatar 2. Upload an image 3. Crop as needed 4. Save Change Employee Role 1. Navigate to the employee profile 2. Click Edit 3. Change the Role dropdown 4. Save changes !!! warning "Role Change Effects" - Upgrading to admin: User gains full system access - Downgrading from admin: User loses settings access - The user may need to sign out and back in Deactivate an Employee For employees who leave or take extended leave: 1. Open the employee profile 2. Click Deactivate 3. Confirm the action Effects of deactivation: - Employee cannot sign in - Their data is preserved - Pending requests are cancelled - They don't appear in active employee lists Reactivate an Employee 1. Go to Employees with "Show Inactive" filter 2. Find the employee 3. Click Reactivate 4. They can now sign in again Reset Employee Password If an employee forgets their password: 1. Go to their profile 2. Click Reset Password 3. Choose delivery method: - Send reset email - Set temporary password 4. The employee can then set a new password Admin Masquerade Admins can view the system as any user: Enable Masquerade 1. As admin, go to Employees 2. Find the employee 3. Click View As (masquerade button) 4. You now see the system as that employee While Masquerading - A banner shows you're in masquerade mode - You see exactly what the employee sees - Your actions are logged as admin (not employee) Exit Masquerade Click Exit Masquerade in the banner to return to admin view. !!! tip "Use Cases for Masquerade" - Troubleshooting user-reported issues - Training employees on how to use features - Verifying permission configuration Delete Employee !!! danger "Permanent Action" Deleting an employee is permanent. Consider deactivation instead. 1. Open the employee profile 2. Click Delete Employee 3. Confirm by typing the employee's email 4. All data associated with the employee is removed Deleted data includes: - Profile information - Leave request history - Uploaded documents - Contract information Bulk Operations Import Employees For adding multiple employees: 1. Navigate to Employees > Import 2. Download the CSV template 3. Fill in employee data 4. Upload the completed CSV 5. Review and confirm the import Export Employee Data 1. Go to Employees 2. Click Export 3. Select format (CSV) 4. Download the file Best Practices Email Addresses - Use work email addresses for employee accounts - Ensure emails are unique in the system - Verify email format before saving Role Assignment - Start employees with minimal permissions - Elevate to hr_manager only if needed - Limit admin access to essential personnel Data Maintenance - Regularly review inactive employees - Update contracts when terms change - Keep holiday scheme assignments current

Last updated on Jun 12, 2026

Manage Holidays

This guide covers setting up and managing public holidays in CHRIS. Understanding Holiday Schemes Holiday schemes define which public holidays apply to employees. Different employees may have different schemes based on: - Country of employment - Office location - Contract type View Holiday Schemes 1. Navigate to Settings > Holidays 2. You'll see existing schemes listed: - Scheme name - Country - Year - Number of holidays Create a Holiday Scheme Step 1: Add New Scheme 1. Click Add Holiday Scheme 2. Fill in the scheme details: | Field | Description | Example | |-------|-------------|---------| | Name | Descriptive name | Croatia 2025 | | Country | Country code | HR | | Year | Calendar year | 2025 | Step 2: Add Holidays 1. After creating the scheme, click Add Holiday 2. Enter holiday details: | Field | Description | |-------|-------------| | Date | The holiday date | | Name (Croatian) | Holiday name in Croatian | | Name (English) | Holiday name in English | | Name (Russian) | Holiday name in Russian | | Name (Hindi) | Holiday name in Hindi | | Type | National, Religious, Regional | 3. Click Save 4. Repeat for all holidays Example: Croatian Holidays 2025 | Date | Name | Type | |------|------|------| | Jan 1 | New Year's Day | National | | Jan 6 | Epiphany | Religious | | Apr 20 | Easter Sunday | Religious | | Apr 21 | Easter Monday | Religious | | May 1 | Labour Day | National | | May 30 | Statehood Day | National | | Jun 19 | Corpus Christi | Religious | | Jun 22 | Anti-Fascist Day | National | | Aug 5 | Victory Day | National | | Aug 15 | Assumption | Religious | | Nov 1 | All Saints' Day | Religious | | Nov 18 | Remembrance Day | National | | Dec 25 | Christmas | Religious | | Dec 26 | St. Stephen's Day | Religious | Edit a Holiday Scheme 1. Click on the scheme to edit 2. Modify scheme details or individual holidays 3. Click Save Edit Individual Holiday 1. In the scheme view, find the holiday 2. Click Edit next to it 3. Update the details 4. Save changes Delete a Holiday 1. Find the holiday in the list 2. Click Delete 3. Confirm removal Duplicate a Scheme for New Year Rather than creating from scratch: 1. Select an existing scheme 2. Click Duplicate for Next Year 3. The system creates a copy for the following year 4. Adjust dates for holidays that vary by year (e.g., Easter) !!! tip "Variable Holidays" Some holidays change dates each year: - Easter (varies by lunar calendar) - Eid (Islamic calendar) - Chinese New Year (lunar calendar) Remember to update these dates annually. Assign Scheme to Employees Individual Assignment 1. Go to Employees 2. Click on an employee 3. In their profile/contract, select Holiday Scheme 4. Save changes Bulk Assignment 1. Navigate to Employees 2. Select multiple employees using checkboxes 3. Click Assign Holiday Scheme 4. Select the scheme 5. Confirm How Holidays Affect Leave Calculation When an employee submits leave: 1. System calculates total calendar days 2. Subtracts weekends (Saturday, Sunday) 3. Subtracts public holidays from their assigned scheme 4. Returns working days to deduct from balance Example Calculation Leave request: December 22-26, 2025 (5 calendar days) | Day | Date | Type | |-----|------|------| | Mon | Dec 22 | Working day | | Tue | Dec 23 | Working day | | Wed | Dec 24 | Working day | | Thu | Dec 25 | Holiday (Christmas) | | Fri | Dec 26 | Holiday (St. Stephen's) | Result: 3 working days deducted from balance Multiple Schemes Organizations with international presence may need multiple schemes: | Scheme | For | |--------|-----| | Croatia 2025 | Croatian office employees | | UK 2025 | UK office employees | | Remote - Croatia | Croatian remote workers | | Remote - US | US remote workers | Each employee is assigned one scheme matching their location/contract. Delete a Holiday Scheme !!! warning "Before Deleting" Ensure no employees are assigned to this scheme. 1. Navigate to the scheme 2. Click Delete Scheme 3. If employees are assigned, you'll be prompted to: - Reassign them to another scheme first - Or remove their scheme assignment Best Practices Scheme Naming Use clear, descriptive names: [Country] [Year] Examples: - Croatia 2025 - United Kingdom 2025 - Germany - Bavaria 2025 (regional) Annual Review At the start of each year: 1. Create new schemes for the coming year 2. Update variable holiday dates 3. Assign new schemes to employees 4. Archive or delete outdated schemes Regional Variations Some countries have regional holidays: - Create separate schemes for each region - Example: "Germany - Bavaria 2025" vs "Germany - Berlin 2025" - Assign based on employee's office location

Last updated on Jun 12, 2026

Manage Leave Requests

This guide covers common tasks for managing leave requests. For Employees Submit a Leave Request 1. Navigate to Request Leave 2. Select Leave Type from the dropdown 3. Choose Start Date and End Date 4. Optionally add a Reason 5. Click Submit Request The system automatically calculates working days, excluding weekends and public holidays. View Your Requests 1. Navigate to My Requests 2. Use filters to find specific requests: - By status (Pending, Approved, Rejected, Cancelled) - By date range - By leave type Cancel a Request You can cancel requests that are still pending: 1. Go to My Requests 2. Find the pending request 3. Click the Cancel button 4. Confirm the cancellation !!! warning "Cannot Cancel Approved Leave" Once a request is approved, you cannot cancel it yourself. Contact HR to revoke approved leave. Attach Documents For certain leave types (sick leave), you may need to attach documents: 1. When submitting, click Add Attachment 2. Upload the required document (PDF, images) 3. Submit the request For Team Leaders Review Team Requests 1. Navigate to Team Requests 2. You'll see all pending requests from your team members 3. Review the details: - Employee name - Leave type and dates - Working days requested - Current balance Approve a Request 1. Click on a pending request to view details 2. Review the employee's leave balance 3. Check for conflicts with other team members' leave 4. Click Approve 5. Optionally add a comment Reject a Request 1. Click on a pending request 2. Click Reject 3. Required: Add a comment explaining the reason 4. The employee will be notified with your feedback !!! tip "Common Rejection Reasons" - Insufficient notice period - Team coverage concerns - Project deadlines - Overlapping with other team leave For HR Managers View All Requests HR managers can see requests from all employees: 1. Navigate to Leave Requests (admin menu) 2. Filter by: - Team - Employee - Status - Date range Approve/Reject Any Request HR managers can approve or reject requests regardless of team: 1. Find the request in the list 2. Click to view details 3. Use Approve or Reject as needed Revoke Approved Leave To cancel leave that was already approved: 1. Find the approved request 2. Click Revoke 3. Add a reason (required) 4. The employee will be notified !!! note "Revocation Impact" Revoking leave restores the days to the employee's balance. Export Leave Data 1. Navigate to Reports > Leave 2. Set the date range 3. Choose export format (CSV) 4. Click Export Common Scenarios Half-Day Leave The current system tracks full days. For half-day leave: 1. Submit a note in the reason field 2. Coordinate with your team leader 3. The day will show as full but can be manually adjusted Leave Spanning Multiple Types If you need different leave types for consecutive days: 1. Submit separate requests for each type 2. Example: 2 days annual leave + 3 days sick leave Changing Dates on Pending Request 1. Cancel the existing pending request 2. Submit a new request with correct dates Viewing Team Calendar 1. Navigate to Dashboard 2. The team calendar shows approved leave 3. Use this to check for conflicts before requesting

Last updated on Jun 12, 2026

Manage Teams

This guide covers creating and managing teams in CHRIS. Prerequisites - Admin or HR Manager role - At least one employee created (to assign as team leader) View Teams 1. Navigate to Teams in the main menu 2. You'll see a list of all teams with: - Team name - Team leader - Number of members Create a Team Step 1: Open Team Creation 1. Click Add Team button 2. The team creation form opens Step 2: Enter Team Details | Field | Required | Description | |-------|----------|-------------| | Team Name | Yes | Descriptive name for the team | | Team Leader | Yes | Employee who will lead this team | | Description | No | Optional team description | Step 3: Select Team Leader 1. Click the Team Leader dropdown 2. Select from available employees 3. Only employees with active status are shown !!! info "Team Leader Permissions" Team leaders can: - View leave requests from team members - Approve/reject team requests - See team calendar and availability Step 4: Save the Team Click Create Team to save. Add Members to a Team From Team Details 1. Click on a team to open details 2. Click Add Member 3. Select employees from the dropdown 4. Click Add From Employee Profile 1. Navigate to Employees 2. Click on an employee 3. In their profile, select a Team from the dropdown 4. Save changes Bulk Assignment For multiple employees: 1. Go to Employees 2. Use checkboxes to select multiple employees 3. Click Assign Team 4. Select the target team 5. Confirm the assignment Change Team Leader 1. Navigate to Teams 2. Click on the team to edit 3. Click Edit Team 4. Select a new Team Leader from the dropdown 5. Save changes !!! note "Previous Leader" The previous team leader remains a team member unless you remove them. Remove Team Members Remove Individual Member 1. Open the team details 2. Find the member in the list 3. Click the Remove button next to their name 4. Confirm removal Move to Different Team Rather than removing, you can reassign: 1. Go to the employee's profile 2. Change their team assignment 3. They'll automatically be removed from the old team Delete a Team !!! warning "Before Deleting" Ensure all team members are reassigned to other teams first. 1. Navigate to Teams 2. Click on the team to delete 3. Click Delete Team 4. Confirm the deletion If the team has members, you'll be prompted to: - Reassign members to another team, or - Remove team assignment from members Team Hierarchy CHRIS supports a flat team structure where: - Each team has one leader - Employees belong to one team at a time - Team leaders report to HR/Admin For complex hierarchies, consider: - Creating department-level teams - Using naming conventions (e.g., "Engineering - Frontend") - Adding descriptions for clarity Best Practices Naming Conventions Use clear, consistent team names: | Good | Avoid | |------|-------| | Engineering - Backend | Team 1 | | Sales - EMEA | John's Team | | Customer Support | Support | Team Size For effective leave management: - Minimum: 2-3 members (for coverage) - Maximum: 15-20 members (for manageability) - Large departments can be split into sub-teams Team Leader Selection Choose team leaders who: - Are available to review requests promptly - Understand team workload and coverage needs - Can make fair approval decisions Troubleshooting Cannot Add Employee to Team - Verify the employee has an active status - Check that you have permission (Admin/HR role) - Ensure the employee exists in the system Team Leader Cannot See Requests - Verify the team leader assignment is saved - Check that team members are properly assigned - The leader may need to sign out and back in Duplicate Team Names While allowed, duplicate names can cause confusion: - Use descriptive, unique names - Include department or location if needed

Last updated on Jun 12, 2026

Manage Translations

This guide covers managing multi-language content in CHRIS. Overview CHRIS supports four languages: | Language | Code | Flag | |----------|------|------| | Croatian | hr | ๐Ÿ‡ญ๐Ÿ‡ท | | English | en | ๐Ÿ‡ฌ๐Ÿ‡ง | | Russian | ru | ๐Ÿ‡ท๐Ÿ‡บ | | Hindi | hi | ๐Ÿ‡ฎ๐Ÿ‡ณ | Translations are stored in the database and can be managed by administrators. How Translations Work Translation Keys Each translatable string has a key following the pattern: category.descriptiveName Examples: - common.save - "Save" button text - leaveRequests.submitRequest - "Submit Request" button - employees.addEmployee - "Add Employee" header Fallback Chain If a translation is missing: 1. Try the requested language 2. Fall back to English 3. Fall back to Croatian 4. Show the key itself View Translations Navigate to Settings > Translations: - See all translation keys in a table - Filter by category - Search for specific keys - View translations in all languages Edit a Translation Single Translation 1. Find the translation key in the list 2. Click Edit 3. Update the text for each language: - Croatian (required) - English (required) - Russian - Hindi 4. Click Save Tips for Good Translations - Keep translations concise for UI elements - Maintain consistent terminology - Consider text expansion (German is ~30% longer than English) - Test in the UI after saving Add a New Translation When adding new features that need translation: Step 1: Create the Key 1. Go to Settings > Translations 2. Click Add Translation 3. Enter the key following the naming convention: category.descriptiveName Step 2: Enter Translations | Language | Field | |----------|-------| | Croatian | Primary language, required | | English | Required | | Russian | Optional (falls back to English) | | Hindi | Optional (falls back to English) | Step 3: Use in Code Reference the key in React components: import { useLanguage } from '@/contexts/LanguageContext'; function MyComponent() { const { t } = useLanguage(); return <button>{t('common.save')}</button>; } Translation Categories Organize translations by category: | Category | Purpose | |----------|---------| | common | Shared UI elements (buttons, labels) | | auth | Authentication (login, logout, password) | | employees | Employee management | | leaveRequests | Leave request workflow | | teams | Team management | | settings | Settings pages | | holidays | Holiday management | | contracts | Contract management | | audit | Audit logging | | profile | User profile | Bulk Operations Export Translations Export all translations for review or backup: 1. Go to Settings > Translations 2. Click Export 3. Download the CSV file The CSV includes: - Key - Category - Croatian text - English text - Russian text - Hindi text Import Translations Update multiple translations at once: 1. Download the export CSV as a template 2. Edit translations in the CSV 3. Click Import 4. Upload the modified CSV 5. Review changes and confirm !!! warning "Import Caution" Importing overwrites existing translations. Always backup first. Database Structure Translations are stored in the translations table: | Column | Type | Description | |--------|------|-------------| | id | uuid | Primary key | | key | text | Unique translation key | | croatian | text | Croatian translation | | english | text | English translation | | russian | text | Russian translation | | hindi | text | Hindi translation | | category | text | Category for organization | | created_at | timestamp | Creation time | | updated_at | timestamp | Last update time | Adding a New Language To add a fifth language: Database Migration ALTER TABLE translations ADD COLUMN german TEXT; Update LanguageContext 1. Add the language to supported languages 2. Update the fallback chain 3. Add the language picker option Translate All Keys 1. Export existing translations 2. Add the new language column 3. Translate all keys 4. Import the updated file Best Practices Key Naming โœ“ common.save โœ“ leaveRequests.submitRequest โœ“ employees.roleEmployee โœ— save (too generic) โœ— submitLeaveRequest (inconsistent format) โœ— EMPLOYEES_ROLE (wrong case) Translation Quality 1. Native speakers: Have native speakers review translations 2. Context: Provide context for translators (where is this shown?) 3. Consistency: Use the same term for the same concept 4. Testing: Test translations in the actual UI Missing Translations Check for missing translations: SELECT key FROM translations WHERE russian IS NULL OR hindi IS NULL; Troubleshooting Translation Not Showing 1. Verify the key exists in the database 2. Check for typos in the key 3. Clear browser cache 4. Refresh the page Wrong Language Displayed 1. Check the language picker selection 2. Verify browser language preferences 3. Check the translation exists for that language Special Characters Ensure proper encoding: - Database should use UTF-8 - CSV exports should be UTF-8 - Hindi and Russian need Unicode support

Last updated on Jun 12, 2026

Understanding User Roles

A practical guide to what each user role can do in CHRIS. Role Overview CHRIS has three user roles plus a special team leader capability: | Role | Purpose | Who Uses It | |------|---------|-------------| | Employee | Basic access for all staff | All employees | | Team Leader | Employee + team management | Managers with direct reports | | HR Manager | Employee management | HR personnel | | Admin | Full system control | IT/System administrators | !!! note "Team Leader is not a role" Team Leader is a capability, not a separate role. An employee or HR manager becomes a team leader when assigned to lead a team. Employee Role The base role for all users. Every person in CHRIS has at least employee permissions. What Employees Can Do Dashboard & Profile - View personal dashboard with leave balance - Edit personal profile (photo, phone, emergency contact) - View personal leave calendar Leave Requests - Submit new leave requests - View personal leave history - Cancel pending requests - Attach documents to requests - View leave balance and entitlements Contracts - View own employment contract - Download contract documents What Employees Cannot Do - View other employees' profiles or requests - Approve leave requests - Access HR or admin settings Team Leader Capability Team leaders are employees who manage one or more teams. They have additional permissions for their team members. How to Become a Team Leader An employee becomes a team leader when: 1. A team is created 2. They are assigned as the team's leader 3. Team members are added to the team What Team Leaders Can Do Everything an employee can do, plus: Team Management - View team members' profiles - View team calendar showing availability - See who is on leave and when Leave Approval - View leave requests from team members - Approve or reject team member requests - Add comments when approving/rejecting Team Leader Scope !!! important "Team leaders can only manage their own team(s)" A team leader cannot approve requests from other teams. If they lead multiple teams, they can approve requests from all their teams. HR Manager Role HR managers handle employee administration across the organization. What HR Managers Can Do Everything an employee can do, plus: Employee Management - View all employee profiles - Edit any employee profile - Create new employees - Add HR notes to profiles - Upload employee documents Leave Management - View all leave requests (across all teams) - Approve or reject any leave request - Submit leave on behalf of employees - Revoke previously approved leave - View leave statistics and reports Team Management - Create and edit teams - Assign team members - Set team leaders Contract Management - View all contracts - Create new contracts - Edit existing contracts - Upload contract documents Reporting - View audit logs - Generate leave reports - View team analytics What HR Managers Cannot Do - Configure system settings (SMTP, company info) - Manage leave types - Manage holiday schemes - Access translations - Delete employees or teams - Masquerade as other users Admin Role Administrators have complete system access. This role should be limited to trusted IT personnel. What Admins Can Do Everything HR managers can do, plus: System Configuration - Edit company settings (name, logo, address) - Configure SMTP email settings - Manage leave types - Manage holiday schemes (by country/year) - Edit translations User Administration - Delete employees - Delete teams - Reset user passwords - Masquerade as any user (for troubleshooting) Full Data Access - View all audit logs - Access all system data - No restrictions on viewing or editing Masquerade Feature !!! warning "Admin-only feature" Masquerading allows an admin to view the system as another user. This is useful for troubleshooting but should be used responsibly. To masquerade: 1. Go to Employees 2. Click on an employee 3. Click View As button 4. System now shows what that employee sees 5. Click Exit Masquerade when done All masquerade sessions are logged for security. Role Comparison Chart Data Access | Data | Employee | Team Lead | HR Manager | Admin | |------|:--------:|:---------:|:----------:|:-----:| | Own profile | โœ… | โœ… | โœ… | โœ… | | Team profiles | โŒ | โœ… | โœ… | โœ… | | All profiles | โŒ | โŒ | โœ… | โœ… | | Own leave | โœ… | โœ… | โœ… | โœ… | | Team leave | โŒ | โœ… | โœ… | โœ… | | All leave | โŒ | โŒ | โœ… | โœ… | | Own contract | โœ… | โœ… | โœ… | โœ… | | All contracts | โŒ | โŒ | โœ… | โœ… | | Audit logs | โŒ | โŒ | โœ… | โœ… | Actions | Action | Employee | Team Lead | HR Manager | Admin | |--------|:--------:|:---------:|:----------:|:-----:| | Submit leave | โœ… | โœ… | โœ… | โœ… | | Approve leave | โŒ | โœ… (team) | โœ… | โœ… | | Create employee | โŒ | โŒ | โœ… | โœ… | | Delete employee | โŒ | โŒ | โŒ | โœ… | | Create team | โŒ | โŒ | โœ… | โœ… | | Edit settings | โŒ | โŒ | โŒ | โœ… | | Masquerade | โŒ | โŒ | โŒ | โœ… | Navigation by Role What you see in the navigation depends on your role: Employee Navigation ๐Ÿ“Š Dashboard ๐Ÿ“… My Leave ๐Ÿ‘ค My Profile Team Leader Navigation ๐Ÿ“Š Dashboard ๐Ÿ“… My Leave ๐Ÿ‘ฅ My Team ๐Ÿ‘ค My Profile HR Manager Navigation ๐Ÿ“Š Dashboard ๐Ÿ“… Leave Requests ๐Ÿ‘ฅ Employees ๐Ÿข Teams ๐Ÿ“„ Contracts ๐Ÿ“Š Reports ๐Ÿ‘ค My Profile Admin Navigation ๐Ÿ“Š Dashboard ๐Ÿ“… Leave Requests ๐Ÿ‘ฅ Employees ๐Ÿข Teams ๐Ÿ“„ Contracts ๐Ÿ“Š Reports โš™๏ธ Settings ๐Ÿ‘ค My Profile Best Practices Assigning Roles | Guideline | Reason | |-----------|--------| | Start with Employee role | Principle of least privilege | | Only HR staff need HR Manager | Limits sensitive data access | | Limit Admin to 2-3 people | Reduces security risk | | Assign Team Leader via teams | Automatic when leading a team | Role Changes If someone needs a different role: 1. Employee โ†’ Team Leader: Assign them as team lead in Teams management 2. Employee โ†’ HR Manager: Admin must change their role 3. HR Manager โ†’ Admin: Admin must change their role !!! tip "Role changes are logged" All role changes appear in the audit log for compliance tracking. Common Questions How do I know my role? Check your profile or look at the navigation menu. If you see Settings, you're an Admin. If you see Employees, you're at least HR Manager. Can someone have multiple roles? No. Each user has one role. However, an employee or HR manager can also be a team leader (which adds permissions). Can a Team Leader approve their own leave? No. Team leaders cannot approve their own leave requests. Those go to HR or the team leader's manager. What happens if a team has no leader? Leave requests from that team go directly to HR managers for approval.

Last updated on Jun 12, 2026