Skip to content

rfhfv/ToDoList

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ToDoList App

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.

Figma mockup

JSON API

Screenshots

Image

Features

  • 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.

Tech Stack

  • 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

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.

Key Implementation Details

  • 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.

Installation

Via terminal:

About

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.

About

UIKit, VIPER, URLSession, Core Data

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages