Skip to content

gru2007/SwiftGups

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 

Repository files navigation

SwiftGups v3.0 - Полноценное приложение для студентов ДВГУПС 🎓

Современное мобильное приложение на SwiftUI для студентов Дальневосточного государственного университета путей сообщения (ДВГУПС) с регистрацией, расписанием, домашними заданиями и синхронизацией через iCloud.

🚀 Новые возможности v3.0

Полностью реализовано в v3.0:

🔐 Регистрация и профиль пользователя

  • 🎨 Красивый экран приветствия с анимациями и градиентами
  • 👤 Персональная регистрация - имя, факультет, группа
  • 💾 Локальное сохранение профиля с SwiftData
  • ✏️ Редактирование профиля в любое время
  • 🔄 Сброс данных с подтверждением

📅 Расписание занятий (улучшенное)

  • 🏛️ Все факультеты и институты ДВГУПС (17 подразделений)
  • 📅 Недельное расписание с интуитивной навигацией
  • 🗓️ Календарь для выбора даты с современным дизайном
  • 🔍 Умный поиск групп с мгновенными результатами
  • 👨‍🏫 Преподаватели с контактами и email-ссылками
  • 🏢 Аудитории и онлайн-ссылки
  • 🏷️ Цветовая индикация типов занятий
  • 📊 Четность недель и номера пар
  • 🔗 Кликабельные ссылки в описаниях занятий
  • 🔔 Расписание звонков ДВГУПС (встроенное)
  • 🔄 Pull-to-refresh обновление

📚 Домашние задания (НОВОЕ!)

  • Добавление заданий с подробным описанием
  • 🎯 Приоритеты (низкий, средний, высокий, срочный)
  • 📅 Даты сдачи с визуальными индикаторами
  • Отметка выполнения одним касанием
  • 🔍 Фильтрация по статусу (все, к выполнению, выполненные, просроченные)
  • ☁️ iCloud синхронизация - доступно на всех ваших устройствах
  • 🚨 Индикаторы просроченных заданий

🎨 Современный дизайн

  • 📱 TabView с тремя основными разделами
  • 🎨 Apple Design Guidelines - нативный iOS-стиль
  • 🌙 Поддержка Dark Mode
  • Красивые анимации и переходы
  • 🎨 Градиенты и тени для современного вида
  • 📐 Адаптивная верстка для всех размеров экранов

🏗️ Архитектура проекта v3.0

📊 Модели данных (Models.swift)

Основные модели расписания

  • Faculty - факультет/институт с полным списком всех подразделений ДВГУПС
  • Group - информация о группе с привязкой к факультету
  • Schedule - расписание с поддержкой периодов (день/неделя)
  • ScheduleDay - день расписания с номером недели и четностью
  • Lesson - занятие с полной информацией (время, тип, ссылки)
  • Teacher - преподаватель с email для связи
  • LessonType - тип занятия с цветовой схемой
  • LessonTime - расписание звонков ДВГУПС (1-6 пары)

SwiftData модели (NEW!)

  • User - пользователь приложения с профилем и группой
  • Homework - домашние задания с iCloud синхронизацией
  • HomeworkPriority - приоритеты заданий с цветовой схемой

🌐 API клиент (APIClient.swift)

  • DVGUPSAPIClient - полностью переписанный с @MainActor
  • Новые методы:
    • fetchGroups(for:date:) - загрузка групп по факультету
    • fetchSchedule(for:startDate:endDate:) - период расписания
    • fetchScheduleByAuditorium/Teacher - альтернативные запросы
  • Продвинутый HTML-парсинг с regex для всех полей
  • Поддержка временной зоны Asia/Vladivostok

⚙️ Сервис управления (ScheduleService.swift)

  • ScheduleService - полностью обновленный @MainActor ObservableObject
  • Новый функционал:
    • Управление факультетами и группами
    • Недельная навигация (previous/next/current week)
    • Автоматическое обновление при изменениях
    • Поиск групп с фильтрацией
    • Расчет диапазонов недель

🎨 UI компоненты (ContentView.swift)

  • Модульная архитектура:
    • HeaderView - заголовок с брендингом
    • FacultySelectionView - выбор из 17 факультетов через Menu
    • DateSelectionView - недельная навигация + календарь
    • GroupSelectionView - поиск + горизонтальная прокрутка групп
    • ScheduleView/DayView/LessonView - многоуровневое отображение
    • DatePickerSheet - модальный выбор даты
  • Pull-to-refresh и состояния загрузки

🧪 Демонстрация (ScheduleDemo.swift)

  • Комплексное тестирование v2.0 функционала
  • Демонстрация всех новых возможностей
  • Проверка недельного расписания и навигации
  • Тестирование с реальными данными API

Технические особенности

API Integration

Приложение работает с веб-интерфейсом ДВГУПС:

  • Endpoint: https://dvgups.ru/index.php?Itemid=1246&option=com_timetable&view=newtimetable
  • Получение групп: POST запрос с FacID=2
  • Получение расписания: POST запрос с GroupID={id}

HTML парсинг

  • Регулярные выражения для извлечения данных
  • Обработка различных форматов дат и времени
  • Извлечение ссылок на онлайн-занятия
  • Парсинг информации о преподавателях

Обработка ошибок

  • APIError enum для типизированных ошибок
  • Graceful handling сетевых проблем
  • Информативные сообщения пользователю

Использование

Запуск приложения

  1. Откройте проект в Xcode
  2. Выберите симулятор или устройство
  3. Нажмите Run (⌘R)

Тестирование парсера

// В консоли Xcode или в Playground
Task {
    let demo = ScheduleDemo()
    await demo.runDemo()
}

Использование API клиента напрямую

let apiClient = DVGUPSAPIClient()

// Получить список групп
let groups = try await apiClient.fetchGroups(for: "2")

// Получить расписание для группы
let schedule = try await apiClient.fetchSchedule(for: "54375")

Известные ограничения

  1. Зависимость от внешнего API: приложение полностью зависит от доступности сайта dvgups.ru
  2. HTML парсинг: изменения в структуре HTML могут сломать парсер
  3. Без офлайн режима: нет локального кеширования расписания
  4. Один факультет: сейчас поддерживается только факультет с ID=2

Возможные улучшения

Ближайшие задачи:

  • Локальное кеширование расписания
  • Поддержка других факультетов
  • Push-уведомления о изменениях
  • Экспорт в календарь
  • Темная тема

Долгосрочные планы:

  • Интеграция с официальным API (если появится)
  • Персональные настройки и избранные группы
  • Статистика посещаемости
  • Интеграция с картами для поиска аудиторий

Требования

  • iOS 15.0+
  • Xcode 14.0+
  • Swift 5.7+
  • Интернет-соединение для загрузки данных

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

SwiftGups/
├── SwiftGups/
│   ├── Models.swift           # Модели данных (+ SwiftData User/Homework)
│   ├── APIClient.swift        # API клиент и HTML парсер
│   ├── ScheduleService.swift  # Сервис управления состоянием
│   ├── SwiftGupsApp.swift     # Main app с SwiftData контейнером
│   ├── MainAppView.swift      # Главный экран с регистрацией (NEW!)
│   ├── TabBarView.swift       # TabView с тремя экранами (NEW!)
│   ├── ContentView.swift      # UI компоненты расписания (обновлено)
│   ├── ScheduleDemo.swift     # Демонстрация работы
│   ├── Info.plist             # Конфигурация с iCloud поддержкой
│   └── SwiftGups.entitlements # CloudKit entitlements
├── Assets.xcassets/           # Ресурсы приложения
└── README.md                  # Этот файл

Лицензия

Проект создан в образовательных целях. Используйте на свой страх и риск.


Автор: Разработано для студентов ДВГУПС
Версия: 3.0 🎓
Статус: ✅ Полноценное приложение готово к использованию

Что нового в v3.0:

  • 👤 Полная регистрация и профиль пользователя
  • 📚 Домашние задания с iCloud синхронизацией
  • 📱 Современный TabView интерфейс
  • 🔗 Кликабельные ссылки в расписании
  • 🔔 Встроенное расписание звонков ДВГУПС
  • 🎨 Apple Design Guidelines по всему приложению

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages