A modern, fully-featured Android application for intelligent work shift scheduling and management, built with Kotlin and Jetpack Compose.
โจ Now with Dynamic Shift Templates - Create custom shifts tailored to your workplace!
Free to Use! This app is open-source and ready for anyone to use. Whether you manage a restaurant, retail store, hospital, or any business with shift workers - this tool is here to help you! โค๏ธ
WorkSchedule was developed as a complete solution for shift management challenges. The app provides intuitive manual scheduling with smart blocking and customizable templates, offering the flexibility needed for real-world scenarios.
Looking for opportunities: I'm Hananel Sabag, a Software Engineering graduate actively seeking development positions. This project demonstrates my skills in Android development, clean architecture, and modern UI/UX design. Feel free to reach out!
- Fully Customizable Shifts - Define your own shift names, hours, and days
- Flexible Table Configuration - Choose 2-8 shifts and 4-7 working days
- Easy Template Management - Edit and update your shift template anytime
- Automatic Migration - Seamlessly upgrades from previous versions
- Add, edit, and delete employees
- Shabbat observer support (automatic blocking of Shabbat shifts)
- "Mitgaber" status for temporarily unavailable employees
- Clean and intuitive interface
- Regular blocking (Cannot) - Mark shifts when employees are unavailable
- Can-Only blocking - Mark only the shifts employees are available for
- Automatic blocking for Shabbat observers
- Prevention of mixed blocking types per employee
- Clear warning messages and override options
- Generic AI-powered algorithm - Works with any custom shift template
- Dynamic time-based logic - Handles overlaps, rest periods, and shift conflicts
- Respects all blocking rules - Cannot blocks, Can-Only blocks, and Shabbat observer auto-blocks
- Employee property support - Mitgaber employees assigned last, maximum hours per day (12h)
- Conflict detection - Prevents night-to-morning assignments and same-day overlaps
- Fair distribution - Balances shifts across employees
- Smart scoring system - Considers rest periods (8+ hours preferred) and workload
- Manual employee assignment to shifts
- Free text support (notes, custom hours)
- Smart blocking with override confirmation
- Auto-save draft system
- Continue from where you left off
- Detailed shift table with zoom capabilities
- Direct cell editing
- Advanced Statistics:
- Shift count per employee
- Smart weekly hours calculation
- Free text support (custom hours detection)
- Automatic employee name recognition from text
- Export to image (PNG) with your custom shift template
- Export to CSV/Excel format
- Direct sharing via WhatsApp and other apps
- Beautiful formatted text output
- Full RTL support for Hebrew
- Automatic schedule saving
- Complete history of all schedules
- Rename, edit, and manage existing schedules
- Delete and override schedules
- Smart Draft System:
- Auto-save when exiting the app
- Opens in the correct screen (blocking/manual)
- Auto-delete when schedule is completed
- Modern UI with Material Design 3
- Beautiful redesigned History screen with modern card design
- Centered empty states with elegant visuals
- Full RTL support (Hebrew)
- Complete Dark Mode support
- Smooth animations and transitions
- Intuitive user experience
- Kotlin - Modern, concise programming language
- Jetpack Compose - Declarative UI framework
- Material Design 3 - Latest design system
- MVVM - Clean architecture pattern
- StateFlow - Reactive state management
- ViewModel - Separation of logic from UI
- Coroutines - Asynchronous programming
- Room Database - Local database with migrations
- KSP - Annotation processing
- Gson - JSON serialization
- Multi-table relations - Complex data management
- Coil - Efficient image loading
- Material Icons Extended - Comprehensive icon set
- Android: 8.0 (API 26) and above
- Storage: ~10MB
- Permissions: Storage (for image/file export)
Download & Install APK:
- Download:
ืกืืืืจ ืขืืืืV2.apkfrom the repository root - Transfer the file to your Android device
- On your device, enable "Install from unknown sources" in Settings (if prompted)
- Tap the APK file to install
- Grant necessary permissions (Storage for exports)
- Start scheduling!
Note: The APK is ready to use and includes all features of Version 2.0
Development Requirements:
- Android Studio Hedgehog | 2023.1.1 or higher
- JDK 11
- Gradle 8.2
- Kotlin 1.9.0
Local Setup:
# Clone the repository
git clone https://github.com/YOUR_USERNAME/WorkSchedule.git
# Open in Android Studio
# Build and run on emulator or physical deviceBuild APK:
# Debug build
./gradlew assembleDebug
# Release build
./gradlew assembleReleaseapp/src/main/java/com/hananel/workschedule/
โโโ data/ # Data layer
โ โโโ AppDatabase.kt # Room database with migrations
โ โโโ Employee.kt # Employee entity
โ โโโ Schedule.kt # Schedule entity
โ โโโ ShiftTemplate.kt # Dynamic shift template
โ โโโ ShiftRow.kt # Shift row definition
โ โโโ DayColumn.kt # Day column definition
โ โโโ DynamicShiftManager.kt # Template manager
โ โโโ *Dao.kt # Data access objects
โโโ ui/ # Presentation layer
โ โโโ components/ # Reusable UI components
โ โ โโโ SimpleTable.kt # Dynamic table component
โ โ โโโ ShiftRowEditDialog.kt # Shift editor
โ โโโ BlockingScreen.kt # Shift blocking interface
โ โโโ ManualCreationScreen.kt # Manual scheduling
โ โโโ PreviewScreen.kt # Schedule preview & stats
โ โโโ HistoryScreen.kt # Beautiful schedule history
โ โโโ EmployeeManagementScreen.kt # Employee CRUD
โ โโโ ShiftTemplateSetupScreen.kt # Template configuration
โ โโโ SplashScreen.kt # App intro screen
โ โโโ HomeScreen.kt # Main navigation hub
โ โโโ theme/ # Theme & styling
โโโ viewmodel/ # Business logic layer
โ โโโ ScheduleViewModel.kt # Main ViewModel
โโโ utils/ # Utilities
โ โโโ GenericScheduleGenerator.kt # AI scheduling algorithm
โ โโโ WhatsAppSharer.kt # Text export
โ โโโ ExcelExporter.kt # CSV export
โ โโโ ImageSharer.kt # Image export
โโโ MainActivity.kt # App entry point
- Open the app - Welcome splash screen
- Add employees - Navigate to Employee Management
- Configure shift template - Set up your custom shifts and days
- Ready to schedule!
- Click "New Schedule"
- Block unavailable shifts - Mark when employees can't work
- Generate schedule - Choose automatic generation or manual assignment:
- Automatic: AI creates a fair schedule respecting all rules
- Manual: Drag employees to shifts or type freely
- Review statistics - Check fairness and balance
- Export and share - Send via WhatsApp or save as image
- Click "Edit Table Structure" from home screen
- Add shifts - Create up to 8 custom shifts with structured time input and placeholder hints
- Reorder shifts - Drag & drop to any position with hamburger icon (โฐ) or long press on card
- Edit shift details - Names and working hours with validation
- Enable/disable days - Choose 4-7 working days (compact 2-column layout)
- Auto-save - Changes save automatically, exit when done
- App remembers your progress - Auto-saved when closing
- Click "Continue Draft" - Picks up exactly where you left off
- Complete and save - Draft auto-deletes when done
- โจ NEW: Generic Automatic Schedule Generation - AI algorithm works with any custom template
- โจ NEW: Dynamic Shift Template System - Fully customizable shifts (2-8 shifts, 4-7 days)
- โจ NEW: Advanced Drag & Drop - Reorder shifts to any position with real-time visual feedback
- โจ NEW: Structured Time Input - Validated hour/minute fields with placeholder hints
- โจ NEW: Auto-Save System - Smart saving without leaving the editing screen
- โจ NEW: Compact Day Selection - Space-efficient 2-column grid layout
- โจ NEW: Beautiful History UI - Modern card design with elegant empty states
- โจ NEW: Template Management Screen - Configure shifts anytime with auto-save
- โจ NEW: Automatic Migration - Seamless upgrade for existing users
- โจ NEW: Generic Employee System - No hardcoded employee data
- โจ NEW: First-Time Setup Flow - Guided template creation
- โ Complete application generalization - works for any workplace
- โ Perfect Dark Mode support across all screens
- โ Real-time statistics with dynamic template support
- โ CSV/Excel export with dynamic templates
- โ Schedule renaming capability
- โ Image export with custom shift configurations
- โ Smart draft management - auto-clear when schedule saved
- โ Shadow-free UI design throughout
- โ UI/UX improvements throughout
- โ Smart hours calculation with free text support
- โ Enhanced draft system with better persistence
- โ Improved "Can-Only" blocking logic
- โ Block persistence with schedules
- โ UI/UX fixes
- ๐ Initial release
- Manual scheduling with smart blocking
- Employee and block management
- History and export features
- Basic shift definitions
- Cloud Sync - Backup and sync across devices
- Multi-workplace Support - Manage different locations/teams
- Advanced Analytics - Detailed reports and insights
- Notifications - Shift reminders for employees
- Custom Themes - User-defined color schemes
- Team Collaboration - Shared scheduling with multiple managers
- Export to Google Calendar - Automatic calendar integration
Found a bug? Have an idea for improvement? Contributions are welcome!
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Use the GitHub Issues tab
- Provide detailed description and steps to reproduce
- Include Android version and device model if relevant
This project is open source and available under the MIT License. Feel free to use, modify, and distribute - just keep the attribution! โค๏ธ
Hananel Sabag
Software Engineering Graduate
Passionate about creating elegant, user-friendly solutions to real-world problems. This project showcases my skills in:
- Modern Android development (Kotlin, Jetpack Compose)
- Clean Architecture & MVVM pattern
- Database design and migrations
- Complex algorithm implementation
- UI/UX design with Material Design 3
- State management with Coroutines & Flow
Currently seeking software development opportunities!
If you're looking for a dedicated developer with strong technical skills and attention to detail, let's connect!
- Built with modern Android development best practices
- Inspired by real-world workplace scheduling challenges
- Designed for simplicity, efficiency, and ease of use
- Community feedback and suggestions welcome
For questions, suggestions, or collaboration opportunities:
- Open an issue on GitHub
- Check out my other projects
- Feel free to reach out!
Built with โค๏ธ in Israel ๐ฎ๐ฑ
Made with Kotlin & Jetpack Compose
Free for everyone to use - Happy Scheduling! ๐ โจ