├── .github ├── CODEOWNERS └── pull_request_template.md ├── .gitignore ├── .tuist-version ├── Clog ├── .gitignore ├── .mise.toml ├── .package.resolved ├── Makefile ├── Projects │ ├── AppModule │ │ └── ClogApp │ │ │ ├── ClogProduction.entitlements │ │ │ ├── Project.swift │ │ │ ├── Resources │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── 100.png │ │ │ │ │ ├── 1024.png │ │ │ │ │ ├── 114.png │ │ │ │ │ ├── 120.png │ │ │ │ │ ├── 144.png │ │ │ │ │ ├── 152.png │ │ │ │ │ ├── 167.png │ │ │ │ │ ├── 180.png │ │ │ │ │ ├── 20.png │ │ │ │ │ ├── 29.png │ │ │ │ │ ├── 40.png │ │ │ │ │ ├── 50.png │ │ │ │ │ ├── 57.png │ │ │ │ │ ├── 58.png │ │ │ │ │ ├── 60.png │ │ │ │ │ ├── 72.png │ │ │ │ │ ├── 76.png │ │ │ │ │ ├── 80.png │ │ │ │ │ ├── 87.png │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ └── GoogleService-Info.plist │ │ │ └── Sources │ │ │ ├── .gitkeep │ │ │ ├── Core │ │ │ ├── AppDelegate.swift │ │ │ ├── ClLogApp.swift │ │ │ ├── ClLogPhase.swift │ │ │ ├── ClLogWindow.swift │ │ │ └── SceneDelegate.swift │ │ │ └── RemoteConfig │ │ │ └── AppVersionCheck.swift │ ├── ClogService │ │ ├── CoreKit │ │ │ ├── Core │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── Extension │ │ │ │ │ │ └── String+Extension.swift │ │ │ │ │ ├── FeatureAction.swift │ │ │ │ │ ├── Helper │ │ │ │ │ │ ├── ConsonantSearcherHelper.swift │ │ │ │ │ │ ├── LocationClient.swift │ │ │ │ │ │ └── MediaHelper.swift │ │ │ │ │ ├── View │ │ │ │ │ │ ├── Router │ │ │ │ │ │ │ └── EnableBackSwipeModifier.swift │ │ │ │ │ │ ├── VideoAsset │ │ │ │ │ │ │ ├── VideoAssetLoader.swift │ │ │ │ │ │ │ └── VideoAssetMetadata.swift │ │ │ │ │ │ ├── VideoPlayerView │ │ │ │ │ │ │ └── VideoPlayerView.swift │ │ │ │ │ │ └── WebView │ │ │ │ │ │ │ ├── WebView.swift │ │ │ │ │ │ │ └── WebViewFeature.swift │ │ │ │ │ └── ViewProtocol.swift │ │ │ │ └── Tests │ │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ │ └── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── Sample.swift │ │ │ ├── DesignKit │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Resources │ │ │ │ │ ├── Asset │ │ │ │ │ │ └── Assets.xcassets │ │ │ │ │ │ │ ├── Capture │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── icn_camera_selected.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── icn_camera_selected.svg │ │ │ │ │ │ │ └── icn_camera_unselected.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── icn_camera_unselected.svg │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── Edit │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── playSmall.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── playSmall.svg │ │ │ │ │ │ │ ├── redoDisable.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── redo.svg │ │ │ │ │ │ │ ├── redoEnable.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── redoActive.svg │ │ │ │ │ │ │ ├── stopSmall.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── stopSmall.svg │ │ │ │ │ │ │ ├── undoDisable.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── undo.svg │ │ │ │ │ │ │ └── undoEnable.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── undoActive.svg │ │ │ │ │ │ │ ├── Folder │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── basicThumbnail.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── basicThumbnail.png │ │ │ │ │ │ │ ├── dropdownDown.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── dropdown_down.svg │ │ │ │ │ │ │ ├── dropdownUp.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── dropdown_up.svg │ │ │ │ │ │ │ ├── icn_folder_selected.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── icn_folder_selected.svg │ │ │ │ │ │ │ ├── icn_folder_unselected.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── icn_folder_unselected.svg │ │ │ │ │ │ │ └── x.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── x.svg │ │ │ │ │ │ │ ├── Logo │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── appleLogo.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── Shape.png │ │ │ │ │ │ │ ├── clogLogo.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── logo.png │ │ │ │ │ │ │ └── kakaoLogo.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── Logo kakao.png │ │ │ │ │ │ │ ├── OnBoarding │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── onBoarding1.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── splash1.svg │ │ │ │ │ │ │ ├── onBoarding2.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── splash2.svg │ │ │ │ │ │ │ └── onBoarding3.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── splash3.svg │ │ │ │ │ │ │ ├── Profile │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── defaultProfile.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ ├── Property 1=edit.png │ │ │ │ │ │ │ │ ├── Property 1=edit@2x.png │ │ │ │ │ │ │ │ └── Property 1=edit@3x.png │ │ │ │ │ │ │ ├── Report │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── icn_report_selected.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── icn_report_selected.svg │ │ │ │ │ │ │ ├── icn_report_unselected.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── icn_report_unselected.svg │ │ │ │ │ │ │ ├── reportAttempt.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── Property 1=img_report_attempt.svg │ │ │ │ │ │ │ ├── reportCrag.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── Property 1=img_report2.svg │ │ │ │ │ │ │ ├── reportExercise.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── Property 1=img_report1.svg │ │ │ │ │ │ │ ├── reportPercent.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── Property 1=img_report_percent.svg │ │ │ │ │ │ │ └── reportProblem.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── Property 1=img_report_problem.svg │ │ │ │ │ │ │ ├── close_circle.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── x.svg │ │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── recodeButton.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── recode_button.svg │ │ │ │ │ │ │ └── recordingButton.imageset │ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ │ └── recording_button.svg │ │ │ │ │ │ │ ├── icn_close.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_close.svg │ │ │ │ │ │ │ ├── icon_down.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icon_down.svg │ │ │ │ │ │ │ └── icons │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── alert.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_alert.svg │ │ │ │ │ │ │ ├── back.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_back.svg │ │ │ │ │ │ │ ├── calendarAfter.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_calendar_after.svg │ │ │ │ │ │ │ ├── calendarBefore.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_calendar_before.svg │ │ │ │ │ │ │ ├── camera.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_camera.svg │ │ │ │ │ │ │ ├── check.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── check.svg │ │ │ │ │ │ │ ├── close.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_close.svg │ │ │ │ │ │ │ ├── cut.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── cut.svg │ │ │ │ │ │ │ ├── delete.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_delete.svg │ │ │ │ │ │ │ ├── dotVertical.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_dot_vertical.svg │ │ │ │ │ │ │ ├── down.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_down.svg │ │ │ │ │ │ │ ├── edit.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_edit.svg │ │ │ │ │ │ │ ├── flashOff.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_flash_x.svg │ │ │ │ │ │ │ ├── flashOn.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_flash.svg │ │ │ │ │ │ │ ├── folder.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_folder.svg │ │ │ │ │ │ │ ├── gallery.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_gallery.svg │ │ │ │ │ │ │ ├── list.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_list.svg │ │ │ │ │ │ │ ├── location.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_location.svg │ │ │ │ │ │ │ ├── person.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── icn_camera.png │ │ │ │ │ │ │ ├── icn_camera@2x.png │ │ │ │ │ │ │ └── icn_camera@3x.png │ │ │ │ │ │ │ ├── report.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_report.svg │ │ │ │ │ │ │ ├── right.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_right.svg │ │ │ │ │ │ │ ├── setting.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── setting.svg │ │ │ │ │ │ │ ├── share.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_share.svg │ │ │ │ │ │ │ ├── stamp.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_stamp.svg │ │ │ │ │ │ │ ├── stampSmall.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── stampSmall.svg │ │ │ │ │ │ │ ├── tag.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── tag.svg │ │ │ │ │ │ │ ├── time.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── time.svg │ │ │ │ │ │ │ ├── up.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── icn_up.svg │ │ │ │ │ │ │ └── videoNone.imageset │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── video_none.svg │ │ │ │ │ ├── Color │ │ │ │ │ │ └── Color.xcassets │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ ├── clogUI_background.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_complete.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_dim.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_fail.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray10.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray100.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray200.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray300.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray400.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray50.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray500.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray600.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray700.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray800.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_gray900.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green100.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green200.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green300.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green400.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green500.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green600.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green700.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green800.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_green900.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_primary.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── clogUI_textFail.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── clogUI_white.colorset │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── Font │ │ │ │ │ │ ├── Pretendard-Black.ttf │ │ │ │ │ │ ├── Pretendard-Bold.ttf │ │ │ │ │ │ ├── Pretendard-ExtraBold.ttf │ │ │ │ │ │ ├── Pretendard-ExtraLight.ttf │ │ │ │ │ │ ├── Pretendard-Light.ttf │ │ │ │ │ │ ├── Pretendard-Medium.ttf │ │ │ │ │ │ ├── Pretendard-Regular.ttf │ │ │ │ │ │ ├── Pretendard-SemiBold.ttf │ │ │ │ │ │ └── Pretendard-Thin.ttf │ │ │ │ ├── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── Component │ │ │ │ │ │ ├── AppBar │ │ │ │ │ │ │ └── AppBar.swift │ │ │ │ │ │ ├── Button │ │ │ │ │ │ │ ├── CameraButton.swift │ │ │ │ │ │ │ ├── CheckBoxButton.swift │ │ │ │ │ │ │ ├── DropdownButton.swift │ │ │ │ │ │ │ ├── FloatingActionButton.swift │ │ │ │ │ │ │ ├── FolderButton.swift │ │ │ │ │ │ │ ├── GeneralButton.swift │ │ │ │ │ │ │ ├── NextProblemButton.swift │ │ │ │ │ │ │ ├── RecodingButton.swift │ │ │ │ │ │ │ └── StampButton.swift │ │ │ │ │ │ ├── Chip │ │ │ │ │ │ │ ├── CompleteOrFailChip.swift │ │ │ │ │ │ │ ├── LevelChip.swift │ │ │ │ │ │ │ ├── TitleWithImageChip.swift │ │ │ │ │ │ │ └── VideoTimeChip.swift │ │ │ │ │ │ ├── ClLogLabel.swift │ │ │ │ │ │ ├── Dialog │ │ │ │ │ │ │ ├── Dialog+Extension.swift │ │ │ │ │ │ │ ├── DialogButtonType.swift │ │ │ │ │ │ │ ├── DialogModel.swift │ │ │ │ │ │ │ ├── DialogModifier.swift │ │ │ │ │ │ │ └── DialogView.swift │ │ │ │ │ │ ├── Divider │ │ │ │ │ │ │ └── DividerView.swift │ │ │ │ │ │ ├── Indicator │ │ │ │ │ │ │ └── CLLogActivityIndicator.swift │ │ │ │ │ │ ├── Progress │ │ │ │ │ │ │ └── PlayerProgressBar.swift │ │ │ │ │ │ ├── SharedView │ │ │ │ │ │ │ └── InstagramSharerView.swift │ │ │ │ │ │ ├── TextInput │ │ │ │ │ │ │ ├── ClLogTextInput.swift │ │ │ │ │ │ │ └── TextInputConfiguration.swift │ │ │ │ │ │ ├── Thumnail │ │ │ │ │ │ │ └── Thumbnail.swift │ │ │ │ │ │ ├── Toast │ │ │ │ │ │ │ ├── Toast.swift │ │ │ │ │ │ │ ├── ToastModifier.swift │ │ │ │ │ │ │ ├── ToastType.swift │ │ │ │ │ │ │ └── ToastView.swift │ │ │ │ │ │ └── View │ │ │ │ │ │ │ ├── BottomSheet.swift │ │ │ │ │ │ │ ├── CragBottomSheet.swift │ │ │ │ │ │ │ ├── GradeBottomSheet.swift │ │ │ │ │ │ │ ├── ReportVideoImageView.swift │ │ │ │ │ │ │ ├── SelectGradeView.swift │ │ │ │ │ │ │ ├── ThumbnailView.swift │ │ │ │ │ │ │ ├── Tooltip.swift │ │ │ │ │ │ │ └── TwoLineRow.swift │ │ │ │ │ └── Core │ │ │ │ │ │ ├── DesignSystem │ │ │ │ │ │ ├── Bundle.swift │ │ │ │ │ │ ├── ClogUI.swift │ │ │ │ │ │ ├── Color.swift │ │ │ │ │ │ ├── FontModel.swift │ │ │ │ │ │ ├── Fonts.swift │ │ │ │ │ │ └── Image.swift │ │ │ │ │ │ ├── Extension │ │ │ │ │ │ ├── Color+Extension.swift │ │ │ │ │ │ └── UIViewController+Extension.swift │ │ │ │ │ │ └── Modifire │ │ │ │ │ │ ├── DebugFrame.swift │ │ │ │ │ │ ├── RoundedCornerModifier.swift │ │ │ │ │ │ └── Text+Modifire.swift │ │ │ │ └── Tests │ │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ │ └── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── Sample.swift │ │ │ └── Tests │ │ │ │ └── Sources │ │ │ │ ├── .gitkeep │ │ │ │ └── Sample.swift │ │ ├── Data │ │ │ ├── Data │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── Base │ │ │ │ │ │ └── Environment.swift │ │ │ │ │ ├── DataMapping │ │ │ │ │ │ ├── Request │ │ │ │ │ │ │ ├── Account │ │ │ │ │ │ │ │ ├── AppleLoginRequestDTO.swift │ │ │ │ │ │ │ │ ├── AppleWithdrawCodeRequestDTO.swift │ │ │ │ │ │ │ │ ├── KakaoLoginReqeustDTO.swift │ │ │ │ │ │ │ │ ├── RefreshReqeustDTO.swift │ │ │ │ │ │ │ │ └── UserNameRequestDTO.swift │ │ │ │ │ │ │ ├── Attempt │ │ │ │ │ │ │ │ ├── AttemptFilterRequestDTO.swift │ │ │ │ │ │ │ │ ├── AttemptPatchRequestDTO.swift │ │ │ │ │ │ │ │ └── AttemptRequestDTO.swift │ │ │ │ │ │ │ ├── Calendar │ │ │ │ │ │ │ │ └── YearMonthRequestDTO.swift │ │ │ │ │ │ │ ├── Memo │ │ │ │ │ │ │ │ └── EditMemoRequestDTO.swift │ │ │ │ │ │ │ ├── Story │ │ │ │ │ │ │ │ ├── ProblemRequestDTO.swift │ │ │ │ │ │ │ │ └── StoryRequestDTO.swift │ │ │ │ │ │ │ └── Video │ │ │ │ │ │ │ │ ├── ThumbnailPreSignedUploadRequestDTO.swift │ │ │ │ │ │ │ │ └── VideoUploadRequestDTO.swift │ │ │ │ │ │ └── Response │ │ │ │ │ │ │ ├── Account │ │ │ │ │ │ │ └── UserResponseDTO.swift │ │ │ │ │ │ │ ├── Attempt │ │ │ │ │ │ │ ├── AttemptResponseDTO.swift │ │ │ │ │ │ │ ├── AttemptStampResponseDTO.swift │ │ │ │ │ │ │ ├── AttemptVideoResponseDTO.swift │ │ │ │ │ │ │ └── DetailAttemptResponseDTO.swift │ │ │ │ │ │ │ ├── BaseResponse │ │ │ │ │ │ │ ├── BaseContentsResponse.swift │ │ │ │ │ │ │ ├── BaseResponseDTO.swift │ │ │ │ │ │ │ ├── ErrorResponseDTO.swift │ │ │ │ │ │ │ └── MetaResponseDTO.swift │ │ │ │ │ │ │ ├── Calendar │ │ │ │ │ │ │ ├── CalendarDayResponseDTO.swift │ │ │ │ │ │ │ ├── CalendarProblemResponseDTO.swift │ │ │ │ │ │ │ ├── CalendarResponseDTO.swift │ │ │ │ │ │ │ ├── CalendarStoryResponseDTO.swift │ │ │ │ │ │ │ └── CalendarSummaryResponseDTO.swift │ │ │ │ │ │ │ ├── Folder │ │ │ │ │ │ │ ├── FolderAttemptColorResponseDTO.swift │ │ │ │ │ │ │ ├── FolderAttemptResponseDTO.swift │ │ │ │ │ │ │ ├── FolderCragResponseDTO.swift │ │ │ │ │ │ │ ├── FolderGradeResponseDTO.swift │ │ │ │ │ │ │ ├── FolderResponseDTO.swift │ │ │ │ │ │ │ └── FolderVideoResponseDTO.swift │ │ │ │ │ │ │ ├── Grade │ │ │ │ │ │ │ ├── ColorResponseDTO.swift │ │ │ │ │ │ │ ├── GradeResponseDTO.swift │ │ │ │ │ │ │ └── GradesResponseDTO.swift │ │ │ │ │ │ │ ├── Report │ │ │ │ │ │ │ └── ReportResponseDTO.swift │ │ │ │ │ │ │ ├── Stories │ │ │ │ │ │ │ ├── Problem │ │ │ │ │ │ │ │ └── RegisterProblemResponseDTO.swift │ │ │ │ │ │ │ ├── Story │ │ │ │ │ │ │ │ ├── StoryAttemptResponseDTO.swift │ │ │ │ │ │ │ │ ├── StoryProblemResponseDTO.swift │ │ │ │ │ │ │ │ ├── StoryResponseDTO.swift │ │ │ │ │ │ │ │ ├── StoryStampResponseDTO.swift │ │ │ │ │ │ │ │ └── StoryVideoResponseDTO.swift │ │ │ │ │ │ │ └── Summary │ │ │ │ │ │ │ │ ├── StorySummaryProblemResponseDTO.swift │ │ │ │ │ │ │ │ └── StorySummaryResponseDTO.swift │ │ │ │ │ │ │ ├── Story │ │ │ │ │ │ │ └── SaveStoryResponseDTO.swift │ │ │ │ │ │ │ ├── Token │ │ │ │ │ │ │ └── AuthTokenDTO.swift │ │ │ │ │ │ │ └── Video │ │ │ │ │ │ │ └── VideoThumbnailUploadResponseDTO.swift │ │ │ │ │ ├── DataSource │ │ │ │ │ │ ├── Local │ │ │ │ │ │ │ └── TokenDataSource.swift │ │ │ │ │ │ └── Remote │ │ │ │ │ │ │ ├── AttemptDataSource.swift │ │ │ │ │ │ │ ├── AuthDataSource.swift │ │ │ │ │ │ │ ├── CalendarDataSource.swift │ │ │ │ │ │ │ ├── CragDataSource.swift │ │ │ │ │ │ │ ├── GradeDataSource.swift │ │ │ │ │ │ │ ├── ReportDataSource.swift │ │ │ │ │ │ │ ├── StoriesDataSource.swift │ │ │ │ │ │ │ ├── UserDataSource.swift │ │ │ │ │ │ │ └── VideoDataSource.swift │ │ │ │ │ ├── Repository │ │ │ │ │ │ ├── DefaultAccountRepository.swift │ │ │ │ │ │ ├── DefaultAttemptRepository.swift │ │ │ │ │ │ ├── DefaultCalendarRepository.swift │ │ │ │ │ │ ├── DefaultCragRepository.swift │ │ │ │ │ │ ├── DefaultDeleteStoryRepository.swift │ │ │ │ │ │ ├── DefaultEditMemoRepository.swift │ │ │ │ │ │ ├── DefaultGradeRepository.swift │ │ │ │ │ │ ├── DefaultLoginRepository.swift │ │ │ │ │ │ ├── DefaultLoginTokenRepository.swift │ │ │ │ │ │ ├── DefaultLogoutRepository.swift │ │ │ │ │ │ ├── DefaultNearByCragRepository.swift │ │ │ │ │ │ ├── DefaultProblemRepository.swift │ │ │ │ │ │ ├── DefaultReportRepository.swift │ │ │ │ │ │ ├── DefaultSaveAttemptRepository.swift │ │ │ │ │ │ ├── DefaultSaveStoryRepository.swift │ │ │ │ │ │ ├── DefaultStoryRepository.swift │ │ │ │ │ │ ├── DefaultTokenRepository.swift │ │ │ │ │ │ ├── DefualtWithdrawRepository.swift │ │ │ │ │ │ └── VideoRecordRepositry.swift │ │ │ │ │ └── Storage │ │ │ │ │ │ ├── AppData.swift │ │ │ │ │ │ ├── KeychainItemType.swift │ │ │ │ │ │ ├── KeychainManager.swift │ │ │ │ │ │ ├── KeychainWrapper.swift │ │ │ │ │ │ └── UserDefaultWrapper.swift │ │ │ │ └── Tests │ │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ │ └── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── Sample.swift │ │ │ └── Networker │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ ├── .gitkeep │ │ │ │ ├── Auth │ │ │ │ │ ├── TokenAuthenticationCredential.swift │ │ │ │ │ └── TokenAuthenticator.swift │ │ │ │ ├── Base │ │ │ │ │ ├── Encodable+.swift │ │ │ │ │ ├── Headers+.swift │ │ │ │ │ ├── MoyaProvider.swift │ │ │ │ │ ├── NetworkEventMonitor.swift │ │ │ │ │ └── TargetType+.swift │ │ │ │ └── Error │ │ │ │ │ └── NetworkError.swift │ │ │ │ └── Tests │ │ │ │ ├── Resources │ │ │ │ └── Empty.swift │ │ │ │ └── Sources │ │ │ │ ├── .gitkeep │ │ │ │ └── Sample.swift │ │ ├── Domains │ │ │ ├── AccountDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Entity │ │ │ │ │ │ └── User.swift │ │ │ │ │ ├── Repository │ │ │ │ │ │ ├── AccountRepository.swift │ │ │ │ │ │ ├── LoginRepository.swift │ │ │ │ │ │ ├── LoginTokenRepository.swift │ │ │ │ │ │ ├── LogoutRepository.swift │ │ │ │ │ │ └── WithdrawRepository.swift │ │ │ │ │ └── UseCase │ │ │ │ │ │ ├── Account │ │ │ │ │ │ └── AccountUseCase.swift │ │ │ │ │ │ ├── Login │ │ │ │ │ │ └── LoginUseCase.swift │ │ │ │ │ │ ├── LoginTypeFetcher │ │ │ │ │ │ └── LoginTypeFetcherUseCase.swift │ │ │ │ │ │ ├── Logout │ │ │ │ │ │ └── LogoutUseCase.swift │ │ │ │ │ │ ├── ValidateUserSession │ │ │ │ │ │ └── ValidateUserSessionUseCase.swift │ │ │ │ │ │ └── Withdraw │ │ │ │ │ │ └── WithdrawUseCase.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── CalendarDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Entity │ │ │ │ │ │ ├── CalendarDay.swift │ │ │ │ │ │ ├── CalendarProblem.swift │ │ │ │ │ │ ├── CalendarStory.swift │ │ │ │ │ │ ├── CalendarSummary.swift │ │ │ │ │ │ └── ClimbCalendar.swift │ │ │ │ │ ├── Repository │ │ │ │ │ │ └── CalendarRepository.swift │ │ │ │ │ └── UseCase │ │ │ │ │ │ ├── FetchCalendarUseCase.swift │ │ │ │ │ │ └── FutureMonthCheckerUseCase.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ ├── FetchCalendarTest.swift │ │ │ │ │ └── FutureMonthCheckerTest.swift │ │ │ ├── Domain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── Repository │ │ │ │ │ │ └── NearByCragRepository.swift │ │ │ │ │ ├── Services │ │ │ │ │ │ ├── Location.swift │ │ │ │ │ │ └── LocationFetcher.swift │ │ │ │ │ └── UseCase │ │ │ │ │ │ ├── GradeUseCase.swift │ │ │ │ │ │ ├── LogConsoleUseCase.swift │ │ │ │ │ │ └── NearByCragUseCase.swift │ │ │ │ └── Tests │ │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ │ └── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── Sample.swift │ │ │ ├── EditDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Entity │ │ │ │ │ │ ├── EdittedVideo.swift │ │ │ │ │ │ └── Stamp.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── FolderDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Entity │ │ │ │ │ │ ├── Attempt.swift │ │ │ │ │ │ ├── AttemptStamp.swift │ │ │ │ │ │ ├── AttemptVideo.swift │ │ │ │ │ │ ├── FilterableAttemptInfo.swift │ │ │ │ │ │ ├── ReadAttempt.swift │ │ │ │ │ │ └── ReadAttemptDetail.swift │ │ │ │ │ ├── Repository │ │ │ │ │ │ ├── AttemptRepository.swift │ │ │ │ │ │ ├── CragRepository.swift │ │ │ │ │ │ └── GradeRepository.swift │ │ │ │ │ ├── UseCase │ │ │ │ │ │ ├── AttemptUseCase.swift │ │ │ │ │ │ ├── FetchFilterableAttemptInfoUseCase.swift │ │ │ │ │ │ └── FilteredAttemptUseCase.swift │ │ │ │ │ └── ValueObject │ │ │ │ │ │ ├── AttemptFilter.swift │ │ │ │ │ │ └── AttemptResult.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── ReportDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Entity │ │ │ │ │ │ └── Report.swift │ │ │ │ │ ├── Repository │ │ │ │ │ │ └── ReportRepository.swift │ │ │ │ │ └── UseCase │ │ │ │ │ │ └── ReportFetcherUseCase.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── StoryDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Entity │ │ │ │ │ │ ├── Story │ │ │ │ │ │ │ ├── Story.swift │ │ │ │ │ │ │ ├── StoryAttempt.swift │ │ │ │ │ │ │ ├── StoryProblem.swift │ │ │ │ │ │ │ ├── StoryStamp.swift │ │ │ │ │ │ │ └── StoryVideo.swift │ │ │ │ │ │ └── Summary │ │ │ │ │ │ │ ├── StorySummary.swift │ │ │ │ │ │ │ └── StorySummaryProblem.swift │ │ │ │ │ ├── Repository │ │ │ │ │ │ ├── DeleteStoryRepository.swift │ │ │ │ │ │ ├── EditMemoRepository.swift │ │ │ │ │ │ ├── ProblemRepository.swift │ │ │ │ │ │ └── StoryRepository.swift │ │ │ │ │ └── UseCase │ │ │ │ │ │ ├── DeleteStoryUseCase.swift │ │ │ │ │ │ ├── EditMemoUseCase.swift │ │ │ │ │ │ ├── FetchStoryUseCase.swift │ │ │ │ │ │ ├── RegisterProblemUseCase.swift │ │ │ │ │ │ └── UpdateStoryStatusUseCase.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── TokenDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Entity │ │ │ │ │ │ └── Token.swift │ │ │ │ │ └── Repository │ │ │ │ │ │ └── TokenRepository.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ └── VideoDomain │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ ├── Entity │ │ │ │ │ ├── Story │ │ │ │ │ │ ├── AttemptRequest.swift │ │ │ │ │ │ ├── SavedGrade.swift │ │ │ │ │ │ ├── SavedStory.swift │ │ │ │ │ │ └── StoryRequest.swift │ │ │ │ │ └── Video │ │ │ │ │ │ ├── VideoUploadModel.swift │ │ │ │ │ │ └── Videothumbnails.swift │ │ │ │ ├── Repository │ │ │ │ │ ├── CaptureRepository.swift │ │ │ │ │ ├── SaveAttemptRepository.swift │ │ │ │ │ └── SaveStoryRepository.swift │ │ │ │ └── UseCase │ │ │ │ │ ├── SaveAttempt │ │ │ │ │ └── SaveAttemptUseCase.swift │ │ │ │ │ ├── SaveStory │ │ │ │ │ └── SaveStoryUseCase.swift │ │ │ │ │ └── Video │ │ │ │ │ ├── VideoPermissionUseCase.swift │ │ │ │ │ └── VideoUseCase.swift │ │ │ │ └── Tests │ │ │ │ └── Sources │ │ │ │ └── Sample.swift │ │ ├── Features │ │ │ ├── AddAttemptsFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentation │ │ │ │ │ │ ├── AddAttemptsFeature.swift │ │ │ │ │ │ ├── AddAttemptsView.swift │ │ │ │ │ │ └── VideoThumbnailView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── CalendarFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentation │ │ │ │ │ │ ├── Calendar │ │ │ │ │ │ ├── CalendarFeature.swift │ │ │ │ │ │ └── CalendarView.swift │ │ │ │ │ │ ├── CalendarDetail │ │ │ │ │ │ ├── CalendarDetailFeature.swift │ │ │ │ │ │ ├── CalendarDetailView.swift │ │ │ │ │ │ ├── Component │ │ │ │ │ │ │ └── MoreItemRow.swift │ │ │ │ │ │ └── UIModel │ │ │ │ │ │ │ └── MoreItem.swift │ │ │ │ │ │ ├── Component │ │ │ │ │ │ ├── ClimbingCard.swift │ │ │ │ │ │ └── DayView.swift │ │ │ │ │ │ ├── DayBottomSheet │ │ │ │ │ │ └── DayBottomSheet.swift │ │ │ │ │ │ ├── Main │ │ │ │ │ │ ├── CalendarMainFeature.swift │ │ │ │ │ │ └── CalendarMainView.swift │ │ │ │ │ │ ├── Stories │ │ │ │ │ │ ├── StoriesFeature.swift │ │ │ │ │ │ └── StoriesView.swift │ │ │ │ │ │ └── UserInfo │ │ │ │ │ │ ├── UserInfoFeature.swift │ │ │ │ │ │ └── UserInfoView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── CompletionReportFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentation │ │ │ │ │ │ ├── CompletionReportFeature.swift │ │ │ │ │ │ └── CompletionReportView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── EditFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Empty.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentation │ │ │ │ │ │ ├── AVPlayerClient.swift │ │ │ │ │ │ ├── DragEditView.swift │ │ │ │ │ │ ├── EditFeatureTooltipManager.swift │ │ │ │ │ │ ├── ThumbnailsView.swift │ │ │ │ │ │ ├── VideoEditFeature.swift │ │ │ │ │ │ └── VideoEditView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── FolderFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentaition │ │ │ │ │ │ ├── Attempt │ │ │ │ │ │ ├── AttemptFeature.swift │ │ │ │ │ │ └── AttemptView.swift │ │ │ │ │ │ └── Folder │ │ │ │ │ │ ├── FolderFeature.swift │ │ │ │ │ │ └── FolderView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── FolderTabFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentaition │ │ │ │ │ │ ├── FolderTabFeature.swift │ │ │ │ │ │ └── FolderTabView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── LoginFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── LoginFeature.swift │ │ │ │ │ └── LoginView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── MainFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ └── SampleApp.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── MainFeature.swift │ │ │ │ │ ├── MainFeatureAssembly.swift │ │ │ │ │ └── MainView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── Sample.swift │ │ │ ├── NickNameFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ ├── App.swift │ │ │ │ │ │ └── AppDelegate.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Presentation │ │ │ │ │ │ ├── NickNameFeature.swift │ │ │ │ │ │ └── NickNameView.swift │ │ │ │ │ └── UIModel │ │ │ │ │ │ └── NickNameViewState.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── OnboardingFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ ├── App.swift │ │ │ │ │ │ └── AppDelegate.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentation │ │ │ │ │ │ ├── OnboardingFeature.swift │ │ │ │ │ │ ├── OnboardingView.swift │ │ │ │ │ │ └── PageView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── ProfileEditorFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── ProfileEditorApp.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── ProfileEditorFeature.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── ProfileEditorView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── ReportFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentation │ │ │ │ │ │ ├── ReportFeature.swift │ │ │ │ │ │ └── ReportView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── RootFeature │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── TestProject.swift │ │ │ │ └── Tests │ │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ │ └── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── TestProject.swift │ │ │ ├── SettingFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ └── App.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ └── Presentation │ │ │ │ │ │ ├── Component │ │ │ │ │ │ └── SettingRow.swift │ │ │ │ │ │ ├── Main │ │ │ │ │ │ ├── SettingFeature.swift │ │ │ │ │ │ └── SettingView.swift │ │ │ │ │ │ ├── Profile │ │ │ │ │ │ ├── ProfileFeature.swift │ │ │ │ │ │ └── ProfileView.swift │ │ │ │ │ │ └── UIModel │ │ │ │ │ │ └── SettingItemType.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── SocialFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ ├── App.swift │ │ │ │ │ │ └── AppDelegate.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Sample.swift │ │ │ │ │ └── Social │ │ │ │ │ │ ├── SocialFeature.swift │ │ │ │ │ │ └── SocialView.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ ├── SplashFeature │ │ │ │ ├── Demo │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── Sample.swift │ │ │ │ │ └── Sources │ │ │ │ │ │ ├── App.swift │ │ │ │ │ │ └── AppDelegate.swift │ │ │ │ ├── Interface │ │ │ │ │ └── Sources │ │ │ │ │ │ └── AppVersionCheckProtocol.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── Presentation │ │ │ │ │ │ ├── SplashFeature.swift │ │ │ │ │ │ └── SplashView.swift │ │ │ │ │ └── UserDefault │ │ │ │ │ │ └── SplashDataManager.swift │ │ │ │ ├── Test │ │ │ │ │ └── Sources │ │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ └── VideoFeature │ │ │ │ ├── Demo │ │ │ │ ├── Resources │ │ │ │ │ └── Sample.swift │ │ │ │ └── Sources │ │ │ │ │ └── SampleApp.swift │ │ │ │ ├── Interface │ │ │ │ └── Sources │ │ │ │ │ └── VideoDataManager.swift │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ ├── DI │ │ │ │ │ └── VideoFeatureAssembly.swift │ │ │ │ ├── Permission │ │ │ │ │ └── PermissionHandler.swift │ │ │ │ ├── Record │ │ │ │ │ ├── RecordHomeFeature.swift │ │ │ │ │ ├── RecordHomeView.swift │ │ │ │ │ ├── Recorded │ │ │ │ │ │ ├── RecordedFeature.swift │ │ │ │ │ │ ├── RecordedPlayPreview.swift │ │ │ │ │ │ ├── RecordedPlayView.swift │ │ │ │ │ │ ├── RecordedPlayViewModel.swift │ │ │ │ │ │ └── RecordedView.swift │ │ │ │ │ ├── RecordedProblems │ │ │ │ │ │ ├── ProblemCheckBottomSheet.swift │ │ │ │ │ │ ├── ProblemCheckCompleteBottomSheet.swift │ │ │ │ │ │ ├── ProblemCheckCompleteBottomSheetFeature.swift │ │ │ │ │ │ └── ProblemCheckFeature.swift │ │ │ │ │ └── Recording │ │ │ │ │ │ ├── RecordingFeature.swift │ │ │ │ │ │ ├── RecordingPlayView.swift │ │ │ │ │ │ ├── RecordingPlayViewModel.swift │ │ │ │ │ │ ├── RecordingPlyPreview.swift │ │ │ │ │ │ └── RecordingView.swift │ │ │ │ ├── UserDefault │ │ │ │ │ └── LocalVideoDataManager.swift │ │ │ │ └── Video │ │ │ │ │ ├── VideoFeature.swift │ │ │ │ │ ├── VideoSession │ │ │ │ │ ├── VideoPreview.swift │ │ │ │ │ ├── VideoPreviewViewModel.swift │ │ │ │ │ └── VideoSession.swift │ │ │ │ │ └── VideoView.swift │ │ │ │ ├── Test │ │ │ │ └── Sources │ │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ └── Sources │ │ │ │ └── Sample.swift │ │ ├── Modules │ │ │ ├── Shared │ │ │ │ ├── Project.swift │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ ├── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── ClLogDI.swift │ │ │ │ │ ├── Entity │ │ │ │ │ │ ├── AttemptStatus.swift │ │ │ │ │ │ ├── Crag.swift │ │ │ │ │ │ └── Grade.swift │ │ │ │ │ ├── Extension │ │ │ │ │ │ ├── CMTime+.swift │ │ │ │ │ │ ├── Date+.swift │ │ │ │ │ │ ├── Int+.swift │ │ │ │ │ │ ├── PHAsset+.swift │ │ │ │ │ │ ├── Resolver+.swift │ │ │ │ │ │ ├── String+.swift │ │ │ │ │ │ └── TimeInterval+.swift │ │ │ │ │ └── Notification+.swift │ │ │ │ └── Tests │ │ │ │ │ ├── Resources │ │ │ │ │ └── Empty.swift │ │ │ │ │ └── Sources │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── Sample.swift │ │ │ └── ThirdPartyLibrary │ │ │ │ ├── Project.swift │ │ │ │ ├── Sources │ │ │ │ ├── .gitkeep │ │ │ │ └── Sample.swift │ │ │ │ └── Tests │ │ │ │ ├── Resources │ │ │ │ └── Empty.swift │ │ │ │ └── Sources │ │ │ │ ├── .gitkeep │ │ │ │ └── Sample.swift │ │ └── Service │ │ │ ├── Project.swift │ │ │ ├── Sources │ │ │ ├── .gitkeep │ │ │ ├── DI │ │ │ │ └── ClogServiceAssembly.swift │ │ │ ├── Log │ │ │ │ └── Clogger.swift │ │ │ ├── Presentation │ │ │ │ ├── Main │ │ │ │ │ ├── MainFeature.swift │ │ │ │ │ └── MainView.swift │ │ │ │ ├── Root │ │ │ │ │ ├── DI │ │ │ │ │ │ └── HomeFeatureAssembly.swift │ │ │ │ │ └── View │ │ │ │ │ │ ├── RootFeature.swift │ │ │ │ │ │ └── RootView.swift │ │ │ │ └── Router │ │ │ │ │ ├── Path.swift │ │ │ │ │ ├── RouterFeature.swift │ │ │ │ │ └── RouterView.swift │ │ │ └── Services │ │ │ │ └── Location │ │ │ │ ├── DefaultLocationFetcher.swift │ │ │ │ └── LocationError.swift │ │ │ └── Tests │ │ │ └── Sources │ │ │ ├── .gitkeep │ │ │ └── Sample.swift │ └── Umbrella │ │ ├── Project.swift │ │ └── Sources │ │ ├── .gitkeep │ │ └── Sample.swift ├── Script │ ├── addNewDomain.sh │ └── addNewFeature.sh ├── Tuist │ ├── Config.swift │ ├── Package.resolved │ ├── Package.swift │ ├── ProjectDescriptionHelpers │ │ ├── Configuration │ │ │ ├── AppConfiguration.swift │ │ │ ├── InfoPlist.swift │ │ │ └── XCConfig.swift │ │ ├── Extension │ │ │ ├── Dependency+Core.swift │ │ │ ├── Dependency+Data.swift │ │ │ ├── Dependency+Domain.swift │ │ │ ├── Dependency+Feature.swift │ │ │ ├── Dependency+Library.swift │ │ │ ├── Dependency+Module.swift │ │ │ ├── Dependency+Service.swift │ │ │ ├── Path+.swift │ │ │ ├── Scheme+.swift │ │ │ └── SettingDictionary+.swift │ │ └── Template │ │ │ ├── ModuleType.swift │ │ │ └── Project+Template.swift │ └── Templates │ │ ├── domain │ │ └── domain.swift │ │ ├── feature │ │ └── feature.swift │ │ ├── service │ │ └── service.swift │ │ └── stencil │ │ ├── app.stencil │ │ ├── appDelegate.stencil │ │ ├── domainProject.stencil │ │ ├── featureProject.stencil │ │ └── sample.stencil ├── Workspace.swift ├── ci_scripts │ ├── ci_post_clone.sh │ └── tuist_install.sh ├── graph.png └── xcconfigs │ ├── Base │ └── Projects │ │ ├── Project-Dev.xcconfig │ │ ├── Project-Prod.xcconfig │ │ └── Project-Test.xcconfig │ └── targets │ ├── iOS-Framework.xcconfig │ └── iOS-Tests.xcconfig ├── README.md └── fastlane ├── Matchfile └── api_key.json /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @depromeet/16th-team5-iOS 2 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## 🔗 관련링크 2 | 5 | 6 | - [이슈 링크]() 7 | 8 |
9 | 10 | ## ✨ 작업 내용 11 | 14 | 15 | - 16 | 17 |
18 | 19 | 📸 관련 로그, 스크린샷 20 | --- 21 | 25 | 26 | | 작업전 | 작업후 | 27 | | --- | --- | 28 | |![작업전](path/asis) |![작업후](path/tobe) | 29 | 30 |
31 | 32 | ## 🧹 기타 참고 사항 33 | 37 | 38 | - 39 | -------------------------------------------------------------------------------- /.tuist-version: -------------------------------------------------------------------------------- 1 | 4.27.0 -------------------------------------------------------------------------------- /Clog/.mise.toml: -------------------------------------------------------------------------------- 1 | [tools] 2 | tuist = "4.27.0" 3 | -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/ClogProduction.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.applesignin 6 | 7 | Default 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/100.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/114.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/144.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/167.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/20.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/29.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/50.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/57.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/72.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/AppModule/ClogApp/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/AppModule/ClogApp/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // Config 4 | // 5 | // Created by Junyoung on 1/10/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .module(name: "Core"), 13 | product: .framework, 14 | dependencies: [ 15 | .Core.designKit(.clog), 16 | .Domains.Domain.domain(.clog), 17 | ] 18 | ) 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/Core/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Sources/Extension/String+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+Extension.swift 3 | // Core 4 | // 5 | // Created by soi on 3/14/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public extension String { 12 | /// 단어가 주어진 패턴과 일치하는지 확인 (초성 검색 포함) 13 | func matchesPattern(_ pattern: String) -> Bool { 14 | return ConsonantSearcherHelper.isMatchPattern(word: self, pattern: pattern) 15 | } 16 | 17 | /// 초성만 추출 - 18 | var consonants: String { 19 | return ConsonantSearcherHelper.extractConsonants(self) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Sources/Helper/LocationClient.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LocationClient.swift 3 | // Core 4 | // 5 | // Created by soi on 3/24/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Sources/ViewProtocol.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewProtocol.swift 3 | // Core 4 | // 5 | // Created by Junyoung on 3/7/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | public protocol ViewProtocol: BaseViewProtocol { 12 | } 13 | 14 | public protocol BaseViewProtocol: View { } 15 | 16 | public extension BaseViewProtocol { 17 | func makeView() -> some View { self } 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/Core/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/Core/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Core/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | import CalendarFeature 4 | import CalendarDomain 5 | import Shared 6 | 7 | @main 8 | struct DesignKitDemoApp: App { 9 | 10 | init() { 11 | } 12 | 13 | var body: some Scene { 14 | WindowGroup { 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // Config 4 | // 5 | // Created by Junyoung on 1/9/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .module(name: "DesignKit", useDemo: true), 13 | product: .framework, 14 | dependencies: [ 15 | .Modules.thirdPartyLibrary(.clog), 16 | ], 17 | hasResources: true 18 | ) 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Capture/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Capture/icn_camera_selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_camera_selected.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Capture/icn_camera_unselected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_camera_unselected.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/playSmall.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "playSmall.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/redoDisable.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "redo.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/redoEnable.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "redoActive.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/stopSmall.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "stopSmall.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/stopSmall.imageset/stopSmall.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/undoDisable.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "undo.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Edit/undoEnable.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "undoActive.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/basicThumbnail.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "basicThumbnail.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/basicThumbnail.imageset/basicThumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/basicThumbnail.imageset/basicThumbnail.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/dropdownDown.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "dropdown_down.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/dropdownDown.imageset/dropdown_down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/dropdownUp.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "dropdown_up.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/dropdownUp.imageset/dropdown_up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/icn_folder_selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_folder_selected.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/icn_folder_selected.imageset/icn_folder_selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/icn_folder_unselected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_folder_unselected.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/icn_folder_unselected.imageset/icn_folder_unselected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/x.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "x.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Folder/x.imageset/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/appleLogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Shape.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/appleLogo.imageset/Shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/appleLogo.imageset/Shape.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/clogLogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "logo.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/clogLogo.imageset/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/clogLogo.imageset/logo.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/kakaoLogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "Logo kakao.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/kakaoLogo.imageset/Logo kakao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Logo/kakaoLogo.imageset/Logo kakao.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/OnBoarding/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/OnBoarding/onBoarding1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "splash1.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/OnBoarding/onBoarding2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "splash2.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/OnBoarding/onBoarding3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "splash3.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/defaultProfile.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Property 1=edit.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Property 1=edit@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Property 1=edit@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/defaultProfile.imageset/Property 1=edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/defaultProfile.imageset/Property 1=edit.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/defaultProfile.imageset/Property 1=edit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/defaultProfile.imageset/Property 1=edit@2x.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/defaultProfile.imageset/Property 1=edit@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Profile/defaultProfile.imageset/Property 1=edit@3x.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/icn_report_selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_report_selected.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/icn_report_selected.imageset/icn_report_selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/icn_report_unselected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_report_unselected.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/icn_report_unselected.imageset/icn_report_unselected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/reportAttempt.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Property 1=img_report_attempt.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/reportCrag.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Property 1=img_report2.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/reportExercise.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Property 1=img_report1.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/reportPercent.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Property 1=img_report_percent.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/Report/reportProblem.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Property 1=img_report_problem.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/close_circle.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "x.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/close_circle.imageset/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/common/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/common/recodeButton.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "recode_button.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/common/recodeButton.imageset/recode_button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/common/recordingButton.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "recording_button.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/common/recordingButton.imageset/recording_button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icn_close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_close.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icn_close.imageset/icn_close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icon_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icon_down.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icon_down.imageset/icon_down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/alert.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_alert.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/alert.imageset/icn_alert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_back.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/back.imageset/icn_back.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/calendarAfter.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_calendar_after.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/calendarAfter.imageset/icn_calendar_after.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/calendarBefore.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_calendar_before.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/calendarBefore.imageset/icn_calendar_before.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/camera.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_camera.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/check.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "check.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/check.imageset/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_close.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/close.imageset/icn_close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/cut.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "cut.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/delete.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_delete.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/delete.imageset/icn_delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/dotVertical.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_dot_vertical.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/dotVertical.imageset/icn_dot_vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_down.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/down.imageset/icn_down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/edit.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_edit.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/edit.imageset/icn_edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/flashOff.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_flash_x.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/flashOff.imageset/icn_flash_x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/flashOn.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_flash.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/flashOn.imageset/icn_flash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/folder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_folder.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/folder.imageset/icn_folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/gallery.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_gallery.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/gallery.imageset/icn_gallery.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/list.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_list.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/list.imageset/icn_list.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/location.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_location.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/person.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_camera.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "icn_camera@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "icn_camera@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/person.imageset/icn_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/person.imageset/icn_camera.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/person.imageset/icn_camera@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/person.imageset/icn_camera@2x.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/person.imageset/icn_camera@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/person.imageset/icn_camera@3x.png -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/report.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_report.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/report.imageset/icn_report.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/right.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_right.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/right.imageset/icn_right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/setting.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "setting.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/share.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_share.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/share.imageset/icn_share.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/stamp.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_stamp.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/stamp.imageset/icn_stamp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/stampSmall.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "stampSmall.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/stampSmall.imageset/stampSmall.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/tag.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "tag.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/tag.imageset/tag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/time.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "time.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/time.imageset/time.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/up.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icn_up.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/up.imageset/icn_up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/videoNone.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "video_none.svg", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "preserves-vector-representation" : true, 14 | "template-rendering-intent" : "template" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Asset/Assets.xcassets/icons/videoNone.imageset/video_none.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_background.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x1E", 9 | "green" : "0x1B", 10 | "red" : "0x19" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_complete.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xFF", 9 | "green" : "0x7C", 10 | "red" : "0x5E" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_dim.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "0.600", 8 | "blue" : "0x1E", 9 | "green" : "0x1B", 10 | "red" : "0x19" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_fail.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x54", 9 | "green" : "0x5F", 10 | "red" : "0xFF" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray10.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xFC", 9 | "green" : "0xF5", 10 | "red" : "0xF3" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray100.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xD1", 9 | "green" : "0xBF", 10 | "red" : "0xB8" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray200.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xBA", 9 | "green" : "0xA6", 10 | "red" : "0x9E" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray300.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xAE", 9 | "green" : "0x9A", 10 | "red" : "0x93" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray400.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x96", 9 | "green" : "0x85", 10 | "red" : "0x7F" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray50.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xFC", 9 | "green" : "0xF5", 10 | "red" : "0xF3" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray500.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x73", 9 | "green" : "0x66", 10 | "red" : "0x60" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray600.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x4D", 9 | "green" : "0x44", 10 | "red" : "0x41" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray700.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x3A", 9 | "green" : "0x32", 10 | "red" : "0x2F" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray800.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x28", 9 | "green" : "0x23", 10 | "red" : "0x21" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_gray900.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x1E", 9 | "green" : "0x1B", 10 | "red" : "0x19" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green100.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xAB", 9 | "green" : "0xFA", 10 | "red" : "0xDE" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green200.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x68", 9 | "green" : "0xF6", 10 | "red" : "0xC4" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green300.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x5C", 9 | "green" : "0xDB", 10 | "red" : "0xAE" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green400.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x51", 9 | "green" : "0xBF", 10 | "red" : "0x98" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green500.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x45", 9 | "green" : "0xA4", 10 | "red" : "0x83" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green600.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x2E", 9 | "green" : "0x6D", 10 | "red" : "0x57" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green700.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x23", 9 | "green" : "0x52", 10 | "red" : "0x41" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green800.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x17", 9 | "green" : "0x37", 10 | "red" : "0x2C" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_green900.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x0C", 9 | "green" : "0x1B", 10 | "red" : "0x16" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_primary.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x68", 9 | "green" : "0xF6", 10 | "red" : "0xC4" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_textFail.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x23", 9 | "green" : "0x22", 10 | "red" : "0x30" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Color/Color.xcassets/clogUI_white.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0xFF", 9 | "green" : "0xFF", 10 | "red" : "0xFF" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Black.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Bold.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-ExtraBold.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-ExtraLight.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Light.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Medium.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Regular.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-SemiBold.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Resources/Font/Pretendard-Thin.ttf -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Sources/Component/Dialog/DialogButtonType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DialogButtonType.swift 3 | // DesignKit 4 | // 5 | // Created by Junyoung on 3/7/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct DialogButtonType: Equatable, Hashable { 12 | var id: UUID = UUID() 13 | let title: String 14 | let style: DialogStyle 15 | let action: () -> Void 16 | 17 | static func == ( 18 | lhs: DialogButtonType, 19 | rhs: DialogButtonType 20 | ) -> Bool { 21 | lhs.id == rhs.id 22 | } 23 | 24 | func hash(into hasher: inout Hasher) { 25 | hasher.combine(title) 26 | hasher.combine(style) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Sources/Component/Dialog/DialogModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DialogModel.swift 3 | // DesignKit 4 | // 5 | // Created by Junyoung on 3/7/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct DialogModel: Equatable, Identifiable { 12 | var id: UUID = UUID() 13 | let title: String 14 | let message: String 15 | let buttons: [DialogButtonType] 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Sources/Component/Toast/Toast.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Toast.swift 3 | // DesignKit 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct Toast: Equatable { 12 | var message: String 13 | var type: ToastType 14 | var duration: Double = 2 15 | var width: Double = .infinity 16 | 17 | public init( 18 | message: String, 19 | type: ToastType 20 | ) { 21 | self.message = message 22 | self.type = type 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Sources/Component/Toast/ToastType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ToastType.swift 3 | // DesignKit 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public enum ToastType { 12 | case success 13 | case failure 14 | case none 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Sources/Core/DesignSystem/Bundle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bundle.swift 3 | // clogUI 4 | // 5 | // Created by saeng lin on 2/19/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | private class __Bundle {} 12 | 13 | public extension Bundle { 14 | static var clogUIBundle: Bundle = Bundle(for: __Bundle.self) 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/DesignKit/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/DesignKit/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/CoreKit/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/CoreKit/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // Config 4 | // 5 | // Created by Junyoung on 1/9/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .module(name: "Data"), 13 | product: .staticFramework, 14 | dependencies: [ 15 | .Data.networker(.clog), 16 | ] 17 | ) 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Data/Data/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/Base/Environment.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Environment.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/24/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | enum Environment { 12 | static var baseURL: String { 13 | return Bundle.main.object(forInfoDictionaryKey: "baseURL") as? String ?? "" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Account/AppleLoginRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AuthTokenRequestDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/2/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct AppleLoginRequestDTO: Encodable { 12 | let code: String 13 | let codeVerifier: String 14 | } 15 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Account/AppleWithdrawCodeRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppleWithdrawCodeRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/21/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct AppleWithdrawCodeRequestDTO: Encodable { 12 | let authorizationCode: String 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Account/KakaoLoginReqeustDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KakaoTokenReqeustDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/2/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct KakaoLoginReqeustDTO: Encodable, Sendable { 12 | let idToken: String 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Account/RefreshReqeustDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RefreshReqeustDTO.swift 3 | // Data 4 | // 5 | // Created by saeng lin on 4/3/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct RefreshReqeustDTO: Encodable, Sendable { 12 | let refreshToken: String 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Account/UserNameRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserNameRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct UserNameRequestDTO: Encodable { 12 | let name: String 13 | } 14 | 15 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Attempt/AttemptFilterRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttemptFilterRequestDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/28/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct AttemptFilterRequestDTO: Encodable { 12 | let attemptStatus: String? 13 | let cragId: Int? 14 | let gradeId: Int? 15 | 16 | public init(attemptStatus: String?, cragId: Int?, gradeId: Int?) { 17 | self.attemptStatus = attemptStatus 18 | self.cragId = cragId 19 | self.gradeId = gradeId 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Attempt/AttemptRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttemptRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct AttemptRequestDTO: Encodable { 12 | public let status: String 13 | public let problemId: Int? 14 | public let video: VideoRequestDTO 15 | } 16 | 17 | public struct VideoRequestDTO: Encodable { 18 | public let localPath: String 19 | public let thumbnailUrl: String? 20 | public let durationMs: Int 21 | public let stamps: [StampRequestDTO] 22 | } 23 | 24 | public struct StampRequestDTO: Encodable { 25 | public let timeMs: Int 26 | } 27 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Calendar/YearMonthRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // YearMonthRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/12/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct YearMonthRequestDTO: Encodable { 12 | let year: Int 13 | let month: Int 14 | } 15 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Memo/EditMemoRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EditMemoRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/22/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct EditMemoRequestDTO: Encodable { 12 | let storyId: Int 13 | let body: EditMemoRequestBody 14 | } 15 | 16 | public struct EditMemoRequestBody: Encodable { 17 | let memo: String 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Story/ProblemRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ProblemRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct RegisterProblemRequestDTO: Encodable { 12 | let storyId: Int 13 | let body: GradeRequestDTO 14 | } 15 | 16 | public struct GradeRequestDTO: Encodable { 17 | let gradeId: Int? 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Story/StoryRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct StoryRequestDTO: Encodable { 12 | public let cragId: Int? 13 | public let problem: ProblemRequestDTO 14 | public let attempt: AttemptRequestDTO 15 | public let memo: String? 16 | } 17 | 18 | public struct ProblemRequestDTO: Encodable { 19 | public let gradeId: Int? 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Request/Video/ThumbnailPreSignedUploadRequestDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThumbnailPreSignedUploadRequestDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 4/10/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct ThumbnailPreSignedUploadRequestDTO: Encodable { 12 | let originalFilename: String 13 | let contentType: String 14 | } 15 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Account/UserResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import AccountDomain 10 | 11 | public struct UserResponseDTO: Decodable { 12 | let id: Int 13 | let name: String? 14 | 15 | func toDomain() -> User { 16 | return User(id: id, name: name) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Attempt/AttemptResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttemptResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/20/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FolderDomain 11 | 12 | struct AttemptResponseDTO: Decodable { 13 | let status: String 14 | let createdAt: String 15 | let video: AttemptVideoResponseDTO 16 | 17 | func toDomain() -> ReadAttemptDetail { 18 | return ReadAttemptDetail( 19 | status: AttemptResult(rawValue: status) ?? .complete, 20 | video: video.toDomain() 21 | ) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Attempt/AttemptStampResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttemptStampResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/20/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FolderDomain 11 | 12 | struct AttemptStampResponseDTO: Decodable { 13 | let id: Int 14 | let timeMs: Int 15 | 16 | func toDomain(durationMs: Int) -> AttemptStamp { 17 | let position = durationMs > 0 ? Float(timeMs / durationMs) : 0 18 | return AttemptStamp( 19 | id: id, 20 | timeMs: timeMs, 21 | position: position 22 | ) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/BaseResponse/BaseContentsResponse.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BaseContentsResponse.swift 3 | // Data 4 | // 5 | // Created by soi on 3/18/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct BaseContentsResponse: Decodable { 12 | let contents: T 13 | let meta: M? 14 | } 15 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/BaseResponse/BaseResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BaseResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/2/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct BaseResponseDTO: Decodable { 12 | let data: T? 13 | } 14 | 15 | struct EmptyResponseDTO: Decodable { } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/BaseResponse/ErrorResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ErrorResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/2/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct ErrorResponseDTO: Decodable { 12 | let name: String 13 | let code: String 14 | let message: String 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/BaseResponse/MetaResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MetaResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/18/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | public struct BaseMetaResponseDTO: Decodable { 11 | public let nextCursor: Double? 12 | public let hasMore: Bool 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Calendar/CalendarProblemResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ProblemResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/12/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import CalendarDomain 11 | 12 | public struct CalendarProblemResponseDTO: Decodable { 13 | let count: Int 14 | let colorHex: String? 15 | 16 | func toDomain() -> CalendarProblem { 17 | return CalendarProblem( 18 | attemptCount: count, 19 | colorHex: colorHex ?? "" 20 | ) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Calendar/CalendarResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CalendarResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/12/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import CalendarDomain 11 | 12 | public struct CalendarResponseDTO: Decodable { 13 | let summary: CalendarSummaryResponseDTO 14 | let days: [CalendarDayResponseDTO] 15 | 16 | func toDomain() -> ClimbCalendar { 17 | return ClimbCalendar( 18 | summary: summary.toDomain(), 19 | days: days.map { $0.toDomain() } 20 | ) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Folder/FolderAttemptColorResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FolderAttemptColorResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/18/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | struct FolderAttemptColorResponseDTO: Decodable { 13 | let id: Int 14 | let hex: String 15 | let name: String 16 | 17 | func toDomain() -> Grade { 18 | Grade( 19 | id: id, 20 | name: name, 21 | hexCode: hex 22 | ) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Folder/FolderCragResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FolderCragResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/18/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | public struct FolderCragResponseDTO: Decodable { 13 | let id: Int 14 | let name: String 15 | let roadAddress: String 16 | 17 | func toDomain() -> Crag { 18 | Crag( 19 | id: id, 20 | name: name, 21 | address: roadAddress 22 | ) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Folder/FolderGradeResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FolderGradeResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/18/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | public struct FolderGradeResponseDTO: Decodable { 13 | let gradeId: Int 14 | let colorName: String 15 | let colorHex: String 16 | 17 | func toDomain() -> Grade { 18 | Grade( 19 | id: gradeId, 20 | name: colorName, 21 | hexCode: colorHex 22 | ) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Folder/FolderResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FolderResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/18/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct FolderResponseDTO: Decodable { 12 | let attempts: [FolderAttemptResponseDTO] 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Folder/FolderVideoResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FolderVideoResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/17/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FolderDomain 11 | 12 | struct FolderVideoResponseDTO: Decodable { 13 | let id: Int 14 | let localPath: String 15 | let thumbnailUrl: String? 16 | let durationMs: Int 17 | } 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Grade/ColorResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ColorResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct ColorResponseDTO: Decodable { 12 | let id: Int 13 | let hex: String 14 | let name: String 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Grade/GradeResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GradeResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | public struct GradeResponseDTO: Decodable { 13 | public let gradeId: Int 14 | let order: Int 15 | let color: ColorResponseDTO 16 | 17 | func toDomain() -> Grade { 18 | Grade( 19 | id: gradeId, 20 | name: color.name, 21 | hexCode: color.hex 22 | ) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Grade/GradesResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GradesResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct GradesResponseDTO: Decodable { 12 | let grades: [GradeResponseDTO] 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Stories/Problem/RegisterProblemResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RegisterProblemResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct RegisterProblemResponseDTO: Decodable { 12 | let id: Int 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Stories/Story/StoryAttemptResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryAttemptResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import StoryDomain 11 | 12 | // 클라이밍 시도 정보 13 | struct StoryAttemptResponseDTO: Decodable { 14 | let id: Int 15 | let status: String 16 | let video: StoryVideoResponseDTO 17 | 18 | func toDomain() -> StoryAttempt { 19 | return StoryAttempt( 20 | id: id, 21 | status: .init(value: status), 22 | video: video.toDomain() 23 | ) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Stories/Story/StoryResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import StoryDomain 11 | 12 | public struct StoryResponseDTO: Decodable { 13 | let id: Int 14 | let totalDurationMs: Int 15 | let problems: [StoryProblemResponseDTO] 16 | let colorHex: String? 17 | 18 | func toDomain() -> Story { 19 | return Story( 20 | id: id, 21 | totalDurationMs: totalDurationMs, 22 | problems: problems.map { $0.toDomain() } 23 | ) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Stories/Story/StoryStampResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryStampResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import StoryDomain 11 | 12 | // 클라이밍 스탬프 정보 13 | struct StoryStampResponseDTO: Decodable { 14 | let id: Int 15 | let timeMs: Int 16 | 17 | func toDomain() -> StoryStamp { 18 | return StoryStamp( 19 | id: id, 20 | timeMs: timeMs 21 | ) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Stories/Summary/StorySummaryProblemResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StorySummaryProblemResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import StoryDomain 11 | 12 | struct StorySummaryProblemResponseDTO: Decodable { 13 | let id: Int 14 | let attemptCount: Int 15 | let colorHex: String? 16 | 17 | func toDomain() -> StorySummaryProblem { 18 | return StorySummaryProblem( 19 | id: id, 20 | attemptCount: attemptCount, 21 | colorHex: colorHex 22 | ) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Story/SaveStoryResponseDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SaveStoryResponseDTO.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import VideoDomain 10 | 11 | public struct SaveStoryResponseDTO: Decodable { 12 | let storyId: Int 13 | let problemId: Int 14 | 15 | func toDomain() -> SavedStory { 16 | return SavedStory( 17 | storyId: storyId, 18 | problemId: problemId 19 | ) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/DataMapping/Response/Token/AuthTokenDTO.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AuthTokenResponseDTO.swift 3 | // Data 4 | // 5 | // Created by soi on 3/2/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Networker 11 | import TokenDomain 12 | 13 | public struct AuthTokenDTO: Codable { 14 | let accessToken: String 15 | let refreshToken: String 16 | let provider: String 17 | 18 | func toToken() -> AuthToken { 19 | AuthToken( 20 | accessToken: accessToken, 21 | refreshToken: refreshToken 22 | ) 23 | } 24 | 25 | func toProvider() -> String { 26 | return provider 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/Repository/DefaultDeleteStoryRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DefaultDeleteStoryRepository.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/23/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import StoryDomain 10 | 11 | public struct DefaultDeleteStoryRepository: DeleteStoryRepository { 12 | private let dataSource: StoriesDataSource 13 | 14 | public init( 15 | dataSource: StoriesDataSource 16 | ) { 17 | self.dataSource = dataSource 18 | } 19 | 20 | public func execute(_ storyId: Int) async throws { 21 | try await dataSource.delete(storyId) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Sources/Repository/DefaultReportRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DefaultReportRepository.swift 3 | // Data 4 | // 5 | // Created by Junyoung on 3/23/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import ReportDomain 11 | 12 | public struct DefaultReportRepository: ReportRepository { 13 | private let dataSource: ReportDataSource 14 | 15 | public init(dataSource: ReportDataSource) { 16 | self.dataSource = dataSource 17 | } 18 | 19 | public func fetch() async throws -> Report { 20 | try await dataSource.report().toDomain() 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Data/Data/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Data/Data/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Data/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Networker/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // Config 4 | // 5 | // Created by Junyoung on 1/9/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .module(name: "Networker"), 13 | product: .staticFramework, 14 | dependencies: [ 15 | .Library.moya, 16 | .Domains.Domain.domain(.clog), 17 | ] 18 | ) 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Networker/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Data/Networker/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Networker/Sources/Base/TargetType+.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TargetType+.swift 3 | // Networker 4 | // 5 | // Created by Junyoung on 4/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Moya 10 | 11 | public extension TargetType { 12 | // Header 기본 구현 13 | var headers: [String: String]? { 14 | Headers.common 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Networker/Sources/Error/NetworkError.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NetworkError.swift 3 | // Networker 4 | // 5 | // Created by Junyoung on 4/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Moya 11 | 12 | public enum NetworkError: Error { 13 | case underlying(Response) 14 | case failure(Error) 15 | case decoding 16 | case unknown 17 | case tokenEmpty 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Networker/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Data/Networker/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Networker/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Data/Networker/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Data/Networker/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Account"), 6 | product: .framework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Sources/Entity/User.swift: -------------------------------------------------------------------------------- 1 | // 2 | // User.swift 3 | // AccountDomain 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct User { 12 | public let id: Int 13 | public let name: String? 14 | 15 | public init(id: Int, name: String?) { 16 | self.id = id 17 | self.name = name 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Sources/Repository/AccountRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AccountRepository.swift 3 | // AccountDomain 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | // TODO: 추후 분리 필요 12 | public protocol AccountRepository { 13 | func fetchAccount() async throws -> User 14 | func updateName(_ name: String) async throws 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Sources/Repository/LoginRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LoginRepository.swift 3 | // AccountDomain 4 | // 5 | // Created by soi on 3/1/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol LoginRepository { 12 | func login(_ idToken: String) async throws 13 | func login(code: String, codeVerifier: String) async throws 14 | func refreshToken(_ refrshToken: String) async throws 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Sources/Repository/LoginTokenRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TokenRepository.swift 3 | // AccountDomain 4 | // 5 | // Created by Junyoung on 3/19/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol LoginTokenRepository { 12 | func fetchLoginType() -> LoginType 13 | func getRefreshToken() -> String? 14 | func clearToken() async 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Sources/Repository/LogoutRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LogoutRepository.swift 3 | // AccountDomain 4 | // 5 | // Created by Junyoung on 3/19/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol LogoutRepository { 12 | func logout() async throws 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Sources/Repository/WithdrawRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WithdrawRepository.swift 3 | // AccountDomain 4 | // 5 | // Created by Junyoung on 3/19/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol WithdrawRepository { 12 | func execute(_ authorizationCode: String?) async throws 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/AccountDomain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/CalendarDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Calendar"), 6 | product: .framework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/CalendarDomain/Sources/Entity/CalendarProblem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ClimbProblem.swift 3 | // CalendarDomain 4 | // 5 | // Created by Junyoung on 3/11/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct CalendarProblem: Hashable, Identifiable { 12 | public var id: UUID 13 | public let attemptCount: Int 14 | public let colorHex: String 15 | 16 | public init( 17 | id: UUID = UUID(), 18 | attemptCount: Int, 19 | colorHex: String 20 | ) { 21 | self.id = id 22 | self.attemptCount = attemptCount 23 | self.colorHex = colorHex 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/CalendarDomain/Sources/Entity/ClimbCalendar.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Calendar.swift 3 | // CalendarDomain 4 | // 5 | // Created by Junyoung on 3/11/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct ClimbCalendar { 12 | public let summary: CalendarSummary 13 | public let days: [CalendarDay] 14 | 15 | public init( 16 | summary: CalendarSummary, 17 | days: [CalendarDay] 18 | ) { 19 | self.summary = summary 20 | self.days = days 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/Domain/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // Config 4 | // 5 | // Created by Junyoung Lee on 1/9/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .domain(name: "Domain"), 13 | product: .framework, 14 | dependencies: [ 15 | .Domains.Token.domain, 16 | .Domains.Edit.domain, 17 | .Domains.Report.domain, 18 | .Domains.Story.domain, 19 | .Domains.Folder.domain, 20 | .Domains.Calendar.domain, 21 | .Domains.Video.domain, 22 | .Domains.Account.domain, 23 | ] 24 | ) 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/Domain/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Domains/Domain/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/Domain/Sources/Repository/NearByCragRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NearByCragRepository.swift 3 | // Domain 4 | // 5 | // Created by soi on 3/28/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | public protocol NearByCragRepository { 13 | func fetch(longitude: Double?, latitude: Double?, keyword: String?) async throws -> [Crag] 14 | func fetchMore() async throws -> [Crag] 15 | } 16 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/Domain/Sources/Services/Location.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Location.swift 3 | // Domain 4 | // 5 | // Created by soi on 4/9/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct Location: Equatable { 12 | let latitude: Double 13 | let longitude: Double 14 | 15 | public init(latitude: Double, longitude: Double) { 16 | self.latitude = latitude 17 | self.longitude = longitude 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/Domain/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Domains/Domain/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/Domain/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Domains/Domain/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/Domain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/EditDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Edit"), 6 | product: .framework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/EditDomain/Sources/Entity/EdittedVideo.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EdittedVideo.swift 3 | // EditDomain 4 | // 5 | // Created by seunghwan Lee on 3/29/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct Video { 12 | public let videoUrl: URL 13 | public let videoDuration: Double? 14 | public let stampTimeList: [Double] 15 | 16 | public init(videoUrl: URL, videoDuration: Double? = nil, stampTimeList: [Double]) { 17 | self.videoUrl = videoUrl 18 | self.videoDuration = videoDuration 19 | self.stampTimeList = stampTimeList 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/EditDomain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/FolderDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Folder"), 6 | product: .framework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/FolderDomain/Sources/Entity/AttemptStamp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttemptStamp.swift 3 | // FolderDomain 4 | // 5 | // Created by soi on 3/20/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct AttemptStamp: Hashable, Equatable { 12 | public let id: Int 13 | public let timeMs: Int 14 | public let position: Float 15 | 16 | public init( 17 | id: Int, 18 | timeMs: Int, 19 | position: Float 20 | ) { 21 | self.id = id 22 | self.timeMs = timeMs 23 | self.position = position 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/FolderDomain/Sources/Entity/FilterableAttemptInfo.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FilterableAttemptInfo.swift 3 | // FolderDomain 4 | // 5 | // Created by soi on 3/20/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | public struct FilterableAttemptInfo: Hashable, Identifiable { 13 | public var id: UUID 14 | 15 | public let crags: [Crag] 16 | public let grades: [Grade] 17 | 18 | init(id: UUID = UUID(), crags: [Crag], grades: [Grade]) { 19 | self.id = id 20 | self.crags = crags 21 | self.grades = grades 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/FolderDomain/Sources/Entity/ReadAttemptDetail.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ReadAttemptDetail.swift 3 | // FolderDomain 4 | // 5 | // Created by soi on 3/20/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | public struct ReadAttemptDetail: Hashable, Equatable { 13 | public let status: AttemptResult 14 | public let video: AttemptVideo 15 | 16 | public init( 17 | status: AttemptResult, 18 | video: AttemptVideo 19 | ) { 20 | self.status = status 21 | self.video = video 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/FolderDomain/Sources/ValueObject/AttemptResult.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttemptResult.swift 3 | // FolderDomain 4 | // 5 | // Created by soi on 3/10/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public enum AttemptResult: String, CaseIterable { 12 | case complete = "SUCCESS" 13 | case fail = "FAILURE" 14 | 15 | public var name: String { 16 | switch self { 17 | case .complete: "완등" 18 | case .fail: "실패" 19 | } 20 | } 21 | 22 | func toggleResult() -> AttemptResult { 23 | switch self { 24 | case .complete: .fail 25 | case .fail: .complete 26 | } 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/FolderDomain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/ReportDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Report"), 6 | product: .framework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/ReportDomain/Sources/Repository/ReportRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ReportRepository.swift 3 | // ReportDomain 4 | // 5 | // Created by Junyoung on 3/23/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol ReportRepository { 12 | func fetch() async throws -> Report 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/ReportDomain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Story"), 6 | product: .framework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Sources/Entity/Story/Story.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Story.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct Story: Equatable { 12 | public let id: Int 13 | public let totalDurationMs: Int 14 | public let problems: [StoryProblem] 15 | 16 | public init( 17 | id: Int, 18 | totalDurationMs: Int, 19 | problems: [StoryProblem] 20 | ) { 21 | self.id = id 22 | self.totalDurationMs = totalDurationMs 23 | self.problems = problems 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Sources/Entity/Story/StoryAttempt.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryAttempt.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Shared 11 | 12 | // 클라이밍 시도 정보 13 | public struct StoryAttempt: Hashable, Equatable { 14 | public let id: Int 15 | public let status: AttemptStatus 16 | public let video: StoryVideo 17 | 18 | public init( 19 | id: Int, 20 | status: AttemptStatus, 21 | video: StoryVideo 22 | ) { 23 | self.id = id 24 | self.status = status 25 | self.video = video 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Sources/Entity/Story/StoryStamp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryStamp.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | // 클라이밍 스탬프 정보 12 | public struct StoryStamp: Hashable, Equatable { 13 | public let id: Int 14 | public let timeMs: Int 15 | 16 | public init( 17 | id: Int, 18 | timeMs: Int 19 | ) { 20 | self.id = id 21 | self.timeMs = timeMs 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Sources/Repository/DeleteStoryRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeleteStoryRepository.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/23/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol DeleteStoryRepository { 12 | func execute(_ storyId: Int) async throws 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Sources/Repository/EditMemoRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EditMemoRepository.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/22/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol EditMemoRepository { 12 | func execute(storyId: Int, memo: String) async throws 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Sources/Repository/ProblemRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ProblemRepository.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol ProblemRepository { 12 | func execute(storyId: Int, gradeId: Int?) async throws -> Int 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Sources/Repository/StoryRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryRepository.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol StoryRepository { 12 | func fetchSummary(_ storyId: Int) async throws -> StorySummary 13 | func fetchStory(_ storyId: Int) async throws -> Story 14 | 15 | func updateStatus(_ storyId: Int) async throws 16 | } 17 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/StoryDomain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/TokenDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Token"), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/TokenDomain/Sources/Entity/Token.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Token.swift 3 | // TokenDomain 4 | // 5 | // Created by Junyoung on 4/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct AuthToken: Sendable, Codable { 12 | public let accessToken: String 13 | public let refreshToken: String 14 | 15 | public init( 16 | accessToken: String, 17 | refreshToken: String 18 | ) { 19 | self.accessToken = accessToken 20 | self.refreshToken = refreshToken 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/TokenDomain/Sources/Repository/TokenRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TokenRepository.swift 3 | // TokenDomain 4 | // 5 | // Created by Junyoung on 4/26/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol TokenRepository { 12 | var accessToken: String? { get } 13 | var refreshToken: String? { get } 14 | var isAccessTokenExpired: Bool { get } 15 | var isRefreshTokenExpired: Bool { get } 16 | 17 | func refresh(_ refreshToken: String) async throws -> AuthToken 18 | func saveToken(_ token: AuthToken) 19 | } 20 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/TokenDomain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "Video"), 6 | product: .framework, 7 | dependencies: [ 8 | .Modules.shared(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Sources/Entity/Story/SavedGrade.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SavedGrade.swift 3 | // VideoDomain 4 | // 5 | // Created by soi on 3/29/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct SavedGrade: Codable, Identifiable, Equatable { 12 | public let id: Int 13 | public let name: String 14 | public let hexCode: String 15 | 16 | public init(id: Int, name: String, hexCode: String) { 17 | self.id = id 18 | self.name = name 19 | self.hexCode = hexCode 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Sources/Entity/Story/SavedStory.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SavedStory.swift 3 | // StoryDomain 4 | // 5 | // Created by Junyoung on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | public struct SavedStory: Equatable { 10 | public let storyId: Int 11 | public let problemId: Int 12 | 13 | public init( 14 | storyId: Int, 15 | problemId: Int 16 | ) { 17 | self.storyId = storyId 18 | self.problemId = problemId 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Sources/Entity/Video/VideoUploadModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // VideoUploadModel.swift 3 | // VideoDomain 4 | // 5 | // Created by saeng lin on 3/22/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct VideoUploadModel: Codable { 12 | public let storyId: Int 13 | public let problemId: Int 14 | 15 | public init(storyId: Int, problemId: Int) { 16 | self.storyId = storyId 17 | self.problemId = problemId 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Sources/Entity/Video/Videothumbnails.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Videothumbnails.swift 3 | // VideoDomain 4 | // 5 | // Created by saeng lin on 3/18/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public struct VideoThumbnails { 12 | public let preSignedUrl: String 13 | public let fileUrl: String 14 | 15 | public init( 16 | preSignedUrl: String, 17 | fileUrl: String 18 | ) { 19 | self.preSignedUrl = preSignedUrl 20 | self.fileUrl = fileUrl 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Sources/Repository/CaptureRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // VideoRepository.swift 3 | // VideoDomain 4 | // 5 | // Created by saeng lin on 3/3/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol VideoRepository: Sendable { 12 | 13 | /// 영상을 저장하는 인터페이스 14 | func saveVideo(fileURL: URL) async throws -> String 15 | 16 | /// 영상을 불러오는 인터페이스 17 | func readSavedVideo(fileName: String) async throws -> URL 18 | 19 | /// 영상을 업로드 하는 인터페이스 20 | func uploadVideoThumbnail( 21 | fileName: String, 22 | mimeType: String, 23 | value: Data 24 | ) async throws -> String 25 | } 26 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Sources/Repository/SaveAttemptRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SaveAttemptRepository.swift 3 | // VideoDomain 4 | // 5 | // Created by Junyoung on 3/29/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol SaveAttemptRepository { 12 | func register(_ request: AttemptRequest) async throws 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Sources/Repository/SaveStoryRepository.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SaveStoryRepository.swift 3 | // VideoDomain 4 | // 5 | // Created by Junyoung on 3/25/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol SaveStoryRepository { 12 | func save(_ request: StoryRequest) async throws -> SavedStory 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Domains/VideoDomain/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/AddAttemptsFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/AddAttemptsFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | import AddAttemptsFeature 4 | import AddAttemptsFeatureInterface 5 | 6 | @main 7 | struct AddAttemptsApp: App { 8 | var body: some Scene { 9 | WindowGroup { 10 | AddAttemptsView( 11 | store: .init( 12 | initialState: AddAttemptsFeature.State(), 13 | reducer: { 14 | AddAttemptsFeature() 15 | } 16 | ) 17 | ) 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/AddAttemptsFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/AddAttemptsFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "AddAttempts", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/AddAttemptsFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/AddAttemptsFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CalendarFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CalendarFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CalendarFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Calendar", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CalendarFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CalendarFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CompletionReportFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CompletionReportFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import CompletionReportFeature 3 | @main 4 | struct CompletionReportApp: App { 5 | 6 | var body: some Scene { 7 | WindowGroup { 8 | CompletionReportView( 9 | store: .init( 10 | initialState: CompletionReportFeature.State(storyId: 0), 11 | reducer: { 12 | CompletionReportFeature() 13 | } 14 | ) 15 | ) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CompletionReportFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CompletionReportFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "CompletionReport", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CompletionReportFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/CompletionReportFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/EditFeature/Demo/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/EditFeature/Demo/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/EditFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import EditFeature 3 | 4 | @main 5 | struct EditFeatureApp: App { 6 | var body: some Scene { 7 | WindowGroup { 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/EditFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/EditFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Edit", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/EditFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/EditFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import FolderFeature 3 | 4 | @main 5 | struct FolderDemoApp: App { 6 | var body: some Scene { 7 | WindowGroup { 8 | FolderView( 9 | store: .init( 10 | initialState: FolderFeature.State(), 11 | reducer: { 12 | FolderFeature() 13 | } 14 | ) 15 | ) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Folder", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog), 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderTabFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderTabFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderTabFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "FolderTab", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderTabFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/FolderTabFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/LoginFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/LoginFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import LoginFeature 3 | 4 | import ComposableArchitecture 5 | 6 | @main 7 | struct LoginApp: App { 8 | 9 | static let store = Store(initialState: LoginFeature.State()) { 10 | LoginFeature(useCase: <#any LoginUseCase#>) 11 | } 12 | 13 | var body: some Scene { 14 | WindowGroup { 15 | LoginView( 16 | on: nil, 17 | store: LoginApp.store 18 | ) 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/LoginFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/LoginFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Login", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog), 9 | .Library.KakaoSDKUser, 10 | ] 11 | ) 12 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/LoginFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/LoginFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/MainFeature/Demo/Resources/Sample.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Demo/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/MainFeature/Demo/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Demo/Sources/SampleApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SampleApp.swift 3 | // SampleApp 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct SampleApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | Text("hi") 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Interface/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/MainFeature/Interface/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // ProjectDescriptionHelpers 4 | // 5 | // Created by Junyoung Lee on 1/9/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .feature(name: "Main", type: .micro), 13 | product: .staticFramework, 14 | dependencies: [ 15 | .Core.core(.clog) 16 | ] 17 | ) 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/MainFeature/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/MainFeature/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Sources/MainFeatureAssembly.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainFeatureAssembly.swift 3 | // MainFeature 4 | // 5 | // Created by saeng lin on 3/3/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import Swinject 12 | 13 | public struct MainFeatureAssembly: Assembly { 14 | public init() {} 15 | 16 | public func assemble(container: Container) { 17 | 18 | // container.register(MainFeature.self) { resolver in 19 | // MainFeature() 20 | // } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Test/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/MainFeature/Test/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/MainFeature/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/MainFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/NickNameFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/NickNameFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | @main 4 | struct App: App { 5 | @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 6 | 7 | var body: some Scene { 8 | WindowGroup { 9 | 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/NickNameFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // NickNameFeature 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/NickNameFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "NickName", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/NickNameFeature/Sources/UIModel/NickNameViewState.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NickNameViewState.swift 3 | // NickNameFeature 4 | // 5 | // Created by Junyoung on 3/30/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public enum NickNameViewState { 12 | case create 13 | case update 14 | 15 | var buttonTitle: String { 16 | switch self { 17 | case .create: 18 | "다음" 19 | case .update: 20 | "저장하기" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/NickNameFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/NickNameFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/OnboardingFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/OnboardingFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | @main 4 | struct App: App { 5 | @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 6 | 7 | var body: some Scene { 8 | WindowGroup { 9 | 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/OnboardingFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/OnboardingFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Onboarding", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/OnboardingFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/OnboardingFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ProfileEditorFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ProfileEditorFeature/Demo/Sources/ProfileEditorApp.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import ProfileEditorFeature 3 | import ProfileEditorFeatureInterface 4 | 5 | @main 6 | struct ProfileEditorApp: App { 7 | var body: some Scene { 8 | WindowGroup { 9 | ProfileEditorView( 10 | store: .init( 11 | initialState: ProfileEditorFeature.State(), 12 | reducer: { 13 | ProfileEditorFeature() 14 | } 15 | ) 16 | ) 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ProfileEditorFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "ProfileEditor", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ProfileEditorFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ProfileEditorFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ReportFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ReportFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import ReportFeature 3 | 4 | @main 5 | struct ReportApp: App { 6 | var body: some Scene { 7 | WindowGroup { 8 | ReportView(store: .init(initialState: ReportFeature.State(), reducer: { 9 | ReportFeature() 10 | })) 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ReportFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ReportFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Report", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ReportFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/ReportFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/RootFeature/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/RootFeature/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/RootFeature/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/RootFeature/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/RootFeature/Sources/TestProject.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestProject.swift 3 | // TestProject 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct TestProject: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | Text("hi") 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/RootFeature/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/RootFeature/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/RootFeature/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Features/RootFeature/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/RootFeature/Tests/Sources/TestProject.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestProject.swift 3 | // TestProject 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct TestProject: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | Text("hi") 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SettingFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SettingFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | import SettingFeature 4 | import ComposableArchitecture 5 | 6 | @main 7 | struct SettingApp: App { 8 | 9 | var body: some Scene { 10 | WindowGroup { 11 | SettingView( 12 | store: .init( 13 | initialState: SettingFeature.State(), 14 | reducer: { 15 | SettingFeature() 16 | } 17 | ) 18 | ) 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SettingFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SettingFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Setting", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SettingFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SettingFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | @main 4 | struct App: App { 5 | @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 6 | 7 | var body: some Scene { 8 | WindowGroup { 9 | 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Interface/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Social", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Sources/Social/SocialFeature.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SocialFeature.swift 3 | // SocialFeature 4 | // 5 | // Created by 강현준 on 5/16/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import ComposableArchitecture 11 | 12 | @Reducer 13 | public struct SocialFeature { 14 | 15 | public struct State: Equatable { 16 | 17 | public init() { } 18 | 19 | } 20 | 21 | public enum Action { } 22 | 23 | public init() {} 24 | 25 | public var body: some ReducerOf { 26 | 27 | Reduce { state, action in 28 | return .none 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SocialFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SplashFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SplashFeature/Demo/Sources/App.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | @main 4 | struct App: App { 5 | @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 6 | 7 | var body: some Scene { 8 | WindowGroup { 9 | 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SplashFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Splash", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SplashFeature/Sources/UserDefault/SplashDataManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SplashDataManager.swift 3 | // SplashFeature 4 | // 5 | // Created by Junyoung on 3/24/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | enum SplashDataKey { 12 | static let onboardingCompleted = "hasCompletedOnboarding" 13 | } 14 | 15 | struct SplashDataManager { 16 | static var hasCompleted: Bool { 17 | get { 18 | UserDefaults.standard.bool(forKey: SplashDataKey.onboardingCompleted) 19 | } 20 | set { 21 | UserDefaults.standard.set(newValue, forKey: SplashDataKey.onboardingCompleted) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SplashFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/SplashFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/VideoFeature/Demo/Resources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/VideoFeature/Demo/Sources/SampleApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SampleApp.swift 3 | // VideoFeature 4 | // 5 | // Created by saeng lin on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | @main 12 | struct SampleApp: App { 13 | var body: some Scene { 14 | WindowGroup { 15 | Text("hi") 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/VideoFeature/Project.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "Video", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.clog) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/VideoFeature/Test/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Features/VideoFeature/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // Config 4 | // 5 | // Created by Junyoung on 1/9/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .module(name: "Shared"), 13 | product: .framework, 14 | dependencies: [ 15 | .Modules.thirdPartyLibrary(.clog) 16 | ] 17 | ) 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Modules/Shared/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Modules/Shared/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/ClLogDI.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ClogDI.swift 3 | // Clog 4 | // 5 | // Created by saeng lin on 2/27/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import Swinject 12 | 13 | public enum ClogDI: Sendable { 14 | 15 | public static let container = Container() 16 | 17 | /// Service 단위로 DI 주입 18 | /// - Parameter assemblies: 서비스 DI 객체 19 | public static func register(assemblies: [Assembly]) { 20 | assemblies.forEach { assembly in 21 | assembly.assemble(container: container) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/Entity/AttemptStatus.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttemptStatus.swift 3 | // Shared 4 | // 5 | // Created by Junyoung on 3/29/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | 10 | public enum AttemptStatus: String, Equatable { 11 | case success = "SUCCESS" 12 | case failure = "FAILURE" 13 | 14 | public init(value: String) { 15 | self = .init(rawValue: value) ?? .success 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/Extension/CMTime+.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CMTime+.swift 3 | // Shared 4 | // 5 | // Created by saeng lin on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import AVFoundation 11 | 12 | extension CMTime { 13 | public func formatTimeInterval() -> String { 14 | let totalSeconds = Int(CMTimeGetSeconds(self)) 15 | let hours = totalSeconds / 3600 16 | let minutes = (totalSeconds % 3600) / 60 17 | let seconds = totalSeconds % 60 18 | return String(format: "%02d:%02d:%02d", hours, minutes, seconds) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/Extension/Int+.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Int+.swift 3 | // Shared 4 | // 5 | // Created by Junyoung on 3/12/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public extension Int { 12 | var msToTimeString: String { 13 | /// 밀리초(ms)를 `HH:mm:ss` 포맷으로 변환 14 | let totalSeconds = self / 1000 15 | let hours = totalSeconds / 3600 16 | let minutes = (totalSeconds % 3600) / 60 17 | let seconds = totalSeconds % 60 18 | 19 | return String(format: "%02d:%02d:%02d", hours, minutes, seconds) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/Extension/Resolver+.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Resolver+.swift 3 | // Shared 4 | // 5 | // Created by soi on 4/9/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Swinject 10 | 11 | extension Resolver { 12 | public func resolveDependency() -> T { 13 | guard let dependency = resolve(T.self) else { 14 | fatalError("\(T.self) dependency could not be resolved") 15 | } 16 | return dependency 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/Extension/TimeInterval+.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TimeInterval+.swift 3 | // Shared 4 | // 5 | // Created by saeng lin on 3/15/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension TimeInterval { 12 | // 0.1로 단위로 된 TimeInterval 계산 13 | public func formatTimeInterval() -> String { 14 | let totalCentiseconds = Int(self) 15 | let seconds = (totalCentiseconds % 6000) / 100 16 | let minutes = (totalCentiseconds / 6000) % 60 17 | let hours = totalCentiseconds / 360000 18 | return String(format: "%02d:%02d:%02d", hours, minutes, seconds) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Sources/Notification+.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Notification+.swift 3 | // Shared 4 | // 5 | // Created by Junyoung on 4/26/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public extension Notification.Name { 12 | static let didKickOut = Notification.Name("didKickOut") 13 | } 14 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Modules/Shared/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Modules/Shared/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/Shared/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // ProjectDescriptionHelpers 4 | // 5 | // Created by Junyoung on 1/9/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .module(name: "ThirdPartyLibrary"), 13 | product: .framework, 14 | dependencies: [ 15 | .Library.then, 16 | .Library.swinject, 17 | .Library.tca 18 | ] 19 | ) 20 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Tests/Resources/Empty.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Tests/Resources/Empty.swift -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Modules/ThirdPartyLibrary/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Service/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Service/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Service/Sources/Services/Location/LocationError.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LocationError.swift 3 | // ClogService 4 | // 5 | // Created by soi on 4/8/25. 6 | // Copyright © 2025 Supershy. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public enum LocationError: Error { 12 | case noPermission 13 | case failedToFetch 14 | } 15 | -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Service/Tests/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/ClogService/Service/Tests/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/ClogService/Service/Tests/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | -------------------------------------------------------------------------------- /Clog/Projects/Umbrella/Project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Project.swift 3 | // Config 4 | // 5 | // Created by Junyoung on 1/19/25. 6 | // 7 | 8 | import ProjectDescription 9 | import ProjectDescriptionHelpers 10 | 11 | let project = Project.configure( 12 | moduleType: .module(name: "Umbrella"), 13 | product: .framework, 14 | dependencies: [ 15 | .Services.Clog.service 16 | ], 17 | hasTests: false 18 | ) 19 | -------------------------------------------------------------------------------- /Clog/Projects/Umbrella/Sources/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/Projects/Umbrella/Sources/.gitkeep -------------------------------------------------------------------------------- /Clog/Projects/Umbrella/Sources/Sample.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sample.swift 3 | // Sample 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | -------------------------------------------------------------------------------- /Clog/Tuist/Config.swift: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | 3 | let config = Config( 4 | ) 5 | -------------------------------------------------------------------------------- /Clog/Tuist/ProjectDescriptionHelpers/Template/ModuleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleType.swift 3 | // TestProjectManifests 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | import Foundation 9 | 10 | public enum FeatureType { 11 | case standard 12 | case micro 13 | } 14 | 15 | public enum ModuleType { 16 | case app 17 | case service(name: String) 18 | case feature(name: String, type: FeatureType) 19 | case module(name: String, useDemo: Bool = false) 20 | case domain(name: String) 21 | } 22 | -------------------------------------------------------------------------------- /Clog/Tuist/Templates/stencil/app.stencil: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | @main 4 | struct App: App { 5 | @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 6 | 7 | var body: some Scene { 8 | WindowGroup { 9 | 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Clog/Tuist/Templates/stencil/domainProject.stencil: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .domain(name: "{{ name }}"), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Modules.shared(.{{ service }}) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Tuist/Templates/stencil/featureProject.stencil: -------------------------------------------------------------------------------- 1 | import ProjectDescription 2 | import ProjectDescriptionHelpers 3 | 4 | let project = Project.configure( 5 | moduleType: .feature(name: "{{ name }}", type: .micro), 6 | product: .staticFramework, 7 | dependencies: [ 8 | .Core.core(.{{ service }}) 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /Clog/Tuist/Templates/stencil/sample.stencil: -------------------------------------------------------------------------------- 1 | import Foundation -------------------------------------------------------------------------------- /Clog/Workspace.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Workspace.swift 3 | // TestProjectManifests 4 | // 5 | // Created by Junyoung on 1/8/25. 6 | // 7 | 8 | @preconcurrency import ProjectDescription 9 | 10 | let workspace = Workspace( 11 | name: "Clog", 12 | projects: [ 13 | "Projects/**" 14 | ] 15 | ) 16 | 17 | -------------------------------------------------------------------------------- /Clog/ci_scripts/ci_post_clone.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | chmod +x tuist_install.sh 4 | 5 | ./tuist_install.sh 6 | -------------------------------------------------------------------------------- /Clog/ci_scripts/tuist_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | cd .. 4 | 5 | curl https://mise.run | sh 6 | export PATH="$HOME/.local/bin:$PATH" 7 | 8 | echo "❗️Current PATH: $PATH" 9 | 10 | echo "❗️mise version" 11 | mise --version 12 | echo "❗️mise install" 13 | mise install 14 | eval "$(mise activate bash --shims)" 15 | 16 | echo "❗️tuist install" 17 | tuist install 18 | echo "❗️tuist generate" 19 | tuist generate --no-open 20 | -------------------------------------------------------------------------------- /Clog/graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clog-depromeet/clog-iOS/1ae24b5c1bed0209f29885851ceb5407e31dd6d7/Clog/graph.png -------------------------------------------------------------------------------- /Clog/xcconfigs/Base/Projects/Project-Dev.xcconfig: -------------------------------------------------------------------------------- 1 | //SWIFT_ACTIVE_COMPILATION_CONDITIONS=DEV 2 | OTHER_SWIFT_FLAGS[config=Dev][sdk=*] = $(inherited) -DDev 3 | GCC_PREPROCESSOR_DEFINITIONS = Test=0 Dev=1 Prod=0 4 | DEBUG_INFORMATION_FORMAT = dwarf-with-dsym 5 | 6 | // Development 환경 설정 7 | PRODUCT_BUNDLE_IDENTIFIER = com.supershy.climbinglog.dev 8 | CODE_SIGN_IDENTITY = Apple Development 9 | PROVISIONING_PROFILE_SPECIFIER = match Development com.supershy.climbinglog.dev 10 | DEVELOPMENT_TEAM = SUMATJC294 11 | 12 | // Kakao Login 13 | KAKAO_NATIVE_APP_KEY = ec9724801f5d359302acb5f9ef75d51c 14 | BASE_URL = https:/$()/dev-api.climb-log.my 15 | -------------------------------------------------------------------------------- /Clog/xcconfigs/Base/Projects/Project-Prod.xcconfig: -------------------------------------------------------------------------------- 1 | //SWIFT_ACTIVE_COMPILATION_CONDITIONS=PROD 2 | OTHER_SWIFT_FLAGS[config=Prod][sdk=*] = $(inherited) -DProd 3 | GCC_PREPROCESSOR_DEFINITIONS = Test=0 Dev=1 Prod=0 4 | DEBUG_INFORMATION_FORMAT = dwarf-with-dsym 5 | 6 | // Development 환경 설정 7 | PRODUCT_BUNDLE_IDENTIFIER = com.supershy.climbinglog.product 8 | CODE_SIGN_IDENTITY = Apple Development 9 | PROVISIONING_PROFILE_SPECIFIER = match Development com.supershy.climbinglog.product 10 | DEVELOPMENT_TEAM = SUMATJC294 11 | 12 | // Kakao 13 | KAKAO_NATIVE_APP_KEY = f38aed2428e5cacc096f6f2b826404e9 14 | BASE_URL = https:/$()/api.climb-log.my 15 | -------------------------------------------------------------------------------- /Clog/xcconfigs/Base/Projects/Project-Test.xcconfig: -------------------------------------------------------------------------------- 1 | //SWIFT_ACTIVE_COMPILATION_CONDITIONS=TEST 2 | OTHER_SWIFT_FLAGS[config=TEST][sdk=*] = $(inherited) -DTest 3 | GCC_PREPROCESSOR_DEFINITIONS = Test=1 Develop=0 Production=0 4 | DEBUG_INFORMATION_FORMAT = dwarf-with-dsym 5 | -------------------------------------------------------------------------------- /Clog/xcconfigs/targets/iOS-Framework.xcconfig: -------------------------------------------------------------------------------- 1 | SWIFT_ACTIVE_COMPILATION_CONDITIONS[config=Dev]=Dev 2 | SWIFT_ACTIVE_COMPILATION_CONDITIONS[config=Prod]=Prod 3 | -------------------------------------------------------------------------------- /Clog/xcconfigs/targets/iOS-Tests.xcconfig: -------------------------------------------------------------------------------- 1 | SWIFT_ACTIVE_COMPILATION_CONDITIONS[config=Dev]=Dev 2 | SWIFT_ACTIVE_COMPILATION_CONDITIONS[config=Prod]=Prod 3 | -------------------------------------------------------------------------------- /fastlane/Matchfile: -------------------------------------------------------------------------------- 1 | git_url("https://github.com/clog-depromeet/clog-iOS-Certificates.git") 2 | 3 | storage_mode("git") 4 | 5 | type("development") 6 | 7 | app_identifier(["com.supershy.climbinglog.dev", "com.supershy.climbinglog.product"]) 8 | 9 | api_key_path("fastlane/api_key.json") 10 | -------------------------------------------------------------------------------- /fastlane/api_key.json: -------------------------------------------------------------------------------- 1 | { 2 | "key_id": "FP62BHNUQ7", 3 | "issuer_id": "1fb9fd6a-b761-4284-aec8-2e5c6a46bb26", 4 | "key": "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg838LSo2SyHXgAyWl1yV3IgJx2+uSjtu2Xai5DKMP90egCgYIKoZIzj0DAQehRANCAASBHlJqScJUQcuzUz7yLsNohz9J1bAkZNH5t0nFTR+q7HVXLqMuy7kiqlXc+mk0/hK0yUGozRQVHLQMWUmDMGeu\n-----END PRIVATE KEY-----", 5 | "in_house": false 6 | } 7 | --------------------------------------------------------------------------------