ToDoList — приложение для управления задачами, разработанное на Swift и UIKit.
Позволяет создавать, редактировать и удалять задачи, выполнять поиск и фильтрацию, а также синхронизировать данные с удаленным REST API. Для локального хранения используется Core Data, благодаря чему приложение работает даже без подключения к интернету.
- Макет в Figma: https://www.figma.com/design/ElcIDP3PIp5iOE4dCtPGmd/Задачи?node-id=0-1&p=f&t=nUny2SToYzzvGKJc-0
- REST API: https://dummyjson.com/todos
- Управление задачами — создание, просмотр, редактирование и удаление задач.
- Подробная информация — каждая задача содержит заголовок, описание, дату создания и статус выполнения.
- Offline First — данные сохраняются локально с помощью Core Data, поэтому доступны даже без подключения к интернету.
- Синхронизация с API — при первом запуске приложение получает задачи с REST API и сохраняет их локально.
- Поиск и фильтрация — поиск по тексту и фильтрация по статусу выполнения.
- Асинхронная обработка — сетевые запросы и операции с базой данных выполняются в фоновых потоках с использованием GCD, что обеспечивает плавную работу интерфейса.
- Swift
- UIKit (программная верстка с Auto Layout)
- VIPER (View–Interactor–Presenter–Entity–Router)
- Core Data — локальное хранение данных
- URLSession — сетевые запросы
- REST API
- Grand Central Dispatch (GCD) — многопоточность
Проект реализован с использованием архитектуры VIPER, которая разделяет приложение на независимые модули:
- View — отображает интерфейс и передает действия пользователя презентеру.
- Interactor — содержит бизнес-логику, отвечает за работу с сетью и Core Data.
- Presenter — подготавливает данные для отображения и управляет логикой представления.
- Entity — модели данных (
Codableи сущности Core Data). - Router — отвечает за навигацию между экранами.
Каждый модуль (например, список задач или экран редактирования) имеет собственные компоненты View, Interactor, Presenter, Entity и Router, что делает код масштабируемым, удобным для сопровождения и тестирования.
- Поддержка офлайн-режима — при запуске приложение пытается получить данные с API. Если запрос успешен, локальная база обновляется. При отсутствии сети отображаются сохраненные данные.
- Фоновая обработка — сетевые запросы и сохранение данных в Core Data выполняются в отдельных потоках, благодаря чему интерфейс остается отзывчивым.
- Собственный Core Data Stack — реализован отдельный менеджер, инкапсулирующий работу с
NSPersistentContainer, сохранением и получением данных. - Модульная архитектура — независимые VIPER-модули упрощают тестирование и дальнейшее развитие проекта.
git clone https://github.com/rfhfv/ToDoList.git
cd ToDoList
open ToDoList.xcodeprojПриложение демонстрирует разработку современного iOS-приложения с использованием UIKit, Core Data, REST API и архитектуры VIPER. Основной акцент сделан на разделении ответственности между слоями, поддержке офлайн-режима, работе с многопоточностью и удобстве дальнейшего масштабирования проекта.