This project demonstrates the implementation of a ToDo List application with core features like task management, persistent data storage, API integration, and multithreading. The app is designed with clean architecture and adheres to modern iOS development practices.
- Display a list of tasks on the main screen.
- Each task includes:
- Title
- Description
- Creation Date
- Status: Completed/Incomplete.
- Task Management:
- Add new tasks.
- Edit existing tasks.
- Delete tasks.
- Search Functionality:
- Quickly search through tasks by title or description.
- On the first launch, the app fetches tasks from the DummyJSON API.
- The fetched tasks are stored locally in CoreData for persistent use.
- All task-related operations (loading, creating, editing, deleting, and searching) are executed on background threads using GCD to ensure the interface remains responsive.
- Tasks are stored in CoreData for offline use.
- The app restores all data from CoreData when relaunched.
- The project is version-controlled using Git.
- Comprehensive unit tests are written for the app’s core functionality, including task creation, editing, deletion, and API integration.
The application is structured using the VIPER architecture, ensuring clear separation of concerns and maintainable code:
- View: Responsible for UI and user interaction.
- Interactor: Handles business logic and background operations.
- Presenter: Acts as a mediator between View and Interactor.
- Entity: Represents the task data model.
- Router: Manages navigation and module assembly.
- The UI is based on the provided Figma mockups.
- API JSON: The dummy API JSON file is available here.
- Clone this repository:
git clone https://github.com/your-repo/todo-list-app.gitTodo app