Skip to content

Repository files navigation

RemindersLive

iOS-приложение для управления напоминаниями с поддержкой Live Activities, виджетов и синхронизацией через iCloud.

Возможности

Напоминания

  • Создание, редактирование и удаление напоминаний
  • Три уровня приоритета: низкий, средний, высокий (с цветовой маркировкой)
  • Повторяющиеся напоминания: ежедневно, еженедельно, ежемесячно, ежегодно
  • Поиск по названию и описанию
  • Фильтрация по приоритету
  • Группировка по дате: сегодня, завтра, на этой неделе, по месяцам

Live Activities

  • Живой счётчик обратного отсчёта на экране блокировки и в Dynamic Island
  • Цветовые статусы: ожидание (синий), скоро (оранжевый), истекло (красный)
  • Автообновление каждые 30 секунд
  • Запуск и остановка прямо из списка напоминаний

Уведомления

  • Локальные уведомления со звуком и бейджем
  • Поддержка повторяющихся расписаний

Виджет

  • Виджет на рабочем столе с ближайшим напоминанием
  • Поддержка Live Activity через расширение виджета

Синхронизация и экспорт

  • Синхронизация через CloudKit / iCloud
  • Экспорт напоминаний в текстовый файл
  • Локальное хранение в JSON-файле (без потери данных при отсутствии сети)

Локализация

  • Поддержка английского и русского языков
  • Выбор языка на экране онбординга

Технологии

Слой Что используется
UI SwiftUI, MVVM
Live Activities ActivityKit (iOS 16.2+)
Виджеты WidgetKit, AppIntents
Уведомления UserNotifications
Хранение FileManager (JSON)
Синхронизация CloudKit
Асинхронность Swift Concurrency (async/await), Combine

Требования

  • iOS 16.2 или новее
  • Xcode 15+
  • Swift 5.9+
  • Для Live Activities — реальное устройство (симулятор не поддерживается)

Структура проекта

notifications/
├── RemindersLiveApp.swift              # Точка входа
├── ReminderActivityAttributes.swift    # Атрибуты Live Activity
├── Models/
│   └── Reminder.swift                  # Модель данных
├── Views/
│   ├── ReminderListView.swift          # Главный экран со списком
│   ├── ReminderEditorView.swift        # Создание / редактирование
│   └── LanguageStartView.swift         # Онбординг (выбор языка)
├── ViewModels/
│   ├── ReminderListViewModel.swift     # Логика списка, фильтрация, синк
│   └── ReminderEditorViewModel.swift   # Состояние формы редактора
├── Services/
│   ├── StorageService.swift            # Локальное JSON-хранилище
│   ├── NotificationService.swift       # Планирование уведомлений
│   ├── LiveActivityService.swift       # Управление Live Activities
│   └── CloudKitService.swift           # Синхронизация iCloud
├── Utils/
│   ├── AppLocalization.swift           # Строки EN/RU
│   ├── RemindersExportDocument.swift   # Экспорт в файл
│   ├── DateFormatters.swift            # Форматирование дат
│   └── Calendar+Week.swift             # Расширения календаря
└── RemindersLiveWidget/                # Расширение виджета
    ├── RemindersLiveWidget.swift
    ├── RemindersLiveWidgetLiveActivity.swift
    ├── RemindersLiveWidgetBundle.swift
    ├── RemindersLiveWidgetControl.swift
    └── AppIntent.swift

Сборка и запуск

  1. Клонируй репозиторий
  2. Открой notifications.xcodeproj в Xcode
  3. Выбери команду (Team) в настройках Signing & Capabilities
  4. Для CloudKit: добавь идентификатор контейнера в Info.plist — ключ CloudKitContainerIdentifier (например, iCloud.com.yourteam.notifications)
  5. Запусти на реальном устройстве для тестирования Live Activities

Архитектура

Приложение построено по паттерну MVVM:

  • View — SwiftUI-экраны, не содержат бизнес-логики
  • ViewModel (@MainActor, @Published) — состояние UI и операции с данными
  • Services — изолированные сервисы для хранения, уведомлений, Live Activities и синхронизации
  • ModelReminder: UUID, приоритет, дата, повтор, статус (waiting / due / done)

CloudKit-синхронизация автоматически отключается, если контейнер не настроен — приложение продолжает работать только с локальными данными.

Автор

lavochka

About

iOS reminder app with Live Activities, widgets, iCloud sync, priority levels and lock screen countdowns. Supports English and Russian.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages