A simple iOS task manager built with Swift and UIKit.
The app allows users to create, edit, and delete tasks, search and filter them, and synchronizes data with a remote API using Core Data for local persistence.
- Task Management: Create, read, edit, and delete tasks.
- Task Details: Each task includes a title, description, creation date, and completion status.
- Offline First: Uses Core Data for local persistence. Tasks are available without an internet connection.
- API Synchronization: Fetches and syncs tasks with a REST API on first launch.
- Search & Filter: Find tasks by text or filter by completion status.
- Asynchronous Operations: Network and database operations run on background threads using GCD to keep the UI responsive.
- UIKit with programmatic Auto Layout
- Core Data for local persistence
- URLSession for networking
- REST API integration
- GCD (Grand Central Dispatch) for background threading
- VIPER architecture
The project follows the VIPER (View-Interactor-Presenter-Entity-Router) architecture pattern:
- View: UIKit views and ViewControllers. Passes user actions to the Presenter.
- Interactor: Contains business logic. Manages Core Data and network operations.
- Presenter: Prepares data for the View and handles View logic.
- Entity: Simple data models (Core Data entities and Codable structs).
- Router: Handles navigation between screens.
- Offline Mode: When the app launches, the Interactor tries to fetch data from the API. On success, it updates Core Data. If the network is unavailable, it shows cached data.
- Background Tasks: Network requests and Core Data saves run on background queues using GCD, so the UI never freezes.
- Core Data Stack: A custom stack manager encapsulates the persistent container, saving, and fetching logic.
- VIPER Separation: Each module (e.g., Task List, Task Detail) has its own View, Interactor, Presenter, Entity, and Router, making the code modular and testable.
Via terminal:
- git clone https://github.com/rfhfv/ToDoList.git
- cd ToDoList
- open ToDoList.xcodeproj
A simple iOS task manager built with Swift. Features include adding, editing, and deleting tasks, search and filtering, Core Data local storage, and API synchronization. Uses VIPER architecture and GCD for concurrency.