From 98caacb3dd96d2c64e926b1d9ef2cb3d3d480252 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Mon, 22 Apr 2024 17:29:38 +0800 Subject: [PATCH] fix: rename swiftui-tutorial -> DevTutor --- .github/workflows/ci.yml | 10 +- README.md | 16 +- README.zh.md | 16 +- data/explore.json | 550 +++++++-------------------------------- privacy-policy.md | 35 ++- privacy-policy.zh.md | 2 +- terms-of-service.md | 6 +- terms-of-service.zh.md | 6 +- 8 files changed, 137 insertions(+), 504 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc58ebd..705de85 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,13 +17,13 @@ jobs: - name: Create idoc config. run: | cat > idoc.yml << EOF - site: "SwiftUI Tutorial" - description: SwiftUI Tutorial is an application designed to assist developers in creating exceptional apps using SwiftUI - keywords: SwiftUI,swift,Tutorial app,Developer,tools,Coding,document + site: "DevTutor for SwiftUI" + description: DevTutor is an application designed to assist developers in creating exceptional apps using SwiftUI + keywords: SwiftUI,devtutor,swift,Tutorial app,Developer,tools,Coding,document favicon: assets/logo.png logo: ./assets/logo.png - openSource: https://github.com/jaywcjlove/swiftui-tutorial - homepage: https://wangchujiang.com/swiftui-tutorial/ + openSource: https://github.com/jaywcjlove/devtutor + homepage: https://wangchujiang.com/devtutor/ tocs: false element: wrapper: style=max-width:720px; diff --git a/README.md b/README.md index 87a048d..b1a9118 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@


- SwiftUI Tutorial LOGO -

SwiftUI Tutorial

+ DevTutor for SwiftUI LOGO +

DevTutor for SwiftUI

中文 • @@ -10,14 +10,14 @@ Contact & Support

- SwiftUI Tutorial AppStore + DevTutor for SwiftUI AppStore

-"SwiftUI Tutorial" is an application designed to assist developers in creating exceptional apps using SwiftUI. It offers replicable code samples and corresponding UI previews to streamline your coding process. Additionally, it includes local offline access to the official Swift Programming Language documentation in both Chinese and English. +"DevTutor for SwiftUI" is an application designed to assist developers in creating exceptional apps using SwiftUI. It offers replicable code samples and corresponding UI previews to streamline your coding process. Additionally, it includes local offline access to the official Swift Programming Language documentation in both Chinese and English. -![SwiftUI Tutorial screenshots-1](./assets/screenshots-1.png) +![DevTutor for SwiftUI screenshots-1](./assets/screenshots-1.png) ## Main Features @@ -27,9 +27,9 @@ - Explore a collection of third-party packages, see [Explore Data](https://github.com/jaywcjlove/swiftui-tutorial/blob/main/data/explore.json) - And more features... -![SwiftUI Tutorial screenshots-2](./assets/screenshots-2.png) +![DevTutor for SwiftUI screenshots-2](./assets/screenshots-2.png) -![SwiftUI Tutorial screenshots-3](./assets/screenshots-3.png) +![DevTutor for SwiftUI screenshots-3](./assets/screenshots-3.png) ## About SwiftUI @@ -66,5 +66,5 @@ SwiftUI's flexibility and ease of use make it a powerful tool for developing mod \ No newline at end of file diff --git a/README.zh.md b/README.zh.md index a30a622..cf2840b 100644 --- a/README.zh.md +++ b/README.zh.md @@ -1,8 +1,8 @@


- SwiftUI 教程 LOGO -

SwiftUI 教程

+ DevTutor LOGO +

DevTutor for SwiftUI

English • @@ -10,26 +10,26 @@ 联系&支持

- SwiftUI 教程 AppStore + DevTutor AppStore

-「SwiftUI 教程」是一款旨在帮助开发者使用 SwiftUI 创建出色应用程序的应用。它提供可复制的代码示例和相应的用户界面预览,以简化您的编码过程。此外,还包括了《Swift 编程语言》官方中英文文档的本地离线预览。 +「DevTutor」是一款旨在帮助开发者使用 SwiftUI 创建出色应用程序的应用。它提供可复制的代码示例和相应的用户界面预览,以简化您的编码过程。此外,还包括了《Swift 编程语言》官方中英文文档的本地离线预览。 -![SwiftUI Tutorial screenshots-1](./assets/screenshots-1-cn.png) +![DevTutor for SwiftUI screenshots-1](./assets/screenshots-1-cn.png) ## 主要功能 - 提供可直接在您的项目中使用的样本代码 - 实时查看您的代码如何影响应用的外观 - 提供官方中英文 Swift 编程语言离线文档 -- 探索第三方包集合,详见 [探索数据](https://github.com/jaywcjlove/swiftui-tutorial/blob/main/data/explore.json) +- 探索第三方包集合,详见 [探索数据](https://github.com/jaywcjlove/devtutor/blob/main/data/explore.json) - 以及更多功能... -![SwiftUI Tutorial screenshots-2](./assets/screenshots-2-cn.png) +![DevTutor for SwiftUI screenshots-2](./assets/screenshots-2-cn.png) -![SwiftUI Tutorial screenshots-3](./assets/screenshots-3-cn.png) +![DevTutor for SwiftUI screenshots-3](./assets/screenshots-3-cn.png) ## 关于 SwiftUI diff --git a/data/explore.json b/data/explore.json index aa5dba3..5186844 100644 --- a/data/explore.json +++ b/data/explore.json @@ -6,86 +6,26 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "30 Days of Swift", - "url": "https://github.com/allenwong/30DaysofSwift", - "icon": "doc.fill" - }, - { - "name": "About Swift", - "url": "https://github.com/NicolaLancellotti-About/About-Swift", - "icon": "doc.fill" - }, - { - "name": "Awesome Swift Education", - "url": "https://github.com/hsavit1/Awesome-Swift-Education", - "icon": "doc.fill" - }, - { - "name": "Conferences.digital", - "url": "https://github.com/zagahr/Conferences.digital", - "icon": "doc.fill" - }, - { - "name": "Developing iOS Apps with Swift", - "url": "https://podcasts.apple.com/us/podcast/developing-ios-11-apps-with-swift/id1315130780", - "icon": "doc.fill" - }, - { - "name": "Hacking With Swift", - "url": "https://www.hackingwithswift.com", - "icon": "doc.fill" - }, - { - "name": "Ray Wenderlich Tutorials, Videos, Podcasts and books", - "url": "https://www.kodeco.com", - "icon": "doc.fill" - }, - { - "name": "Swift & SwiftUI Tutorials", - "url": "https://janeshswift.com", - "icon": "doc.fill" - }, - { - "name": "Swift Education", - "url": "https://github.com/swifteducation", - "icon": "doc.fill" - }, - { - "name": "swift-tips", - "url": "https://github.com/vincent-pradeilles/swift-tips", - "icon": "doc.fill" - }, - { - "name": "SwiftDoc", - "url": "https://swiftdoc.org/", - "icon": "doc.fill" - }, - { - "name": "SwiftGuide CN", - "url": "https://github.com/ipader/SwiftGuide", - "icon": "doc.fill" - }, - { - "name": "SwiftTips", - "url": "https://github.com/JohnSundell/SwiftTips", - "icon": "doc.fill" - }, - { - "name": "SwiftUI Example", - "localizations": { - "zh": "SwiftUI 示例" + { "name": "30 Days of Swift", "url": "https://github.com/allenwong/30DaysofSwift" }, + { "name": "About Swift", "url": "https://github.com/NicolaLancellotti-About/About-Swift" }, + { "name": "Awesome Swift Education", "url": "https://github.com/hsavit1/Awesome-Swift-Education" }, + { "name": "Conferences.digital", "url": "https://github.com/zagahr/Conferences.digital" }, + { "name": "Developing iOS Apps with Swift", "url": "https://podcasts.apple.com/us/podcast/developing-ios-11-apps-with-swift/id1315130780" }, + { "name": "Hacking With Swift", "url": "https://www.hackingwithswift.com" }, + { "name": "Ray Wenderlich Tutorials, Videos, Podcasts and books", "url": "https://www.kodeco.com" }, + { "name": "Swift & SwiftUI Tutorials", "url": "https://janeshswift.com" }, + { "name": "Swift Education", "url": "https://github.com/swifteducation" }, + { "name": "swift-tips", "url": "https://github.com/vincent-pradeilles/swift-tips" }, + { "name": "SwiftDoc", "url": "https://swiftdoc.org/" }, + { "name": "SwiftGuide CN", "url": "https://github.com/ipader/SwiftGuide" }, + { "name": "SwiftTips", "url": "https://github.com/JohnSundell/SwiftTips" }, + { "name": "SwiftUI Example", "localizations": { "zh": "SwiftUI 示例" }, - "url": "https://github.com/jaywcjlove/swiftui-example", - "icon": "doc.fill" + "url": "https://github.com/jaywcjlove/swiftui-example" }, - { - "name": "Swift Tutorial", - "localizations": { - "zh": "Swift 教程" + { "name": "Swift Tutorial", "localizations": { "zh": "Swift 教程" }, - "url": "https://github.com/jaywcjlove/swift-tutorial", - "icon": "doc.fill" + "url": "https://github.com/jaywcjlove/swift-tutorial" } ] }, @@ -96,36 +36,12 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "Appz", - "url": "https://github.com/SwiftKitz/Appz", - "icon": "doc.fill" - }, - { - "name": "SwiftUI Navigation", - "url": "https://github.com/pointfreeco/swiftui-navigation", - "icon": "doc.fill" - }, - { - "name": "Crossroad", - "url": "https://github.com/giginet/Crossroad", - "icon": "doc.fill" - }, - { - "name": "LiteRoute", - "url": "https://github.com/SpectralDragon/LiteRoute", - "icon": "doc.fill" - }, - { - "name": "Linker", - "url": "https://github.com/MaksimKurpa/Linker", - "icon": "doc.fill" - }, - { - "name": "MonarchRouter", - "url": "https://github.com/nikans/MonarchRouter", - "icon": "doc.fill" - } + { "name": "Appz", "url": "https://github.com/SwiftKitz/Appz" }, + { "name": "SwiftUI Navigation", "url": "https://github.com/pointfreeco/swiftui-navigation" }, + { "name": "Crossroad", "url": "https://github.com/giginet/Crossroad" }, + { "name": "LiteRoute", "url": "https://github.com/SpectralDragon/LiteRoute" }, + { "name": "Linker", "url": "https://github.com/MaksimKurpa/Linker" }, + { "name": "MonarchRouter", "url": "https://github.com/nikans/MonarchRouter" } ] }, { @@ -135,31 +51,11 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "Apphud", - "url": "https://github.com/apphud/ApphudSDK", - "icon": "doc.fill" - }, - { - "name": "AppReview", - "url": "https://github.com/mezhevikin/AppReview", - "icon": "doc.fill" - }, - { - "name": "InAppPurchase", - "url": "https://github.com/jinSasaki/InAppPurchase", - "icon": "doc.fill" - }, - { - "name": "merchantkit", - "url": "https://github.com/benjaminmayo/merchantkit", - "icon": "doc.fill" - }, - { - "name": "SwiftyStoreKit", - "url": "https://github.com/bizz84/SwiftyStoreKit", - "icon": "doc.fill" - } + { "name": "Apphud", "url": "https://github.com/apphud/ApphudSDK" }, + { "name": "AppReview", "url": "https://github.com/mezhevikin/AppReview" }, + { "name": "InAppPurchase", "url": "https://github.com/jinSasaki/InAppPurchase" }, + { "name": "merchantkit", "url": "https://github.com/benjaminmayo/merchantkit" }, + { "name": "SwiftyStoreKit", "url": "https://github.com/bizz84/SwiftyStoreKit" } ] }, { @@ -169,112 +65,32 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "AudioKit", - "url": "https://github.com/audiokit/AudioKit", - "icon": "doc.fill" - }, - { - "name": "AudioPlayer", - "url": "https://github.com/delannoyk/AudioPlayer", - "icon": "doc.fill" - }, - { - "name": "AudioPlayerSwift", - "url": "https://github.com/tbaranes/AudioPlayerSwift", - "icon": "doc.fill" - }, - { - "name": "Beethoven", - "url": "https://github.com/vadymmarkov/Beethoven", - "icon": "doc.fill" - }, - { - "name": "FDSoundActivatedRecorder", - "url": "https://github.com/fulldecent/FDSoundActivatedRecorder", - "icon": "doc.fill" - }, - { - "name": "FDWaveformView", - "url": "https://github.com/fulldecent/FDWaveformView", - "icon": "doc.fill" - }, - { - "name": "ModernAVPlayer", - "url": "https://github.com/noreasonprojects/ModernAVPlayer", - "icon": "doc.fill" - }, - { - "name": "MusicKit", - "url": "https://github.com/vprtwn/MusicKit", - "icon": "doc.fill" - }, - { - "name": "Soundable", - "url": "https://github.com/ThXou/Soundable", - "icon": "doc.fill" - }, - { - "name": "SwiftAudioPlayer", - "url": "https://github.com/tanhakabir/SwiftAudioPlayer", - "icon": "doc.fill" - }, - { - "name": "SwiftySound", - "url": "https://github.com/adamcichy/SwiftySound", - "icon": "doc.fill" - }, - { - "name": "voice-overlay-ios", - "url": "https://github.com/algolia/voice-overlay-ios", - "icon": "doc.fill" - } + { "name": "AudioKit", "url": "https://github.com/audiokit/AudioKit" }, + { "name": "AudioPlayer", "url": "https://github.com/delannoyk/AudioPlayer" }, + { "name": "AudioPlayerSwift", "url": "https://github.com/tbaranes/AudioPlayerSwift" }, + { "name": "Beethoven", "url": "https://github.com/vadymmarkov/Beethoven" }, + { "name": "FDSoundActivatedRecorder", "url": "https://github.com/fulldecent/FDSoundActivatedRecorder" }, + { "name": "FDWaveformView", "url": "https://github.com/fulldecent/FDWaveformView" }, + { "name": "ModernAVPlayer", "url": "https://github.com/noreasonprojects/ModernAVPlayer" }, + { "name": "MusicKit", "url": "https://github.com/vprtwn/MusicKit" }, + { "name": "Soundable", "url": "https://github.com/ThXou/Soundable" }, + { "name": "SwiftAudioPlayer", "url": "https://github.com/tanhakabir/SwiftAudioPlayer" }, + { "name": "SwiftySound", "url": "https://github.com/adamcichy/SwiftySound" }, + { "name": "voice-overlay-ios", "url": "https://github.com/algolia/voice-overlay-ios" } ] }, { "name": "API", "icon": "shippingbox.fill", "children": [ - { - "name": "GitHubAPI", - "url": "https://github.com/serhii-londar/GithubAPI", - "icon": "doc.fill" - }, - { - "name": "PXGoogleDirections", - "url": "https://github.com/poulpix/PXGoogleDirections", - "icon": "doc.fill" - }, - { - "name": "RandomUserSwift", - "url": "https://github.com/dingwilson/RandomUserSwift", - "icon": "doc.fill" - }, - { - "name": "reddift", - "url": "https://github.com/sonsongithub/reddift", - "icon": "doc.fill" - }, - { - "name": "Swifter Twitter", - "url": "https://github.com/mattdonnelly/Swifter", - "icon": "doc.fill" - }, - { - "name": "Swiftkube", - "url": "https://github.com/swiftkube/client", - "icon": "doc.fill" - }, - { - "name": "SwiftlySalesforce", - "url": "https://github.com/mike4aday/SwiftlySalesforce", - "icon": "doc.fill" - }, - { - "name": "SwiftyInsta", - "url": "https://github.com/TheM4hd1/SwiftyInsta", - "icon": "doc.fill" - } + { "name": "GitHubAPI", "url": "https://github.com/serhii-londar/GithubAPI" }, + { "name": "PXGoogleDirections", "url": "https://github.com/poulpix/PXGoogleDirections" }, + { "name": "RandomUserSwift", "url": "https://github.com/dingwilson/RandomUserSwift" }, + { "name": "reddift", "url": "https://github.com/sonsongithub/reddift" }, + { "name": "Swifter Twitter", "url": "https://github.com/mattdonnelly/Swifter" }, + { "name": "Swiftkube", "url": "https://github.com/swiftkube/client" }, + { "name": "SwiftlySalesforce", "url": "https://github.com/mike4aday/SwiftlySalesforce" }, + { "name": "SwiftyInsta", "url": "https://github.com/TheM4hd1/SwiftyInsta" } ] }, { @@ -284,126 +100,30 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "Advance", - "url": "https://github.com/timdonnelly/Advance", - "icon": "doc.fill" - }, - { - "name": "ChainPageCollectionView", - "url": "https://github.com/jindulys/ChainPageCollectionView", - "icon": "doc.fill" - }, - { - "name": "CocoaSprings", - "url": "https://github.com/MacPaw/CocoaSprings", - "icon": "doc.fill" - }, - { - "name": "Comets", - "url": "https://github.com/cruisediary/Comets", - "icon": "doc.fill" - }, - { - "name": "Ease", - "url": "https://github.com/roberthein/Ease", - "icon": "doc.fill" - }, - { - "name": "EasyAnimation", - "url": "https://github.com/icanzilb/EasyAnimation", - "icon": "doc.fill" - }, - { - "name": "Elephant", - "url": "https://github.com/s2mr/Elephant", - "icon": "doc.fill" - }, - { - "name": "FlightAnimator", - "url": "https://github.com/AntonTheDev/FlightAnimator", - "icon": "doc.fill" - }, - { - "name": "Gemini", - "url": "https://github.com/shoheiyokoyama/Gemini", - "icon": "doc.fill" - }, - { - "name": "IBAnimatable", - "url": "https://github.com/IBAnimatable/IBAnimatable", - "icon": "doc.fill" - }, - { - "name": "Interpolate", - "url": "https://github.com/marmelroy/Interpolate", - "icon": "doc.fill" - }, - { - "name": "lottie-ios", - "url": "https://github.com/airbnb/lottie-ios", - "icon": "doc.fill" - }, - { - "name": "Pastel", - "url": "https://github.com/cruisediary/Pastel", - "icon": "doc.fill" - }, - { - "name": "Poi", - "url": "https://github.com/HideakiTouhara/Poi", - "icon": "doc.fill" - }, - { - "name": "Presentation", - "url": "https://github.com/hyperoslo/Presentation", - "icon": "doc.fill" - }, - { - "name": "Pulsator", - "url": "https://github.com/shu223/pulsator", - "icon": "doc.fill" - }, - { - "name": "Sica", - "url": "https://github.com/cats-oss/Sica", - "icon": "doc.fill" - }, - { - "name": "Spring", - "url": "https://github.com/MengTo/Spring", - "icon": "doc.fill" - }, - { - "name": "SpriteKitEasingSwift", - "url": "https://github.com/craiggrummitt/SpriteKitEasingSwift", - "icon": "doc.fill" - }, - { - "name": "spruce-ios", - "url": "https://github.com/willowtreeapps/spruce-ios", - "icon": "doc.fill" - }, - { - "name": "Stellar", - "url": "https://github.com/AugustRush/Stellar", - "icon": "doc.fill" - }, - { - "name": "TheAnimation", - "url": "https://github.com/marty-suzuki/TheAnimation", - "icon": "doc.fill" - }, - { - "name": "ViewAnimator", - "url": "https://github.com/marcosgriselli/ViewAnimator", - "icon": "doc.fill" - }, - { - "name": "YapAnimator", - "url": "https://github.com/yapstudios/YapAnimator", - "icon": "doc.fill" - } + { "name": "Advance", "url": "https://github.com/timdonnelly/Advance" }, + { "name": "ChainPageCollectionView", "url": "https://github.com/jindulys/ChainPageCollectionView" }, + { "name": "CocoaSprings", "url": "https://github.com/MacPaw/CocoaSprings" }, + { "name": "Comets", "url": "https://github.com/cruisediary/Comets" }, + { "name": "Ease", "url": "https://github.com/roberthein/Ease" }, + { "name": "EasyAnimation", "url": "https://github.com/icanzilb/EasyAnimation" }, + { "name": "Elephant", "url": "https://github.com/s2mr/Elephant" }, + { "name": "FlightAnimator", "url": "https://github.com/AntonTheDev/FlightAnimator" }, + { "name": "Gemini", "url": "https://github.com/shoheiyokoyama/Gemini" }, + { "name": "IBAnimatable", "url": "https://github.com/IBAnimatable/IBAnimatable" }, + { "name": "Interpolate", "url": "https://github.com/marmelroy/Interpolate" }, + { "name": "lottie-ios", "url": "https://github.com/airbnb/lottie-ios" }, + { "name": "Pastel", "url": "https://github.com/cruisediary/Pastel" }, + { "name": "Poi", "url": "https://github.com/HideakiTouhara/Poi" }, + { "name": "Presentation", "url": "https://github.com/hyperoslo/Presentation" }, + { "name": "Pulsator", "url": "https://github.com/shu223/pulsator" }, + { "name": "Sica", "url": "https://github.com/cats-oss/Sica" }, + { "name": "Spring", "url": "https://github.com/MengTo/Spring" }, + { "name": "SpriteKitEasingSwift", "url": "https://github.com/craiggrummitt/SpriteKitEasingSwift" }, + { "name": "spruce-ios", "url": "https://github.com/willowtreeapps/spruce-ios" }, + { "name": "Stellar", "url": "https://github.com/AugustRush/Stellar" }, + { "name": "TheAnimation", "url": "https://github.com/marty-suzuki/TheAnimation" }, + { "name": "ViewAnimator", "url": "https://github.com/marcosgriselli/ViewAnimator" }, + { "name": "YapAnimator", "url": "https://github.com/yapstudios/YapAnimator" } ] }, { @@ -413,26 +133,10 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "Algorithm", - "url": "https://github.com/CosmicMind/Algorithm", - "icon": "doc.fill" - }, - { - "name": "BTree", - "url": "https://github.com/attaswift/BTree", - "icon": "doc.fill" - }, - { - "name": "swift-algorithm-club", - "url": "https://github.com/kodecocodes/swift-algorithm-club", - "icon": "doc.fill" - }, - { - "name": "SwiftLCS", - "url": "https://github.com/Frugghi/SwiftLCS", - "icon": "doc.fill" - } + { "name": "Algorithm", "url": "https://github.com/CosmicMind/Algorithm" }, + { "name": "BTree", "url": "https://github.com/attaswift/BTree" }, + { "name": "swift-algorithm-club", "url": "https://github.com/kodecocodes/swift-algorithm-club" }, + { "name": "SwiftLCS", "url": "https://github.com/Frugghi/SwiftLCS" } ] }, { @@ -442,31 +146,11 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "BlueCap", - "url": "https://github.com/troystribling/BlueCap", - "icon": "doc.fill" - }, - { - "name": "Bluejay", - "url": "https://github.com/steamclock/bluejay", - "icon": "doc.fill" - }, - { - "name": "BluetoothKit", - "url": "https://github.com/rhummelmose/BluetoothKit", - "icon": "doc.fill" - }, - { - "name": "RxBluetoothKit", - "url": "https://github.com/polidea/RxBluetoothKit", - "icon": "doc.fill" - }, - { - "name": "SwiftyBluetooth", - "url": "https://github.com/jordanebelanger/SwiftyBluetooth", - "icon": "doc.fill" - } + { "name": "BlueCap", "url": "https://github.com/troystribling/BlueCap" }, + { "name": "Bluejay", "url": "https://github.com/steamclock/bluejay" }, + { "name": "BluetoothKit", "url": "https://github.com/rhummelmose/BluetoothKit" }, + { "name": "RxBluetoothKit", "url": "https://github.com/polidea/RxBluetoothKit" }, + { "name": "SwiftyBluetooth", "url": "https://github.com/jordanebelanger/SwiftyBluetooth" } ] }, { @@ -476,36 +160,12 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "CameraBackground", - "url": "https://github.com/yonat/CameraBackground", - "icon": "doc.fill" - }, - { - "name": "CameraKit-iOS", - "url": "https://github.com/CameraKit/camerakit-ios", - "icon": "doc.fill" - }, - { - "name": "FDTake", - "url": "https://github.com/fulldecent/FDTake", - "icon": "doc.fill" - }, - { - "name": "Fusuma", - "url": "https://github.com/ytakzk/Fusuma", - "icon": "doc.fill" - }, - { - "name": "MediaPicker", - "url": "https://github.com/exyte/mediapicker", - "icon": "doc.fill" - }, - { - "name": "NextLevel", - "url": "https://github.com/NextLevel/NextLevel", - "icon": "doc.fill" - } + { "name": "CameraBackground", "url": "https://github.com/yonat/CameraBackground" }, + { "name": "CameraKit-iOS", "url": "https://github.com/CameraKit/camerakit-ios" }, + { "name": "FDTake", "url": "https://github.com/fulldecent/FDTake" }, + { "name": "Fusuma", "url": "https://github.com/ytakzk/Fusuma" }, + { "name": "MediaPicker", "url": "https://github.com/exyte/mediapicker" }, + { "name": "NextLevel", "url": "https://github.com/NextLevel/NextLevel" } ] }, { @@ -515,21 +175,9 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "BarcodeScanner", - "url": "https://github.com/hyperoslo/BarcodeScanner", - "icon": "doc.fill" - }, - { - "name": "EFQRCode", - "url": "https://github.com/EFPrefix/EFQRCode", - "icon": "doc.fill" - }, - { - "name": "QRCodeReader.swift", - "url": "https://github.com/yannickl/QRCodeReader.swift", - "icon": "doc.fill" - } + { "name": "BarcodeScanner", "url": "https://github.com/hyperoslo/BarcodeScanner" }, + { "name": "EFQRCode", "url": "https://github.com/EFPrefix/EFQRCode" }, + { "name": "QRCodeReader.swift", "url": "https://github.com/yannickl/QRCodeReader.swift" } ] }, { @@ -621,21 +269,9 @@ }, "icon": "shippingbox.fill", "children": [ - { - "name": "BlueSignals", - "url": "https://github.com/Kitura/BlueSignals", - "icon": "doc.fill" - }, - { - "name": "LaunchAtLogin", - "url": "https://github.com/sindresorhus/LaunchAtLogin", - "icon": "doc.fill" - }, - { - "name": "SystemKit", - "url": "https://github.com/beltex/SystemKit/", - "icon": "doc.fill" - } + { "name": "BlueSignals", "url": "https://github.com/Kitura/BlueSignals" }, + { "name": "LaunchAtLogin", "url": "https://github.com/sindresorhus/LaunchAtLogin" }, + { "name": "SystemKit", "url": "https://github.com/beltex/SystemKit/" } ] }, { diff --git a/privacy-policy.md b/privacy-policy.md index 72dd935..48e7df7 100644 --- a/privacy-policy.md +++ b/privacy-policy.md @@ -6,36 +6,33 @@ Privacy Policy === -Kenny Wang built the DevHub app as a Free app. This SERVICE is provided by Kenny Wang at no cost and is intended for use as is. +Welcome to **DevTutor**, developed by Kenny Wang, which provides some free content and subscription services to unlock all features. This privacy policy aims to transparently explain how we handle your personal information, including how we collect, use, and protect it. Please read this policy carefully to understand our commitment to your privacy. -Welcome to our app! We respect and protect your privacy. This privacy policy is designed to explain how we collect, use, and safeguard your personal information. Please read the following carefully to understand our privacy practices. +### Information Collection and Use -**Information Collection** +Our app is an offline local app that does not actively collect, store, or transmit any personal identifiable information or sensitive information. -Our app is an offline local application that does not actively collect, store, or transmit any personally identifiable or sensitive information. +### Data Storage and Security -**Local Data Cache** +We use industry-standard security measures to protect the information stored on our servers, preventing unauthorized access, disclosure, modification, or destruction. All personal information is encrypted using Secure Sockets Layer (SSL) technology. -We may locally cache some data on your device to enhance the user experience. This data is stored only on your device and is not transmitted to our servers. +### Third-Party Services -**Usage Permissions** +Our app may use third-party services (such as payment processing, data analysis, etc.), which may require access to some user information. We only partner with service providers who also prioritize user privacy protection and ensure they comply with this privacy policy. -Our app may request certain device permissions, such as camera, gallery, or location information. These permissions are solely for providing specific app functionalities, and we do not misuse them to collect additional information. +### User Rights -**Third-Party Services** +You can access, correct, or delete your personal information at any time. If you want to cancel your subscription or delete your account, please contact our support team. -Our app may utilize third-party services, but these services are limited to providing functionalities required by the app and are not used for collecting personal identification information. +### Children's Privacy -**Children's Privacy** +This app is not designed for children under 13. We do not intentionally collect or request personal information from children under 13. If we discover that we have collected such information, we will take immediate action to delete it. -Our app is not intended for children under the age of 13, and we do not intentionally collect information related to children. +### Privacy Policy Updates -**Privacy Policy Updates** +Our privacy policy may be adjusted according to business development and legal requirements. Any significant changes will be notified through in-app notifications or your registered email address. We recommend you review this policy regularly to understand the latest privacy information. -I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. +### Contact Us -This policy is effective as of 2024-03-11 - -**Contact Us** - -If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at kennyiseeyou@gmail.com. \ No newline at end of file +If you have any questions or concerns about our privacy policy or need help managing your information, please contact us at kennyiseeyou@gmail.com. +This policy takes effect on April 21, 2024. diff --git a/privacy-policy.zh.md b/privacy-policy.zh.md index 6d11795..adc9724 100644 --- a/privacy-policy.zh.md +++ b/privacy-policy.zh.md @@ -7,7 +7,7 @@ 隐私政策 === -欢迎使用「SwiftUI 教程」,本应用由 Kenny Wang 开发,提供部分免费内容及订阅服务以解锁所有功能。本隐私政策旨在透明地阐述我们如何处理您的个人信息,包括我们如何收集、使用及保护这些信息。请仔细阅读本政策,了解我们对您隐私的承诺。 +欢迎使用「DevTutor」,本应用由 Kenny Wang 开发,提供部分免费内容及订阅服务以解锁所有功能。本隐私政策旨在透明地阐述我们如何处理您的个人信息,包括我们如何收集、使用及保护这些信息。请仔细阅读本政策,了解我们对您隐私的承诺。 ### 信息收集与使用 diff --git a/terms-of-service.md b/terms-of-service.md index 35b4c3a..d8d0f9a 100644 --- a/terms-of-service.md +++ b/terms-of-service.md @@ -6,11 +6,11 @@ Terms of Service === -Welcome to the "SwiftUI Tutorial" application. We recommend that you read and understand the following terms of service carefully before subscribing or making a purchase. +Welcome to the "DevTutor" application. We recommend that you read and understand the following terms of service carefully before subscribing or making a purchase. ### 1. Application Features -The "SwiftUI Tutorial" is an educational tool designed for developers who want to master SwiftUI. This app provides detailed code examples and corresponding interface previews to help you learn and practice programming skills efficiently. In addition, the app integrates the official "Swift Programming Language" documentation, available in both Chinese and English, and can be read offline, ensuring that you can continue to learn even without an internet connection. +The "DevTutor" is an educational tool designed for developers who want to master SwiftUI. This app provides detailed code examples and corresponding interface previews to help you learn and practice programming skills efficiently. In addition, the app integrates the official "Swift Programming Language" documentation, available in both Chinese and English, and can be read offline, ensuring that you can continue to learn even without an internet connection. ### 2. Free Version Content @@ -38,4 +38,4 @@ We highly value user feedback and suggestions. If you have any questions or conc We are committed to protecting your personal information and will not disclose user data to third parties without permission. -Thank you for choosing "SwiftUI Tutorial." We look forward to accompanying you on your learning journey. +Thank you for choosing "DevTutor" We look forward to accompanying you on your learning journey. diff --git a/terms-of-service.zh.md b/terms-of-service.zh.md index 29c3d58..c4e8fb9 100644 --- a/terms-of-service.zh.md +++ b/terms-of-service.zh.md @@ -6,11 +6,11 @@ 服务条款 === -欢迎您使用「SwiftUI 教程」应用。我们建议在您订阅或购买前,仔细阅读并理解以下服务条款。 +欢迎您使用「DevTutor」应用。我们建议在您订阅或购买前,仔细阅读并理解以下服务条款。 ### 1. 应用功能介绍 -「SwiftUI 教程」是为希望精通 SwiftUI 的开发者设计的教育工具。该应用提供详细的代码示例和对应的界面预览,帮助您高效学习并实践编程技巧。除此之外,本应用还整合了官方「Swift 编程语言」文档,支持中英文,并且可以离线阅读,确保您在没有网络的环境下也能够继续学习。 +「DevTutor」是为希望精通 SwiftUI 的开发者设计的教育工具。该应用提供详细的代码示例和对应的界面预览,帮助您高效学习并实践编程技巧。除此之外,本应用还整合了官方「Swift 编程语言」文档,支持中英文,并且可以离线阅读,确保您在没有网络的环境下也能够继续学习。 ### 2. 免费版本内容 @@ -38,4 +38,4 @@ 我们承诺保护您的个人信息安全,不会在未经允许的情况下向第三方透露用户数据。 -感谢您选择「SwiftUI 教程」,我们期待陪伴您的学习旅程。 +感谢您选择「DevTutor」,我们期待陪伴您的学习旅程。