Skip to content

Latest commit

 

History

580 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Planzo Logo

Planzo: ToDo&Notes

Planzo is a modern iOS & iPadOS task management application built with SwiftUI and Core Data. It provides a clean, intuitive interface for managing tasks, notes, and checklists with features like local notifications, task organization, and data persistence. Find it in App Store.

Table of Contents 📋

Modules 🧩

Main Page

  • Overview of all tasks and folders
  • Quick access to important and pinned tasks
  • Search functionality for finding tasks quickly
Main Page Demo Main Page Search

Today Page

  • Tasks due today
  • Upcoming deadlines
  • Priority tasks for the day
Today Page Demo Today Page Search

Calendar Page

  • Monthly calendar view
  • Task distribution visualization
  • Easy date-based task creation
Calendar Page Demo Calendar Page Date Selector

Features ⚒️

Task Management

  • Create, edit, and delete tasks with detailed information
  • Organize tasks into different folders (Tasks, Lists, Reminders, Other)
  • Mark tasks as important or pin them for quick access
  • Add checklists to tasks for better organization
  • Duplicate tasks with all their properties
Task Management Demo Task Management Date Selector

Push Notifications

  • Set up localized local notifications for task deadlines
  • Multiple notification types (On time, 5 minutes before, 30 minutes before, 1 hour before, 1 day before)
  • Notification management to prevent duplicates
  • Notification status tracking and restoration
English Now English in 5 Minutes Russian in 5 Minutes

Task Organization

  • Sort tasks by different criteria
  • Search functionality for quick task finding
  • Folder-based organization
  • Pinned and important task highlighting

Data Management

  • Core Data persistence for reliable data storage
  • Batch operations for efficient data handling
  • Data cleanup and maintenance features
  • Secure data handling and validation

Technologies 💻

iOS Frameworks

  • SwiftUI: Powers the modern, responsive UI components
  • Core Data: Handles data persistence and management
  • UserNotifications: Manages local notifications
  • Combine: Handles reactive data flow and state management

Data Management

  • Core Data: Provides robust data persistence and relationships
  • NSManagedObjectContext: Manages object lifecycle and changes
  • NSFetchRequest: Handles data queries and filtering
  • NSPredicate: Enables complex data filtering

User Interface

  • SwiftUI Views: Modern, declarative UI components
  • Custom Animations: Smooth transitions and interactions

Push Notifications

  • UNUserNotificationCenter: Manages local notifications
  • UNNotificationRequest: Handles notification scheduling
  • UNCalendarNotificationTrigger: Sets up time-based notifications
  • Notification Extensions: Custom notification handling

Logging

  • OSLog: Integrated for logging essential app data, system events, and debugging information, making it easier to track performance and bugs.

Architecture 🏗️

The Planzo app follows the MVVM (Model-View-ViewModel) architecture pattern, providing a clean separation of concerns and maintainable code structure.

Model

The Model layer represents the data and business logic:

  • TaskEntity: Core Data entity for task storage
  • NotificationEntity: Handles notification data
  • ChecklistEntity: Manages checklist items
  • TaskService: Provides data operations and business logic

View

The View layer handles UI presentation. Examples:

  • TaskManagementView: Main task management interface
  • DateSelector: Date and time selection components
  • NotificationAlert: Notification management UI
  • Custom UI Components: Reusable SwiftUI views

ViewModel

The ViewModel layer manages the presentation logic:

  • TaskManagementViewModel: Handles task-related logic
  • Notification Management: Manages notification scheduling
  • Data Validation: Ensures data integrity
  • State Management: Handles UI state

Testing 🧪

Unit Testing (Examples)

  • TaskManagementViewModelTests: Tests for task management operations
  • MainViewModelTests: Tests task filtering, folder selection, search bar toggling, and task creation workflows.
  • SettingsViewModelTests: Tests initialization, toggling view states, theme changes, notification management, and task creation mode settings.

Documentation 📚

The project uses comprehensive documentation following Apple's DocC format:

/// Compares a folder with the currently selected folder
/// - Parameter folder: The folder to compare with the selected folder
/// - Returns: Boolean indicating if the provided folder matches the selected folder
///
/// This method is used to determine if a folder is currently selected in the UI,
/// enabling proper highlighting and state management in the folder list.
internal func compareFolders(with folder: Folder) -> Bool {
    // code implementation
}

Requirements ✅

  • Xcode 15.0+
  • Swift 5.0+
  • iOS 17.0+

About

My second app on the App Store. A to-do list app allows manage tasks by categories: filters and folders. Calendar planner, reminders and lists for different purposes are key features.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages