ToDo-приложение для iOS: список задач, поиск, добавление, редактирование, удаление и отметка выполнения. Данные сохраняются в CoreData, стартовый список загружается из удалённого источника.
Макеты: https://www.figma.com/design/ElcIDP3PIp5iOE4dCtPGmd/Задачи?node-id=0-1&p=f
- список задач с поиском;
- создание, редактирование и удаление задач;
- отметка задачи как выполненной;
- локальное хранение в CoreData;
- первичная загрузка из DummyJSON или собственного backend;
- фоновые операции через GCD;
- unit-тесты для основных компонентов.
iOS: Swift, SwiftUI, CoreData, URLSession, GCD, XCTest, VIPER.
Backend: Node.js 20, Docker Compose, JSON-хранилище для демо.
Проект разделён на VIPER-модули:
TaskList: View / Interactor / Presenter / Entity / Router
TaskEditor: View / Interactor / Presenter / Entity / Router
Работа с данными вынесена в TaskRepository: он объединяет CoreData, DummyJSON и backend API.
GET /health
GET /todos
POST /todos
PUT /todos/:id
DELETE /todos/:id
Если backend-хранилище пустое, первый GET /todos загружает стартовые задачи из https://dummyjson.com/todos.
Адрес backend задаётся в IOSapp/Info.plist:
<key>API_BASE_URL</key>
<string>https://todo.example.com</string>Если значение пустое, приложение использует DummyJSON напрямую.
git clone https://github.com/CalistaVerner/IOSapp.git
cd IOSapp
open IOSapp.xcodeprojДальше в Xcode выбрать scheme IOSapp, iPhone Simulator и нажать Cmd + R.
Тесты:
Cmd + U
Через Docker:
cd backend
docker compose up -d --buildПроверка:
curl http://localhost:8080/health
curl http://localhost:8080/todosОстановить:
docker compose downЧерез Node.js:
cd backend
npm startНа Windows можно запустить backend:
cd C:\Users\Aiden\Documents\Repos\IOSapp\backend
docker compose up -d --build
curl.exe http://localhost:8080/healthСам iOS-проект запускается через Xcode на macOS. Если backend работает на Windows, а симулятор — на Mac в той же сети, укажите в API_BASE_URL IP Windows-машины, например http://192.168.1.50:8080.
DEVELOPMENT_TEAM не задан. Для запуска на физическом устройстве нужно выбрать свою команду подписи в Xcode.