Skip to content

lavochkaa/Notifications

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

Watchers

Forks

Releases

Packages

Contributors

Languages