├── .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 | | | |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
--------------------------------------------------------------------------------