A comprehensive iOS task management application built with Swift and UIKit, featuring advanced task organization, filtering, and productivity tracking capabilities.
- ✅ Task Management: Create, edit, delete, and mark tasks as complete
- 🔍 Smart Search: Real-time search functionality to quickly find tasks
- 📊 Statistics Dashboard: Track total, completed, and pending tasks
- 📱 Modern UI: Clean, intuitive interface with iOS design guidelines
- 🎯 Priority System: Three-level priority system (Low, Medium, High) with color coding
- Low: Green
- Medium: Orange
- High: Red
- 📂 Category Organization: Six predefined categories with custom icons
- Personal (👤)
- Work (💼)
- Shopping (🛒)
- Health (❤️)
- Education (📚)
- Other (📁)
- 📅 Due Date Management: Optional due dates with date picker
- 📝 Rich Task Details: Title, notes, creation date, and completion tracking
- 🔄 Smart Filtering: Filter tasks by status (All, Pending, Completed)
- 💾 Persistent Storage: Local data persistence using UserDefaults
- 📤 Export Functionality: Share and export task lists
- 🗑️ Bulk Operations: Clear completed tasks with confirmation
- 🎨 Empty State Handling: Elegant empty state with helpful messaging
- ⚡ Swipe Actions: Quick task completion and deletion via swipe gestures
- 🔍 Search Integration: Built-in search controller with real-time filtering
- 📱 Responsive Design: Optimized for various iOS device sizes
- ♿ Accessibility: VoiceOver support and accessibility features
- MVC (Model-View-Controller): Clean separation of concerns
- Singleton Pattern: Centralized task management with
TaskManager.shared - Delegate Pattern: Custom protocols for data flow and user interactions
Task.swift: Core task model with Codable supportTaskPriority: Enumeration for priority levels with display propertiesTaskCategory: Enumeration for task categories with icons and colors
ViewController.swift: Main task list with filtering and searchTaskViewController.swift: Detailed task view with editing capabilitiesEntryViewController.swift: Task creation and editing form
TaskTableViewCell.swift: Custom table view cell with rich task display- Custom UI components with programmatic Auto Layout
TaskManager.swift: Centralized data management with CRUD operations- JSON encoding/decoding for data persistence
- UserDefaults integration for local storage
- Language: Swift 5.0+
- Framework: UIKit
- Architecture: MVC
- Storage: UserDefaults with JSON serialization
- UI: Programmatic Auto Layout
- Testing: XCTest framework
Tasks/
├── Tasks.xcodeproj/ # Xcode project configuration
├── Tasks/ # Main application source
│ ├── Models/
│ │ └── Task.swift # Task data model
│ ├── TaskManager.swift # Data management layer
│ ├── ViewController.swift # Main task list controller
│ ├── TaskViewController.swift # Task detail view
│ ├── EntryViewController.swift # Task creation/editing
│ ├── TaskTableViewCell.swift # Custom table cell
│ ├── AppDelegate.swift # App lifecycle management
│ ├── SceneDelegate.swift # Scene lifecycle (iOS 13+)
│ └── Assets.xcassets/ # App icons and images
├── TasksTests/ # Unit tests
└── TasksUITests/ # UI automation tests
- iOS: 13.0+
- Xcode: 12.0+
- Swift: 5.0+
-
Clone the repository:
git clone https://github.com/ShawSensei/advanced_task.git
-
Open the project in Xcode:
cd advanced_task open Tasks.xcodeproj -
Build and run the project:
- Select your target device or simulator
- Press
Cmd + Rto build and run
- Tap the "+" button in the navigation bar
- Enter task title (required)
- Add optional notes
- Select priority level
- Choose category
- Set due date (optional)
- Tap "Save"
- Complete: Tap the circle icon or swipe right
- Edit: Tap on a task to view details, then tap "Edit"
- Delete: Swipe left on a task or use the delete button in detail view
- Search: Use the search bar to find specific tasks
- Filter: Use the segmented control to filter by status
The app provides real-time statistics showing:
- Total number of tasks
- Completed tasks count
- Pending tasks count
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is available under the MIT License. See the LICENSE file for more info.
ShawSensei - GitHub Profile
Built with ❤️ using Swift and UIKit