Comprehensive guide to all AutoClean features and capabilities.
- User Roles
- Admin Features
- Employee Features
- Recurrence System
- Time Tracking
- Inventory Management
- Reporting
- Settings
AutoClean has two primary user roles:
Full system access including:
- Station management
- User management
- Task and schedule creation
- Inventory management
- System settings
- All employee features
Limited access including:
- Dashboard view
- Clock in/out
- Task completion
- View assigned tasks
- Time reports
- View inventory
Purpose: Organize work by location or department
Capabilities:
-
Create Stations (
/admin/stations/create)- Name and description
- Active/inactive status
- Assign users to stations
-
Edit Stations (
/admin/stations/{id}/edit)- Update station details
- Modify assigned users
- Deactivate stations
-
View Stations (
/admin/stations)- List all stations
- View task counts per station
- View assigned employees
Use Cases:
Example 1: Multi-Location Cleaning Company
- Station: "Downtown Office"
- Station: "Airport Terminal"
- Station: "Shopping Mall"
- Assign specific employees to each location
Example 2: Department-Based Organization
- Station: "Restrooms"
- Station: "Kitchen Areas"
- Station: "Common Areas"
- Assign teams to different areas
Purpose: Automate recurring tasks and manage one-time tasks
Task Creation (/admin/tasks/create):
- Name: Task description
- Station: Where task is performed
- Due Date: When task should be completed
- Description: Detailed instructions (optional)
- From Template: Create from pre-defined templates
Task Schedule Creation (/admin/task-schedules/create):
- Name: Schedule name
- Station: Assigned location
- Frequency: daily, weekly, monthly, yearly
- Recurrence Pattern: Complex patterns (see Recurrence System)
- Start/End Date: Schedule duration
- Active Status: Enable/disable schedule
Features:
- ✅ Automatic task generation based on schedules
- ✅ Edit/delete existing tasks
- ✅ View all tasks across all stations
- ✅ Filter tasks by station, date, completion status
- ✅ Overdue task rollover (if enabled)
Purpose: Manage employee and admin accounts
Create Users (/admin/users/create):
- Name and email
- Role assignment (admin/employee)
- Station assignments
- Initial password setup
Employee Invitations (/admin/employee-invitations):
- Send email invitations
- Time-limited invitation tokens
- Track pending/accepted invitations
- Resend invitations
User Assignment:
- Assign users to multiple stations
- View user's assigned stations
- Remove users from stations
Features:
- ✅ Role-based access control
- ✅ Multi-station assignment
- ✅ Email-based invitations
- ✅ Secure password management
Purpose: Standardize common tasks for quick creation
Template Management (/admin/task-templates):
- Create reusable task templates
- Define default station (optional)
- Include description and instructions
- Quick task creation from templates
Use Cases:
Template: "Daily Cleaning Checklist"
- Vacuum floors
- Empty trash bins
- Sanitize surfaces
- Restock supplies
Template: "Weekly Deep Clean"
- Detail clean restrooms
- Floor mopping
- Window cleaning
- Equipment sanitization
Purpose: Track supplies and materials
Features:
-
Inventory Items (
/admin/inventory-items)- Create inventory items
- Set SKU (Stock Keeping Unit)
- Define units (bottles, rolls, boxes, etc.)
- Set minimum quantity thresholds
-
Station Inventory (
/admin/stations/{id}/inventory)- Assign items to stations
- Track quantities per station
- Low stock alerts
- Transaction history
-
Inventory Transactions
- Record stock movements (in/out/adjustment)
- Track who made changes
- Add notes to transactions
- Audit trail
Workflow:
1. Admin creates inventory item: "Paper Towels"
2. Assigns to stations with initial quantities
3. Employee uses supplies → records transaction
4. System alerts when quantity < minimum threshold
5. Admin restocks → records incoming transaction
Purpose: Configure application behavior
Settings Interface (/admin/settings):
-
General Settings
- Application name
- Default timezone
- Admin clock-in requirement
-
Task Settings
- Enable/disable overdue task rollover
- Task generation lookahead period
- Completion requirements
-
Email Settings
- SMTP configuration
- Email templates
- Notification preferences
Database-Driven Settings:
Settings stored in database and cached for performance. Accessed via settings() helper function.
Purpose: Review and manage employee time tracking
Features (/admin/time-logs):
- View all employee time logs
- Filter by date range, user, station
- Manually adjust clock in/out times
- Add/edit notes
- Delete invalid entries
- Export time data
Purpose: Central hub for daily tasks and activities
Components (/dashboard):
- Today's Tasks: Tasks due today at assigned stations
- Overdue Tasks: Past-due incomplete tasks
- Quick Clock In/Out: One-click time tracking
- Recent Activity: Recent task completions
- Station Summary: Overview of assigned stations
Features:
- ✅ Real-time updates via Livewire
- ✅ Task filtering and sorting
- ✅ One-click task completion
- ✅ Visual task status indicators
- ✅ Mobile-friendly responsive design
Purpose: Track work hours accurately
Clock In Process:
- Employee navigates to dashboard
- Selects station from dropdown
- Clicks "Clock In"
- Time log created with current timestamp
Clock Out Process:
- Employee clicks "Clock Out"
- Clock out timestamp recorded
- Duration calculated automatically
- Optional notes field
Features:
- ✅ One active session per employee
- ✅ Station-specific time tracking
- ✅ Automatic duration calculation
- ✅ Cannot clock in at multiple stations simultaneously
- ✅ Admin can configure if clock-in is required
Validations:
- Must clock out before clocking in again
- Cannot have overlapping time logs
- Cannot clock in to unassigned stations
Purpose: Mark tasks as completed
Completion Process:
- Employee views task list
- Completes physical work
- Clicks "Complete" on task
- System records:
- Completion timestamp
- User who completed task
- Marks task as completed
Additional Tasks: Employees can log additional tasks performed beyond scheduled tasks:
- Click "Add Additional Task"
- Enter task name and description
- Record completion
- Tracks extra work performed
Features:
- ✅ Quick one-click completion
- ✅ Completion confirmation
- ✅ Track who completed each task
- ✅ Log additional unscheduled work
- ✅ Cannot complete future tasks (configurable)
Purpose: View personal work history
Report Features (/employee/time-reports):
-
Date Range Selection: Custom date ranges
-
Summary Statistics:
- Total hours worked
- Number of shifts
- Average shift duration
- Tasks completed
-
Detailed View:
- Clock in/out times per shift
- Station worked
- Duration per shift
- Notes
-
PDF Export: Download reports for personal records
Use Cases:
- Weekly hour summaries
- Monthly timesheets
- Payroll verification
- Personal record keeping
Purpose: Automate task scheduling with flexible patterns
The RecurrenceCalculator service handles all recurrence logic.
Options:
- Every Day: Task occurs every single day
- Weekdays Only: Monday through Friday
Examples:
Daily Cleaning
- Start: 2025-01-01
- Frequency: daily
- Result: Task generated for every day
Weekday Cleaning
- Start: 2025-01-01
- Frequency: daily
- Days of Week: [1,2,3,4,5] (Mon-Fri)
- Result: Tasks only on weekdays
Configuration:
frequency: 'daily'
interval: 1 (every day) or 2 (every other day)
days_of_week: null (all days) or [1,2,3,4,5] (weekdays)Options:
- Specific Days: Select which days of week
- Even/Odd Weeks: Bi-weekly patterns
Examples:
Monday & Thursday Cleaning
- Frequency: weekly
- Days of Week: [1, 4] (Mon, Thu)
- Result: Tasks every Monday and Thursday
Bi-Weekly Cleaning (Even Weeks)
- Frequency: weekly
- Week Type: even
- Days of Week: [1] (Mon)
- Result: Task every other Monday (even-numbered weeks)
Configuration:
frequency: 'weekly'
days_of_week: [0,1,2,3,4,5,6] // 0=Sunday, 6=Saturday
week_type: null | 'even' | 'odd'
interval: 1 (every week) or 2 (every 2 weeks)Options:
- Specific Day Number: Day 1-31 of month
- Specific Weekday: e.g., "2nd Tuesday", "Last Friday"
Examples:
1st of Month Cleaning
- Frequency: monthly
- Day of Month: 1
- Result: Task on 1st of every month
2nd Tuesday of Month
- Frequency: monthly
- Week of Month: 2
- Day of Week: 2 (Tuesday)
- Result: Task on 2nd Tuesday each month
Last Friday of Month
- Frequency: monthly
- Week of Month: -1 (last)
- Day of Week: 5 (Friday)
- Result: Task on last Friday of month
Configuration:
frequency: 'monthly'
day_of_month: 1-31 // Specific day number
// OR
week_of_month: 1-4 or -1 (last)
day_of_week: 0-6 // Specific weekdayOptions:
- Specific Date: Month and day each year
Examples:
Annual Inspection
- Frequency: yearly
- Month: 6 (June)
- Day of Month: 15
- Result: Task on June 15 every year
New Year Cleaning
- Frequency: yearly
- Month: 1 (January)
- Day of Month: 1
- Result: Task on January 1 every year
Configuration:
frequency: 'yearly'
month_of_year: 1-12
day_of_month: 1-31Automated Process (via cron):
# Runs daily at midnight
php artisan tasks:generateProcess:
- Find all active schedules
- Calculate next occurrence dates using RecurrenceCalculator
- Generate tasks for next 30 days (configurable)
- Avoid duplicate task generation
- Update
last_generatedtimestamp
Manual Generation:
# Generate for specific number of days
php artisan tasks:generate --days=60Purpose: Handle incomplete overdue tasks
Automated Process (via cron):
# Runs daily at 1:00 AM
php artisan tasks:rollover-overdueProcess:
- Find tasks past due date that are incomplete
- Create new task for today
- Mark original task with rollover flag
- Limit maximum rollover count (default: 5)
Configuration:
Setting: TASK_ROLLOVER_ENABLED (true/false)
Max Rollovers: 5 (prevent infinite loops)
States:
- Not Clocked In: No active time log
- Clocked In: Active time log with
clock_out = null - Clocked Out: Time log completed with duration calculated
Rules:
- Employee can only have one active clock-in per station
- Must clock out before clocking in again
- Clock in/out timestamps are immutable (admin can edit)
- Duration calculated as:
(clock_out - clock_in) in minutes
// Automatic calculation on clock out
$duration = $clockOut->diffInMinutes($clockIn);
$timeLog->update([
'clock_out' => $clockOut,
'duration_minutes' => $duration
]);Data Included:
- Date and time of clock in/out
- Station worked
- Total duration
- Tasks completed during shift
- Additional tasks logged
- Notes
Export Formats:
- PDF: Formatted report with company header
- CSV: Raw data for spreadsheet import (future)
- Inventory Items: Global item definitions
- Station Inventory: Item quantities per station
- Inventory Transactions: History of all movements
IN: Adding stock
Example: Received 10 bottles of cleaner
- Type: in
- Quantity: +10
- Notes: "Weekly delivery"
OUT: Using/removing stock
Example: Used 2 bottles
- Type: out
- Quantity: -2
- Notes: "Daily cleaning supply usage"
ADJUSTMENT: Inventory corrections
Example: Found discrepancy during count
- Type: adjustment
- Quantity: +3 or -3
- Notes: "Physical count correction"
// Check if item is low at a station
if ($stationInventory->quantity < $inventoryItem->min_quantity) {
// Display warning
// Send notification (future feature)
}- Personal or all employees
- Date range selection
- Total hours, shifts, averages
- PDF export
- Tasks completed per station
- Employee productivity
- Completion rates
- Overdue task trends
- Usage patterns
- Low stock items
- Transaction history
- Reorder recommendations
Accessible via: /admin/settings
Categories:
- Application name
- Timezone
- Date/time formats
- Language (future)
- Admin requires clock-in
- Employee permissions
- Invitation expiration (days)
- Task rollover enabled
- Lookahead days for generation
- Require clock-in for task completion
- Allow future task completion
- Email notifications
- Low stock alerts
- Overdue task reminders
- Daily/weekly summaries
Settings stored in settings table:
// Get setting
$value = settings('key', 'default');
// Set setting (admin only)
$settingsService->set('key', 'value');Caching: Settings cached for 1 hour to reduce database queries.
- Email notifications
- Mobile app (PWA)
- Advanced reporting dashboard
- CSV export for all reports
- Task comments/notes
- Photo attachments for task completion
- Barcode scanning for inventory
- Multi-language support
- Custom fields for tasks
- API for third-party integrations
| Feature | Admin | Employee |
|---|---|---|
| View Dashboard | ✅ | ✅ |
| Create/Edit Stations | ✅ | ❌ |
| Create/Edit Tasks | ✅ | ❌ |
| Create Task Schedules | ✅ | ❌ |
| Manage Users | ✅ | ❌ |
| Manage Inventory | ✅ | ❌ |
| Clock In/Out | ✅* | ✅ |
| Complete Tasks | ✅ | ✅ |
| View Time Reports | ✅ (all) | ✅ (own) |
| Log Additional Tasks | ✅ | ✅ |
| System Settings | ✅ | ❌ |
| View All Time Logs | ✅ | ❌ |
| Invite Employees | ✅ | ❌ |
*Admin clock-in can be configured as optional
- Review User Guide for detailed usage instructions
- Check API Reference for component documentation
- See Development Guide to add new features
Navigation: ← Database Schema | Back to Documentation | API Reference →