Skip to content

TodoSync is an elegant task management solution that seamlessly connects your iPhone and Apple Watch. This intuitive app helps you organize daily tasks with beautiful categories and priority levels while providing instant synchronization between devices, ensuring your to-do list is always up-to-date no matter which device you're using.

Notifications You must be signed in to change notification settings

Abi-2004/ToDOSync-Swift

Repository files navigation

πŸ“ TodoSync - Universal Task Manager

A beautifully crafted, feature-rich Todo application for iOS and watchOS with seamless real-time synchronization

Swift iOS watchOS SwiftUI License


🎬 Experience the App in Action

πŸ“± iPhone Experience

iphone.MP4

Fluid iPhone interface showcasing task management, categories, and priority levels

⌚ Apple Watch Experience

watch.mp4

Optimized watchOS interface with Digital Crown support and instant sync


πŸ“Έ Visual Showcase

iPhone Screenshots

Main Interface Task Categories Add New Task Detailed View
Clean, modern task list Smart categorization Intuitive task creation Rich task details

Apple Watch Screenshots

Watch Interface Compact View
Native watchOS design Quick task overview

✨ Comprehensive Feature Overview

πŸ“‹ Core Task Management

  • Create, Edit & Delete: Full CRUD operations with intuitive interfaces
  • Smart Scheduling: Schedule tasks for specific dates with calendar integration
  • Completion Tracking: One-tap completion with visual feedback
  • Rich Descriptions: Add detailed notes and context to your tasks

🏷️ Intelligent Categorization

Choose from 6 beautifully designed categories:

  • πŸ’Ό Work - Professional tasks and projects
  • πŸ‘€ Personal - Personal goals and reminders
  • πŸ›’ Shopping - Shopping lists and purchases
  • ❀️ Health - Fitness goals and health reminders
  • πŸ’° Finance - Financial tasks and payments
  • πŸ“š Study - Learning goals and academic tasks

⭐ Priority Management

Three-tier priority system with visual indicators:

  • πŸ”΄ High Priority - Urgent and important tasks
  • 🟑 Medium Priority - Standard tasks
  • 🟒 Low Priority - Nice-to-have tasks

πŸ“± Cross-Platform Excellence

iPhone Features:

  • Large, Readable Interface: Optimized for touch interaction
  • Swipe Gestures: Intuitive swipe-to-complete and swipe-to-delete
  • Rich Visual Design: Beautiful gradients and animations
  • Date Navigation: Easy date switching with visual date chips
  • Category Filtering: Filter tasks by category with visual chips
  • Progress Tracking: Visual progress indicators and statistics

Apple Watch Features:

  • Native watchOS Design: Perfectly optimized for small screens
  • Digital Crown Navigation: Smooth scrolling with haptic feedback
  • Quick Actions: Tap to complete, swipe gestures for actions
  • Complication Support: Quick task count on watch face
  • Offline Capability: Works independently when iPhone is not nearby
  • Voice Input: Dictation support for hands-free task creation

πŸ”„ Real-time Synchronization

Powered by WatchConnectivity Framework:

  • Instant Sync: Changes appear immediately on both devices
  • Bidirectional Updates: Edit from either device seamlessly
  • Conflict Resolution: Smart merging of concurrent changes
  • Background Transfer: Sync continues even when devices are disconnected
  • Reliable Delivery: Guaranteed delivery with fallback mechanisms

πŸ’Ύ Robust Data Persistence

  • JSON File Storage: Efficient file-based persistence for task data
  • Crash Recovery: Data survives app crashes and device restarts
  • Efficient Encoding/Decoding: Swift Codable for high-performance JSON serialization
  • Data Integrity: Consistent data structures across platforms

🎨 Modern User Experience

  • SwiftUI Framework: Native, declarative UI with smooth animations
  • Dark Mode Support: Seamless appearance adaptation
  • Accessibility: VoiceOver and accessibility feature support
  • Haptic Feedback: Tactile responses for important actions
  • Visual Feedback: Color-coded priorities and status indicators

πŸ—οΈ Technical Architecture

πŸ“± iOS Application Stack

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            SwiftUI Views            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚ ContentView β”‚ β”‚   AddTodoView   β”‚β”‚
β”‚  β”‚ TodoRowView β”‚ β”‚ EditTodoView    β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          Data Management            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚TodoData-    β”‚ β”‚WatchConnectivityβ”‚β”‚
β”‚  β”‚Manager      β”‚ β”‚Manager          β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚           Data Models               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚  TodoItem   β”‚ β”‚  TodoCategory   β”‚β”‚
β”‚  β”‚TodoPriority β”‚ β”‚ SyncConstants   β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚         Frameworks & APIs           β”‚
β”‚    SwiftUI β€’ Combine β€’ Foundation   β”‚
β”‚       UserDefaults β€’ WatchKit       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

⌚ watchOS Application Stack

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Watch-Optimized Views       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚ ContentView β”‚ β”‚   AddTodoView   β”‚β”‚
β”‚  β”‚ TodoRowView β”‚ β”‚   StatsView     β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚       Watch Data Management         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚TodoData-    β”‚ β”‚WatchConnectivityβ”‚β”‚
β”‚  β”‚Manager      β”‚ β”‚Manager          β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          Shared Models              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚ TodoModels  β”‚ β”‚ SyncConstants   β”‚β”‚
β”‚  β”‚(Identical)  β”‚ β”‚   (Shared)      β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚       watchOS Frameworks            β”‚
β”‚   SwiftUI β€’ WatchKit β€’ Foundation   β”‚
β”‚     WatchConnectivity β€’ UserDefaultsβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”„ Synchronization Flow

graph TD
    A[iPhone App] -->|WatchConnectivity| B[Data Sync Layer]
    C[Apple Watch] -->|WatchConnectivity| B
    B -->|JSONEncoder/Decoder| D[TodoItem Array]
    D -->|UserDefaults| E[Local Storage iPhone]
    D -->|UserDefaults| F[Local Storage Watch]
    
    G[User Action iPhone] --> A
    H[User Action Watch] --> C
    
    A -->|sendMessage/updateContext| C
    C -->|sendMessage/updateContext| A
Loading

πŸ“‚ Project Structure

ToDO/
β”œβ”€β”€ ToDO/                          # iOS App
β”‚   β”œβ”€β”€ Views/                     # SwiftUI Views
β”‚   β”œβ”€β”€ Managers/                  # Data and Connectivity Managers
β”‚   β”œβ”€β”€ Models/                    # Data Models
β”‚   └── Assets.xcassets/           # App Icons and Images
β”œβ”€β”€ ToDOWatch Watch App/           # watchOS App
β”‚   β”œβ”€β”€ Views/                     # Watch-specific Views
β”‚   β”œβ”€β”€ Managers/                  # Watch Data Managers
β”‚   └── Models/                    # Shared Models
└── ToDOTests/                     # Unit Tests

πŸš€ Getting Started

Prerequisites

  • Xcode 15.0 or later
  • iOS 17.0 or later
  • watchOS 10.0 or later
  • Apple Watch (for watch app testing)

Installation

  1. Clone the repository

    git clone https://github.com/your-username/todo-example.git
    cd todo-example
  2. Open in Xcode

    open ToDO.xcodeproj
  3. Build and Run

    • Select your target device (iPhone/Apple Watch)
    • Press Cmd + R to build and run

Configuration

The app uses generic bundle identifiers that you can customize:

  • iOS App: com.example.todo
  • Watch App: com.example.todo.watchapp
  • App Group: group.com.example.todo

πŸ”§ Technical Details

Synchronization

The app uses WatchConnectivity framework for bidirectional synchronization:

  • Immediate sync when both devices are active
  • Background transfer when watch is not reachable
  • Conflict resolution based on most recent changes

Data Models

struct TodoItem: Codable, Identifiable {
    let id: UUID
    var title: String
    var isCompleted: Bool
    var priority: TodoPriority
    var category: TodoCategory
    var createdAt: Date
}

🀝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Built with SwiftUI and WatchConnectivity
  • Icons from SF Symbols
  • Inspiration from modern todo applications

πŸ“± Download on the App Store

Coming Soon

⌚ Compatible with Apple Watch

Requires iOS 17.0 and watchOS 10.0 or later

About

TodoSync is an elegant task management solution that seamlessly connects your iPhone and Apple Watch. This intuitive app helps you organize daily tasks with beautiful categories and priority levels while providing instant synchronization between devices, ensuring your to-do list is always up-to-date no matter which device you're using.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages