An open API service indexing awesome lists of open source software.

https://github.com/kupriyanovnik/bikestat

an application written in SwiftUI, which may be useful for cyclists
https://github.com/kupriyanovnik/bikestat

async-await coredata corelocation mvvm swiftui

Last synced: about 1 month ago
JSON representation

an application written in SwiftUI, which may be useful for cyclists

Awesome Lists containing this project

README

        

# **BikeStat 🚲**

![МОШ](https://predprof.olimpiada.ru/images/logo-predporf.svg)

![Xcode](https://img.shields.io/badge/Xcode-007ACC?style=for-the-badge&logo=Xcode&logoColor=white)
![Swift](https://img.shields.io/badge/swift-F54A2A?style=for-the-badge&logo=swift&logoColor=white)
![iOS](https://img.shields.io/badge/iOS-000000?style=for-the-badge&logo=ios&logoColor=white)
![Figma](https://img.shields.io/badge/figma-%23F24E1E.svg?style=for-the-badge&logo=figma&logoColor=white)

## Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ!

### Π’ΠΈΠ΄Π΅ΠΎ-дСмонстрация работоспособности
[Rutube](https://rutube.ru/video/ce33ff3d1f01ee3422ef5ccf2b53beee/)

### Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ
1. [Никита ΠšΡƒΠΏΡ€ΠΈΡΠ½ΠΎΠ²](https://github.com/kupriyanovNik)
2. [Анфиса ΠžΠΏΠ°Ρ€ΠΈΠ½Π°](https://github.com/Anfisok)

### ОписаниС
НашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ написано Π½Π° [SwiftUI](https://developer.apple.com/xcode/swiftui/) ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для устройств с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой [iOS 16](https://ru.wikipedia.org/wiki/IOS_16) ΠΈ Π½ΠΎΠ²Π΅Π΅.
Оно прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ [ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный интСрфСйс](https://www.figma.com/file/9rCteZ4QIBH2Uw3MMreihN/the-true-bikestat?type=design&node-id=441%3A1121&mode=design&t=SWfG9qbFdvQHJvIh-1) для отслСТивания прогрСсса Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΠΊ вСлосипСдистов.

### Основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»
- Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΅Π·Π΄ΠΊΠ΅, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя Π½Π°Ρ‡Π°Π»Π°, Π΄Π»ΠΈΠ½Ρƒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ врСмя нахоТдСния Π² ΠΏΡƒΡ‚ΠΈ. ПослС сохранСния Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ ΠΌΡ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ **Ρ€Π°ΡΡ‡Π΅Ρ‚Π½ΡƒΡŽ** ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.
- На протяТСнии ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ ΠΌΡ‹ собираСм Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ расстояниС, врСмя Π² ΠΏΡƒΡ‚ΠΈ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ΠΏΡƒΠ»ΡŒΡ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… формируСтся **Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ** ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.
- ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ информация ΠΎ Π½Π΅ΠΉ **сохраняСтся** Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… [CoreData](https://developer.apple.com/documentation/coredata/) ΠΈ отобраТаСтся Π½Π° экранС истории ΠΏΠΎΠ΅Π·Π΄ΠΎΠΊ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сохранСнныС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π΄Π°Ρ‚Ρƒ ΠΈ врСмя, ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ расстояниС, врСмя Π² ΠΏΡƒΡ‚ΠΈ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ скорости ΠΈ ΠΏΡƒΠ»ΡŒΡΠ΅, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°Π»ΠΎΡ€ΠΈΠΈ, Ρ€Π°ΡΡ‡Π΅Ρ‚Π½ΡƒΡŽ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ слоТности.
- ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ **Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎ слоТности** ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ ΠΈ совСты для Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ развития, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ². Для отобраТСния Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 3 ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ.

### :smile:НашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ вСлосипСдистам эффСктивнСС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ!

### Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ: [GitHub Projects](https://github.com/users/kupriyanovNik/projects/4)

### ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ
- [ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈ понятный интСрфСйс](https://www.figma.com/file/9rCteZ4QIBH2Uw3MMreihN/the-true-bikestat?type=design&node-id=441%3A1121&mode=design&t=SWfG9qbFdvQHJvIh-1)
- ИспользованиС [SwiftUI](https://developer.apple.com/xcode/swiftui/)
- ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° [iOS 16](https://ru.wikipedia.org/wiki/IOS_16) ΠΈ Π²Ρ‹ΡˆΠ΅
- Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΡƒΡŽ Π³Π°ΠΌΠΌΡƒ прилоТСния (🩡 / πŸ’™ / πŸ’œ)
- Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния скорости ΠΈ расстояния (ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Ρ‹ / ΠΌΠΈΠ»ΠΈ)

### ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ тСхничСская информация
- АрхитСктура: [MVVM](https://ru.wikipedia.org/wiki/Model-View-ViewModel)+S
- Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ сохранСниС Π΄Π°Π½Π½Ρ‹Ρ…: [CoreData](https://developer.apple.com/documentation/coredata/)
- Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ слой Π½Π° [async/await](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/)
- ΠšΠ°Ρ€Ρ‚Π°: [MapKit](https://developer.apple.com/documentation/mapkit/)
- Unit-тСстированиС: [XCTest](https://developer.apple.com/documentation/xctest)

### Установка
###### Для запуска прилоТСния Π½Π° устройствС Π½ΡƒΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с установлСнной MacOS ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы iOS
Для установки прилоТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

1. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ рСпозитория Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€

- ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»
- ВвСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
+ cd ΠΏΡƒΡ‚ΡŒ_ΠΊ_ΠΏΠ°ΠΏΠΊΠ΅_Π²_ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ_Π½ΡƒΠΆΠ½ΠΎ_ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
+ git clone https://github.com/kupriyanovNik/BikeStat.git
- Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)

2. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

- Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ [Xcode](https://developer.apple.com/xcode/)
- ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ cmd + shift + 1
- ΠΠ°ΠΆΠ°Ρ‚ΡŒ "Open Existing Project..."
- Найти Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ
- Π’ ΠΏΠ°ΠΏΠΊΠ΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» "BikeStat.xcodeproj"
- ΠΠ°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ "Open" / Π½Π°ΠΆΠ°Ρ‚ΡŒ "return" ΠΈΠ»ΠΈ "Enter" Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ (зависит ΠΎΡ‚ раскладки)
- Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги Ρ€Π°Π·Π΄Π΅Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ **Ρ‚ΠΎΠ»ΡŒΠΊΠΎ** для запуска Π½Π° физичСском устройствС
- ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Project Navigator (ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ cmd + 1)
- ΠΠ°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΠΈΠΊΠΎΠ½ΠΊΠ° Xcode, справа ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ написано BikeStat)
- Π’ появившСмся ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ "Signing & Capabilities"
- ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ [BundleID](https://developer.apple.com/documentation/appstoreconnectapi/bundle_ids) Π½Π° собствСнный

3. Запуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° физичСском устройствС ΠΈΠ»ΠΈ Π² симуляторС

- ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ cmd + shift + 2
- Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ симулятор ΠΈΠ»ΠΈ физичСскоС устройство Π² качСствС Run Destination
- Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Run Destination (красная ΠΊΠ½ΠΎΠΏΠΊΠ° слСва свСрху / ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ cmd + w)
- Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ (Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ мСню Product -> Run / ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ cmd + r)

### ЛицСнзия
ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ Π² соотвСтствии с условиями Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ [LICENSE.md](https://github.com/kupriyanovNik/BikeStat/blob/develop/LICENSE).

### ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹
Если Ρƒ вас Π΅ΡΡ‚ΡŒ вопросы ΠΈΠ»ΠΈ прСдлоТСния, поТалуйста, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ:
- ΠŸΠΎΡ‡Ρ‚Π° [[email protected]](mailto:[email protected]) ΠΈΠ»ΠΈ [[email protected]](mailto:[email protected])
- Telegram @idontknowktoya ΠΈΠ»ΠΈ @anfisochik
- Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ [issue](https://github.com/kupriyanovNik/BikeStat/issues/new)
- ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡ [GitHub Discussions](https://github.com/kupriyanovNik/BikeStat/discussions)