GymCore — це повноцінна клієнт-серверна система для трекінгу фізичної активності та харчування. Проєкт реалізує гібридну архітектуру "Offline-First", що дозволяє додатку працювати без інтернету, зберігаючи дані локально, та синхронізувати їх із сервером для резервного копіювання.
- Трекер тренувань: Створення кастомних тренувань, додавання вправ, підходів, ваги та повторень.
- Щоденник харчування: Облік спожитих продуктів з автоматичним підрахунком калорій та БЖВ (Білки/Жири/Вуглеводи).
- Гібридне зберігання: Миттєве збереження в SwiftData (на пристрої) + асинхронна відправка JSON на Node.js сервер.
- Статистика: Візуалізація активності за тиждень за допомогою Swift Charts.
- Мова: Swift 5
- UI Фреймворк: SwiftUI
- База даних: SwiftData (Local Persistence)
- Архітектура: MVVM (Model-View-ViewModel)
- Мережа: URLSession, Codable (REST API Client)
- Платформа: Node.js
- Фреймворк: Express.js
- Зберігання: File System (JSON-файли) — емуляція бази даних для навчальних цілей.
Для коректної роботи системи необхідно запустити спочатку сервер, а потім мобільний додаток.
Переконайтеся, що у вас встановлено Node.js.
- Відкрийте термінал та перейдіть у папку сервера:
cd GymCore-Server - Встановіть залежності (якщо запускаєте вперше):
npm install
- Запустіть сервер:
Очікуваний результат у консолі:
node server.js
🚀 Сервер працює на http://localhost:3000 📁 Дані будуть зберігатися в папці: .../data
Важливо: Не закривайте вікно терміналу, поки тестуєте додаток!
Вам знадобиться Mac із встановленим Xcode 15+.
- Відкрийте файл проєкту
GymCore.xcodeprojу Xcode. - Переконайтеся, що обрано симулятор (наприклад, iPhone 16 Pro).
- Натисніть Cmd + R або кнопку
▶️ (Run). - Додаток запуститься в симуляторі.
Примітка: Додаток налаштовано для роботи з локальним сервером (
http://localhost:3000). Якщо ви хочете запустити його на фізичному iPhone, змінітьbaseURLу файліNetworkManager.swiftна IP-адресу вашого комп'ютера в локальній мережі.
1. Додаток не зберігає дані на сервері?
- Перевірте, чи запущено сервер (
node server.js). - Перевірте налаштування App Transport Security в
Info.plist(має бутиAllow Arbitrary Loads = YES), оскільки локальний сервер працює через HTTP.
2. Помилка компіляції в Xcode?
- Спробуйте очистити проєкт:
Product->Clean Build Folder(Cmd + Shift + K).
Copyright © 2025 Кучак Володимир. Всі права захищено.
Цей програмний код є частиною курсової роботи та об'єктом інтелектуальної власності автора.
Дозволяється: ✅ Завантажувати та запускати проєкт для ознайомлення, оцінювання або навчання. ✅ Використовувати фрагменти коду як приклад для власних навчальних проєктів (з посиланням на автора).
Забороняється: ❌ Змінювати код та видавати його за свій. ❌ Розповсюджувати, публікувати або використовувати цей проєкт у комерційних цілях без письмового дозволу автора.
Developed for Lviv National University named after Ivan Franko, 2025.