Skip to content

berrrchik/iCried-SwiftApp

Repository files navigation

iCried — iOS-дневник эмоций с аналитикой и iCloud Sync

Приложение помогает фиксировать эмоциональные эпизоды и превращать записи в понятные паттерны: календарь активности, инсайты и экспорт в PDF/CSV.


О проекте

iCried помогает не просто хранить заметки о настроении, а видеть закономерности: когда и почему возникают эмоциональные пики, какие триггеры повторяются, как меняется состояние во времени.


Демо

compressed_video_mockup_d13af55d_5b24_46ec_a61a_1f9d5a4c04aa_2.mp4


Основные функции

  • Дневник эмоций: запись эпизода с датой, заметкой, тегом и кастомной интенсивностью через эмодзи.
  • Гибкая система тегов - пользователь может добавлять, редактировать, удалять и сортировать собственные теги для категорий эмоций.
  • Настраиваемая шкала интенсивности: выбор интенсивности эмоций через эмодзи-шкалу в интерфейсе записи.
  • Аналитика по периодам: статистика по годам/месяцам, распределение по тегам и интенсивностям.
  • Heatmap-календарь: 5 уровней интенсивности, навигация по месяцам/годам, детализация по выбранному дню.
  • Инсайт-карточки: генерация готовых карточек (thisMonth, topTrigger, mostUsedEmoji, yearSummary) для шаринга.
  • Экспорт данных: PDF-отчёт и CSV-таблица через системный Share Sheet.
  • iCloud синхронизация: перенос данных между устройствами Apple через CloudKit private database.

Пользовательский интерфейс

Интерфейс построен вокруг трёх вкладок:

  • Дневник — история записей и быстрый ввод нового эпизода.
  • Анализ — статистика, графики и heatmap-календарь.
  • Настройки — управление тегами/эмодзи, экспорт и карточки.

Особенности реализации

  • SwiftData как локальный source of truth для записей, тегов и интенсивностей.
  • CloudKit для синхронизации данных через private iCloud database.
  • Централизованный orchestration-слой TearDataManager для единообразного lifecycle мутаций.
  • Отдельный аналитический слой в Domain:
    • HeatmapEngine
    • InsightsEngine
    • ReportGenerator
    • CardRenderer
  • Тестируемая архитектура через протоколы, моки и выделенные тесты для domain/view model/UI.

Конфиденциальность

  • Данные пользователя хранятся на устройстве и в private iCloud container.
  • Приложение не использует сторонние аналитические/рекламные SDK.
  • Экспорт выполняется локально и передаётся только через системный Share Sheet по явному действию пользователя.

Требования

  • iOS 17.0+
  • Xcode 15+
  • macOS Ventura 13.0+
  • Apple ID (для сценариев iCloud/CloudKit)

Технологии

  • Swift 5.9+
  • SwiftUI - весь интерфейс приложения построен на декларативных View-компонентах и Navigation-паттернах SwiftUI.
  • SwiftData - основной persistence-слой для хранения записей, тегов и связанных данных на устройстве.
  • CloudKit - синхронизация пользовательских данных между устройствами через private iCloud database.
  • Combine - реактивные подписки и обновление состояния экранов при изменениях данных и системных событий.
  • Charts - визуализация статистики по периодам, тегам и интенсивностям на аналитических экранах.
  • ImageRenderer / UIGraphicsPDFRenderer - генерация share-карточек в изображение и формирование PDF-отчётов.
  • XCTest / XCUITest - unit- и UI-тесты для аналитики, экспорта, heatmap и ключевых пользовательских сценариев.
  • SPM dependencies: в текущей конфигурации внешние пакеты не являются обязательной частью основного функционала.

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

iCriedTodayDesign/
├── App/                # точка входа и корневая композиция
├── Core/               # инфраструктурные утилиты
├── Data/               # persistence, repositories, seed
├── Domain/             # модели, аналитика, экспорт, insights
├── Features/           # feature-модули UI + ViewModel
│   ├── Diary/
│   ├── EntryForm/
│   ├── Settings/
│   ├── Statistics/
│   └── Tags/
└── Shared/             # переиспользуемые компоненты

iCriedTodayDesignTests/     # unit-тесты
iCriedTodayDesignUITests/   # UI-тесты

## Установка и запуск

1. Клонировать репозиторий:
   ```bash
   git clone https://github.com/berrrchik/iCried-SwiftApp.git
  1. Открыть iCriedTodayDesign.xcodeproj в Xcode.
  2. Выбрать target iCriedTodayDesign, включить Automatically manage signing, выбрать Team.
  3. Запустить на симуляторе или устройстве с iOS 17+.

About

iCried — дневник эмоций для iOS. Приложение помогает отслеживать моменты грусти и анализировать своё эмоциональное состояние.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages