A SwiftUI-based iOS application for managing todos with tags.
- Create, read, update, and delete todos
- Add tags to todos
- Filter todos by status (all, finished, unfinished)
- Search todos
- Edit existing todos
- Automatic data persistence using SwiftData
The project follows a standard SwiftUI app structure:
ToDoApp.swift
: The main app fileModels/
: Contains the data models (Todo.swift, Tag.swift)Views/
: Contains all the SwiftUI viewsViewModels/
: Contains the view models (TodoViewModel.swift)
Todo
: Represents a todo item with properties like name, start date, completion status, and associated tags.Tag
: Represents a tag that can be associated with multiple todos.
RootView
: The main view containing the tab navigation.TodoView
: Displays the list of todos and handles filtering and searching.TodoEditorView
: Handles creating and editing todos.TagView
: Displays and manages tags.SettingView
: Contains app settings (currently with placeholder toggles).
TodoViewModel
: Manages the todo data and operations, including filtering and CRUD operations.
- Clone the repository
- Open the project in Xcode
- Build and run the app on a simulator or device
- iOS 17.5+
- Xcode 15.4+
- Swift 5.0+
- Implement iCloud sync functionality
- Add more robust tag management features
- Implement auto-delete for completed todos
- Enhance the UI/UX design