Skip to main content

Project structure

Полная структура проекта Thrust с описанием каждой папки и ключевых файлов.

Корневая структура

Thrust/
├── Thrust/                    # Основной код приложения
├── Thrust.appTests/           # Unit тесты
├── Thrust.appUITests/         # UI тесты
├── ThrustLiveActivity/        # Live Activity extension
├── Scripts/                   # Скрипты автоматизации
├── Resources/                 # Ресурсы (иконки, assets)
├── docs/                      # Документация (Mintlify)
└── Thrust.xcodeproj/          # Xcode проект

Thrust/ (Основной код)

Core - Ядро приложения

ФайлНазначение
Thrust.swiftEntry point приложения, настройка Environment
AppDelegate.swiftLifecycle events, push notifications
MainView.swiftRoot view с TabBar и глобальной навигацией
DataSchema.swiftSwiftData schema versions и миграции
AppModelContainer.swiftКонфигурация ModelContainer
AppTab.swiftEnum для табов приложения
AppGroup.swiftApp Group для виджетов
Когда редактировать:
  • Thrust.swift - добавление новых Environment объектов
  • MainView.swift - изменение структуры табов
  • DataSchema.swift - миграции данных при изменении моделей

Models - Модели данных (29 моделей)

МодельФайлОписание
TransactionTransaction.swiftТранзакции (доходы, расходы, переводы)
AccountAccount.swiftСчета (наличные, сбережения, кредитки, долги)
BudgetBudget.swiftБюджеты с периодами и rollover
GoalGoal.swiftЦели сбережений с автоматизацией
CategoryCategory.swiftКатегории транзакций (иерархия)
TagTag.swiftТеги для транзакций
RecurringPaymentRecurringPayment.swiftРегулярные платежи
StockHoldingStockHolding.swiftПозиции в акциях
CryptoWalletCryptoWallet.swiftКрипто кошельки
UserProfileUserProfile.swiftПрофиль пользователя
ChatConversationChatConversation.swiftИстория чатов с AI CFO
AutomationRuleAutomationRule.swiftПравила автоматизации
SplitTemplateSplitTemplate.swiftШаблоны split транзакций
TransactionGroupTransactionGroup.swiftГруппы транзакций
Все модели используют:
  • @Model макрос
  • UUID для id
  • Date для timestamps
  • Relationships для связей

Features - Функциональные модули (34 модуля)

Dashboard

Features/Dashboard/
├── DashboardView.swift              # Главный экран
├── DashboardViewModel.swift         # ViewModel
├── BalanceChart/                    # График баланса
│   ├── BalanceChartWidget.swift
│   └── BalanceChartState.swift
├── ActionCards/                     # Action cards (Health style)
│   ├── ActionCard.swift
│   ├── ActionCardType.swift
│   └── ActionCardsManager.swift
└── Sections/                        # Секции дашборда
Как работать:
  • DashboardView.swift - главный файл, содержит layout
  • DashboardViewModel.swift - вся бизнес-логика
  • Добавление новой секции: создайте view в Sections/

Transactions

Features/Transactions/
├── TransactionsView.swift           # Список транзакций
├── TransactionRowView.swift         # Строка транзакции
├── TransactionDetailSheet.swift     # Детали
├── UniversalTransactionEditor.swift # Редактор (add/edit)
├── FilterView.swift                 # Фильтры
├── Split/                           # Split транзакции
│   └── SplitTemplatesPickerSheet.swift
├── Groups/                          # Группы транзакций
│   └── CreateTransactionGroupSheet.swift
└── Types/                           # Типы данных
    ├── TransactionsListConfiguration.swift
    └── MonthSelection.swift
Ключевые компоненты:
  • TransactionsListModule.swift - переиспользуемый модуль списка
  • UniversalTransactionEditor.swift - универсальный редактор
  • TransactionRowView.swift - кастомизируемая строка

Accounts

Features/Accounts/
├── AccountsSettingsView.swift       # Список счетов
├── AccountDetailView.swift          # Детали счета
├── AddAccountSheet.swift            # Создание счета
├── EditAccountSheet.swift           # Редактирование
├── AccountRow.swift                 # Строка счета
├── AccountCardView.swift            # Карточка счета
├── LoanAccountSheet.swift           # Кредиты/займы
└── RealEstateAccountSheet.swift     # Недвижимость

Budgeting

Modules/Budget/
├── BudgetListView.swift             # Список бюджетов
├── BudgetDetailView.swift           # Детали бюджета
├── EditBudgetSheet.swift            # Редактор
├── BudgetCardView.swift             # Карточка бюджета
├── StackedBudgetCard.swift          # Stacked card (Wallet style)
└── Components/                      # Компоненты
    ├── BudgetAnalyticsCard.swift
    ├── BudgetSuggestionsCard.swift
    └── SpendingTrendsChart.swift

Goals

Goals/
├── GoalListView.swift               # Список целей
├── GoalDetailView.swift             # Детали цели
├── AddGoalView.swift                # Создание/редактирование
├── GoalCardView.swift               # Карточка цели
├── StackedGoalCard.swift            # Stacked card
├── AddContributionSheet.swift       # Добавление вклада
└── GoalManager.swift                # Менеджер целей

Investments

Features/Investments/
├── InvestmentsView.swift            # Главный view
├── Crypto/                          # Криптовалюты
│   ├── CryptoView.swift
│   ├── CryptoWalletDetailView.swift
│   ├── AddCryptoWalletSheet.swift
│   ├── CryptoWalletManager.swift
│   ├── Services/                    # Blockchain сервисы
│   │   ├── MoralisEVMService.swift  # Ethereum, BSC, Polygon
│   │   ├── SolanaService.swift      # Solana
│   │   ├── TONService.swift         # TON
│   │   ├── TRONService.swift        # TRON
│   │   ├── BitcoinService.swift     # Bitcoin
│   │   ├── CosmosService.swift      # Cosmos
│   │   └── PolkadotService.swift    # Polkadot
│   └── CoinGeckoAPIService.swift    # Цены токенов
├── Stocks/                          # Акции
│   ├── StocksView.swift
│   ├── StockDetailView.swift
│   ├── AddStockHoldingSheet.swift
│   ├── StocksAPIService.swift       # Yahoo Finance
│   └── Components/
│       ├── StockNewsSection.swift
│       └── FinancialDataSection.swift
└── Statistics/                      # Статистика портфеля
    └── InvestmentStatisticsView.swift

AI CFO

FoundationModels/
├── CFOChatView.swift                # Chat UI
├── LeapCFOService.swift             # AI сервис (70KB!)
├── CFOActions/                      # Действия AI
│   ├── CFOActionsEngine.swift       # Парсинг интентов
│   ├── CFOActionTypes.swift         # Типы действий
│   └── CFOChatCharts.swift          # Графики в чате
├── RichText/                        # Форматирование
│   └── CFORichTextParser.swift
├── IntelligentInputParser.swift     # NLP парсинг
└── SpeechRecognitionManager.swift   # Голосовой ввод
Ключевой файл: LeapCFOService.swift (70KB) - весь AI функционал

Reports

Features/Reports/
├── ReportsContainerView.swift       # Контейнер отчетов
├── NetWorthReportView.swift         # Чистый капитал
├── CashFlowReportView.swift         # Денежный поток
├── SpendingReportView.swift         # Расходы
├── FinancialTrendsView.swift        # Тренды
└── StatementGeneratorView.swift     # Генератор выписок

Settings

Features/Settings/
├── SettingsView.swift               # Главный экран настроек
├── Appearance/                      # Внешний вид
│   ├── PersonalizationView.swift
│   └── TabBarCustomizationView.swift
├── Security/                        # Безопасность
│   ├── AppleSignInView.swift
│   ├── PasskeysListView.swift
│   └── BackupRestoreView.swift
├── Family/                          # Семейный доступ
│   ├── AddFamilyMemberView.swift
│   └── FamilyRolesManagementView.swift
└── Transactions/                    # Настройки транзакций
    ├── TransactionDisplaySettingsView.swift
    └── TransactionSubtitleSettingsView.swift

Managers - Менеджеры (30+ менеджеров)

МенеджерФайлНазначение
GamificationManagerManagers/Gamification/GamificationManager.swiftXP, уровни, достижения
AchievementManagerManagers/Gamification/AchievementManager.swiftСистема достижений
NotificationManagerManagers/NotificationManager.swiftPush уведомления
PrivacyManagerManagers/PrivacyManager.swiftGhost/Connected режимы
CloudKitManagerManagers/CloudKitManager.swiftCloudKit синхронизация
CryptoWalletManagerFeatures/Investments/Crypto/CryptoWalletManager.swiftУправление крипто кошельками
SheetCoordinatorCoordinators/SheetCoordinator.swiftКоординация sheets
HapticsManagerManagers/HapticsManager.swiftТактильная обратная связь
LocationManagerManagers/LocationManager.swiftГеолокация
SpotlightIndexerManagers/SpotlightIndexer.swiftiOS Spotlight интеграция
Как создать новый менеджер:
  1. Создайте класс с @Observable:
@Observable
final class YourManager {
    static let shared = YourManager()
    private init() {}
    
    func doSomething() {
        // Logic
    }
}
  1. Добавьте в Environment в Thrust.swift:
.environment(YourManager.shared)
  1. Используйте в views:
@Environment(YourManager.self) private var yourManager

Services - Сервисы

СервисФайлНазначение
LeapCFOServiceFoundationModels/LeapCFOService.swiftAI CFO (on-device)
GoCardlessBankServiceModules/Finance/GoCardlessBankService.swiftБанковская синхронизация
CoinGeckoAPIServiceFeatures/Investments/Crypto/CoinGeckoAPIService.swiftЦены криптовалют
StocksAPIServiceFeatures/Investments/Stocks/StocksAPIService.swiftДанные по акциям
NewsAPIServiceServices/NewsAPIService.swiftФинансовые новости
CurrencyRatesServices/CurrencyRates.swiftКурсы валют
TransactionSearchServiceServices/Search/TransactionSearchService.swiftПоиск транзакций

Engines - Аналитические движки

ДвижокФайлЧто делает
AnalyticsEngineEngines/AnalyticsEngine.swiftБазовая аналитика
ForecastingEngineEngines/ForecastingEngine.swiftПрогнозирование балансов
InsightEngineEngines/InsightEngine.swiftГенерация инсайтов
SafeToSpendEngineEngines/SafeToSpendEngine.swiftРасчет безопасной суммы
NetWorthCalculatorEngines/NetWorthCalculator.swiftЧистый капитал
PnLCalculatorEngines/PnLCalculator.swiftProfit & Loss
RiskAnalyzerEngines/RiskAnalyzer.swiftАнализ рисков
IntelligentCategorizerEngines/IntelligentCategorizer.swiftML категоризация
SavingsAutomationEngineEngines/SavingsAutomationEngine.swiftАвтоматизация сбережений
Как использовать движки: Движки - stateless, создавайте экземпляр при необходимости:
let engine = SafeToSpendEngine()
let result = engine.calculate(
    accounts: accounts,
    budgets: budgets,
    recurringPayments: payments
)

Components - Переиспользуемые компоненты

Components/
├── Charts/                          # Графики
│   ├── FinTechLineChart.swift       # Линейный график
│   ├── FinTechBarChart.swift        # Столбчатый график
│   └── FinTechDonutChart.swift      # Круговая диаграмма
├── UnifiedListRow/                  # Универсальная строка
│   ├── UnifiedListRow.swift
│   ├── UnifiedListRowContent.swift
│   ├── UnifiedListRowIcon.swift
│   └── UnifiedListRowSwipeActions.swift
├── FormCard.swift                   # Карточка формы
├── EmptyStateView.swift             # Пустые состояния
├── ShareSheet.swift                 # Шаринг
├── ConfettiView.swift               # Конфетти анимация
├── EnhancedToast.swift              # Тосты
├── SymbolPickerView.swift           # Выбор иконки
├── CurrencyPickerView.swift         # Выбор валюты
└── ...
Когда создавать компонент:
  • Используется в 3+ местах
  • Имеет сложную логику
  • Нужна переиспользуемость

Design - Дизайн система

Design/
├── Typography.swift                 # Типографика
├── AppColors.swift                  # Цвета
├── SpacingConstants.swift           # Отступы
├── DesignConstants.swift            # Константы
├── CardStyle.swift                  # Стили карточек
├── AppleStyleIconView.swift         # Иконки
├── Motion.swift                     # Анимации
└── AppBackground.swift              # Фоны
Использование:
// Typography
Text("Title").appTextStyle(.screenTitle)

// Spacing
.padding(SpacingGrid.standard)

// Colors
.foregroundStyle(AppColors.success)

// Icons
AppleStyleIconView.inline(systemName: "plus", size: .body)

// Cards
VStack { }.cardStyle()

// Animations
.animation(Motion.interaction, value: state)

Extensions - Расширения

Extensions/
├── Extensions.swift                 # Общие расширения
├── View+Animations.swift            # Анимации для View
├── View+Sensitive.swift             # Privacy curtain
├── Calendar+WeekStart.swift         # Начало недели
├── CurrencyExchangeHelpers.swift    # Конвертация валют
└── EnvironmentKeys.swift            # Custom Environment keys

Utilities - Утилиты

Utilities/
├── AppLogger.swift                  # Логирование
├── DateFormatterHelper.swift       # Форматирование дат
├── PreviewSampleData.swift         # Данные для превью
├── DebugLogger.swift               # Debug логи
└── AppRestartHelper.swift          # Перезапуск приложения

Widgets и Extensions

ThrustLiveActivity

ThrustLiveActivity/
├── ThrustLiveActivityBundle.swift   # Bundle
├── PrivacyModeLiveActivity.swift    # Privacy mode activity
├── LiveActivityManager.swift        # Менеджер
└── Widgets/                         # Виджеты
    ├── LockScreenBalanceWidget.swift
    └── QuickAddWidget.swift

Тесты

Unit Tests

Thrust.appTests/
├── ModelTests.swift                 # Тесты моделей
├── EngineTests/                     # Тесты движков
│   ├── SafeToSpendEngineTests.swift
│   └── NetWorthCalculatorTests.swift
├── ManagerTests/                    # Тесты менеджеров
└── ComponentTests/                  # Тесты компонентов

UI Tests

Thrust.appUITests/
├── CriticalFlowsUITests.swift       # Критические сценарии
├── AccessibilityUITests.swift       # Accessibility
├── PerformanceUITests.swift         # Производительность
└── Flows/                           # User flows
    └── CriticalUserFlowsUITests.swift

Ресурсы

Assets

Thrust/Assets.xcassets/
├── AppIcon.appiconset/              # Иконка приложения
├── AppIconDark.appiconset/          # Темная иконка
├── AppIconTinted.appiconset/        # Tinted иконка
├── AccentColor.colorset/            # Accent color
├── LaunchLogo.imageset/             # Лого для Launch Screen
└── Keychains/                       # Иконки достижений

Локализация

Thrust/
├── en.lproj/Localizable.strings     # Английский
├── ru.lproj/Localizable.strings     # Русский
├── de.lproj/Localizable.strings     # Немецкий
├── fr.lproj/Localizable.strings     # Французский
├── es.lproj/Localizable.strings     # Испанский
├── it.lproj/Localizable.strings     # Итальянский
├── pt.lproj/Localizable.strings     # Португальский
├── nl.lproj/Localizable.strings     # Голландский
├── sv.lproj/Localizable.strings     # Шведский
├── pl.lproj/Localizable.strings     # Польский
├── uk.lproj/Localizable.strings     # Украинский
└── be.lproj/Localizable.strings     # Белорусский

Конфигурация

Secrets

Thrust/Config/
├── Secrets.plist.template           # Шаблон
└── Secrets.plist                    # API ключи (gitignored)
Структура Secrets.plist:
<dict>
    <key>GoCardlessSecretID</key>
    <string>your_secret_id</string>
    <key>GoCardlessSecretKey</key>
    <string>your_secret_key</string>
    <key>MoralisAPIKey</key>
    <string>your_moralis_key</string>
</dict>

Entitlements

Thrust/
├── Thrust.entitlements              # Production
├── Thrust.Debug.entitlements        # Debug
└── Thrust.Release.entitlements      # Release

Скрипты

Scripts/
├── QUICK_SETUP.sh                   # Быстрая настройка
├── quality-check-fintech.sh         # Проверка качества
├── release_check.sh                 # Pre-release проверка
├── audit_localizations.py           # Аудит переводов
└── generate_app_icons.sh            # Генерация иконок
Использование:
# Быстрая настройка проекта
./Scripts/QUICK_SETUP.sh

# Проверка качества кода
./Scripts/quality-check-fintech.sh

# Проверка перед релизом
./Scripts/release_check.sh

Важные файлы

Конфигурация проекта

ФайлНазначение
Package.swiftSPM зависимости
Thrust-app-Info.plistApp info
Configuration.storekitStoreKit конфигурация
PrivacyInfo.xcprivacyPrivacy manifest
.xcode-cloud/Xcode Cloud CI/CD

Документация

ФайлНазначение
README.mdГлавный README
CLAUDE.mdИнструкции для AI ассистента
ACKNOWLEDGMENTS.mdБлагодарности
COMPLETE_FEATURES_DOCUMENTATION.mdПолная документация функций

Навигация по коду

Найти функцию

По названию:
# Поиск функции
grep -r "func functionName" Thrust/

# Поиск класса
grep -r "class ClassName" Thrust/
По функционалу:
  • Транзакции → Features/Transactions/
  • Бюджеты → Modules/Budget/
  • Цели → Goals/
  • AI CFO → FoundationModels/
  • Крипто → Features/Investments/Crypto/
  • Настройки → Features/Settings/

Найти UI компонент

  1. Проверьте Components/ - переиспользуемые компоненты
  2. Проверьте Design/ - дизайн-система
  3. Проверьте модуль функции - специфичные компоненты

Следующие шаги