Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskFlow — iOS Task Management App

iOS Swift UIKit Architecture

A modern iOS Todo application built with a strong focus on clean architecture, scalability, and maintainability.

This project was originally created as a test assignment and later refined to demonstrate production-level engineering practices, architectural decisions, and code organization.

Features

  • Display todo items in a list
  • Create new tasks
  • Edit existing tasks
  • Delete tasks
  • Splash & launch screens
  • Initial data loading from network
  • Offline persistence using Core Data
  • Error handling and recovery
  • Structured logging system
  • Multiple build environments

Tech Stack

  • Swift 5
  • UIKit (programmatic UI)
  • iOS 17+
  • VIPER + Clean Architecture
  • Dependency Injection with Swinject
  • Moya for networking
  • Core Data for local persistence
  • Async/Await concurrency
  • Environment-based configuration

Architecture

The project follows a modular layered architecture combining VIPER and Clean Architecture principles.

Main Goals

  • Separation of concerns
  • High testability
  • Scalable feature structure
  • Clear dependency boundaries
  • Maintainable business logic

Layers

Core

Contains reusable shared components and cross-cutting concerns:

  • Logging system
  • Environment configuration
  • Error handling
  • Shared utilities
  • Base abstractions and protocols

Data

Responsible for external and local data sources:

  • Network layer (Moya)
  • API models
  • Repository implementations
  • Core Data persistence
  • DTO mapping

Presentation

Contains UI and feature modules:

  • VIPER modules
  • Presenters
  • Interactors
  • Routers
  • Views
  • UI state handling

App

Application entry point and composition root:

  • Dependency registration
  • Environment setup
  • App lifecycle configuration

Resources

Application assets and configuration files.

Project Structure

TodoApp
├── App
├── Core
├── Data
├── Presentation
└── Resources

Networking & Persistence

On first launch, the application loads todo data from a remote source and stores it locally using Core Data.

This approach provides:

  • Fast subsequent launches
  • Offline support
  • Data persistence between sessions

Error Handling

The application includes centralized error handling with proper user feedback and logging.

Handled scenarios include:

  • Network failures
  • Data loading issues
  • Persistence errors
  • Unexpected application states

Logging

A structured logging system is implemented to simplify debugging and feature tracking.

Logging categories include:

  • UI events
  • Feature flow
  • Network requests
  • Data operations
  • Errors

Environments

The project supports multiple environments:

  • Mock
  • Development
  • Staging
  • Release

This allows easy testing and configuration switching during development.

Screenshots

Requirements

  • iOS 17.0+
  • Xcode 26
  • Swift 5

Installation

  1. Clone the repository
git clone https://github.com/nikolai-eremenko/TaskFlow
  1. Open the project in Xcode
open todo.xcodeproj
  1. Build and run the application.

Engineering Focus

This project emphasizes:

  • Clean code principles
  • Architecture consistency
  • SOLID principles
  • Dependency injection
  • Scalable project structure
  • Maintainable UIKit codebase
  • Explicit error management
  • Production-style logging

This repository serves as an example of my iOS engineering approach, architectural decisions, and code organization practices.

About

iOS Todo app built with VIPER + Clean Architecture, featuring Core Data persistence, Moya networking, and modular layered design.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages