Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
eed8450
feat: 탐색 지도에 카테고리별 핀 기능 추가 #9
Roy-wonji Mar 26, 2026
95d8126
feat: 탐색 지도 스팟 상세 정보 카드 및 컨트롤 UI 추가 #9
Roy-wonji Mar 26, 2026
9893139
feat: 프로필 알림 설정 기능 및 API 연동 구현 #14
Roy-wonji Mar 27, 2026
8fb63aa
feat: 알림 설정 도메인 로직 및 즐겨찾기 역 관리 개선 #14
Roy-wonji Mar 27, 2026
6523357
refactor: 프로필 모듈 구조 개선 및 알림 설정 UI 추가 #14
Roy-wonji Mar 27, 2026
3f8d881
feat: Place API 및 데이터 레이어 구현 #9
Roy-wonji Mar 27, 2026
69639bb
feat: Place 도메인 구현 및 로고 리소스 업데이트 #9
Roy-wonji Mar 27, 2026
b36aee9
feat: 탐색 상세 UI 개선 및 장소 도메인 연동 #9
Roy-wonji Mar 27, 2026
35c06e1
feat: 장소 검색 및 페이지네이션 구현 #9
Roy-wonji Mar 27, 2026
4b35c42
feat: 탐색 UI 및 페이지네이션 로직 개선 #9
Roy-wonji Mar 27, 2026
46c611c
feat: 탐색 리스트 뷰 및 이미지 표시 기능 구현 #9
Roy-wonji Mar 27, 2026
25fc771
refactor: 탐색 페이징 0-base 전환 및 정렬 로직 개선 #9
Roy-wonji Mar 27, 2026
e6d2b90
feat: 탐색 지도-리스트 화면 연동 및 위치 트리거 개선 #9
Roy-wonji Mar 27, 2026
8b7c99b
feat: 탐색 상세 성능 최적화 및 상태 관리 개선 #9
Roy-wonji Mar 27, 2026
06d96da
feat: 탐색 API 단순화 및 UI 개선 #9
Roy-wonji Mar 27, 2026
20885b9
feat: 현재위치 복귀 기능 개선 및 중복 auto-fit 방지 #9
Roy-wonji Mar 28, 2026
705aa7a
feat: 탐색 UI 개선 및 색상 체계 업데이트 #9
Roy-wonji Mar 28, 2026
0674ebb
feat: 스켈레톤 UI 컴포넌트화 및 제목 레이아웃 개선 #9
Roy-wonji Mar 28, 2026
4194f88
feat: ExploreDetail 화면 추가 및 네비게이션 연결 #15
Roy-wonji Mar 28, 2026
f32dc20
refactor: rename lat/lng to userLat/userLon 수정 #14
Roy-wonji Mar 28, 2026
9d9e607
feat: 카메라 및 위치 도메인 레이어 기능 추가 #15
Roy-wonji Mar 28, 2026
681e309
feat: 장소 기능을 위한 공용 유틸리티 및 디자인 에셋 추가 #15
Roy-wonji Mar 28, 2026
adfb58d
refactor: Explore 기능 아키텍처 개선 및 Detail 화면 강화 #15
Roy-wonji Mar 28, 2026
69fe0f5
refactor: Explore UI 레이아웃 최적화 및 성능 개선 #15
Roy-wonji Mar 28, 2026
122184c
feat: Place 도메인 아키텍처 강화 및 상세 기능 추가 #15
Roy-wonji Mar 28, 2026
6821045
feat: Explore 상세 화면 지도 연동 및 기능 강화 #15
Roy-wonji Mar 28, 2026
55a433b
feat: 탐색 기능 성능 최적화 및 UX 개선 #15
Roy-wonji Mar 28, 2026
d2e396d
feat: 앱 아이콘 업데이트 및 fastlane 배포 환경 구축 #15
Roy-wonji Mar 28, 2026
c7fab97
feat: update explore 랑 usecase 로직 개선 #15
Roy-wonji Mar 29, 2026
f2d6192
refactor: flatten place search API 과련 수정 #15
Roy-wonji Mar 29, 2026
6f53389
refactor: explore view 상세 및 스켈레톤 작업 #15
Roy-wonji Mar 29, 2026
5d9b4bf
feat: Google Places API 이미지 캐싱 최적화 설정 #15
Roy-wonji Mar 29, 2026
64b3567
feat: Web 모듈 추가 및 프로젝트 구성 #15
Roy-wonji Mar 29, 2026
8fbcb61
refactor: ProfileCoordinator 주석 수정 및 Web State Hashable 개선 315
Roy-wonji Mar 29, 2026
46bccf6
fix: 카테고리 탐색 뷰 개선 #15
Roy-wonji Mar 29, 2026
0750696
Merge pull request #16 from TimeSpotApp/feature/exploreDetail
Roy-wonji Mar 29, 2026
c9d5806
refactor: print문을 LogMacro로 교체하여 로깅 개선
Roy-wonji Mar 29, 2026
9e60e31
fix: LogMacro 사용법 수정
Roy-wonji Mar 29, 2026
e39f97a
feat: Add notification 및 routing 관련 수정 #17
Roy-wonji Mar 29, 2026
5cb114b
fix: 간격 수정 #16
Roy-wonji Mar 29, 2026
2068350
update: graph.png 이미지 업데이트
Roy-wonji Mar 29, 2026
2a53255
refactor: Update Place API 수정 #16
Roy-wonji Mar 30, 2026
5a6e420
remove: Remove debug logging from PlaceDTOModel mapper
Roy-wonji Mar 30, 2026
25efd33
feat: place/explore 관련 수정 #16
Roy-wonji Mar 30, 2026
55375fb
feat: Add utility 관련 데이터 추가 #16
Roy-wonji Mar 30, 2026
3d1402b
feat: 탐색 기능 경로 네비게이션 구현 #16
Roy-wonji Mar 30, 2026
c5c6030
feat: Route 화면 및 맵 위치 아이콘 추가 #16
Roy-wonji Mar 30, 2026
0195cfb
feat: 향상된 경로 탐색 및 업데이트된 앱 이미지 #16
Roy-wonji Mar 30, 2026
29c4d2a
feat: 향상된 경로 탐색 및 업데이트된 앱 이미지 #16
Roy-wonji Mar 30, 2026
cca79cd
feat: 외부 지도 연동 및 경로 로딩 UI 개선 #16
Roy-wonji Mar 30, 2026
3757df6
feat: 외부 지도 앱 연동 및 권한 설정 완료 #16
Roy-wonji Mar 30, 2026
fc373ff
feat: 비회원 모드 구현 - accessToken 없이 onBoarding 완료 #16
Roy-wonji Mar 30, 2026
910e998
remove: 비회원 모드 디버그 로그 제거 #16
Roy-wonji Mar 30, 2026
0ed5be1
feat: accessToken 체크 추가로 비회원 모드 강화 #16
Roy-wonji Mar 30, 2026
32d4ec3
feat: Keychain을 사용한 accessToken 체크로 비회원 모드 개선 #16
Roy-wonji Mar 30, 2026
df609d8
feat: 비회원 모드 역 조회 기능 개선 #16
Roy-wonji Mar 30, 2026
230c8e0
remove: 비회원 기본 데이터 폴백 로직 제거 #16
Roy-wonji Mar 30, 2026
63be0e8
fix: TrainStationFeature.State Hashable 컴파일 에러 해결 #16
Roy-wonji Mar 30, 2026
599a457
fix: StationRowModel 컴파일러 타입 체크 시간 초과 에러 해결 #16
Roy-wonji Mar 30, 2026
e1cbafb
fix: StationService allStation API 비회원 접근 허용 #16
Roy-wonji Mar 30, 2026
b33bbf1
feat: allStation API 동적 헤더 설정으로 회원/비회원 지원 #16
Roy-wonji Mar 30, 2026
3e8923c
feat: 포괄적인 게스트/회원 인증 상태 관리 구현 #16
Roy-wonji Mar 30, 2026
d45a2b1
feat:
Roy-wonji Mar 31, 2026
de68bbd
feat: add App Store metadat추가
Roy-wonji Mar 31, 2026
bc30741
feat: add auto camera fit trigger for map routes #16
Roy-wonji Mar 31, 2026
abcceda
feat: improve explore map filtering and marker fallback #16
Roy-wonji Mar 31, 2026
7d3c403
feat: 로그 제거
Roy-wonji Mar 31, 2026
e025731
feat: 탐색 상세 네비게이션 개선 및 경로 알림 구조 추가
Roy-wonji Mar 31, 2026
77bed2e
feat: add route notification 쪽 연동!
Roy-wonji Apr 1, 2026
4a5b94f
feat: implement journey tracking and route notifications #16
Roy-wonji Apr 1, 2026
7ad4f21
feat: 개선된 데이터 모델과 경로 기능으로 여정 추적 향상
Roy-wonji Apr 1, 2026
860929a
feat: Push 알림 처리 개선 및 경로 알림 UI 향상
Roy-wonji Apr 1, 2026
9e4d54a
feat: 푸시 알림 처리 개선 및 경로 알림 유효성 검증 강화
Roy-wonji Apr 1, 2026
4ad4076
feat: refactor route navigation and build process
Roy-wonji Apr 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ import ProjectDescription
public extension TargetDependency.SPM {
static let asyncMoya = TargetDependency.external(name: "AsyncMoya", condition: .none)
static let composableArchitecture = TargetDependency.external(name: "ComposableArchitecture", condition: .none)
static let kingfisher = TargetDependency.external(name: "Kingfisher", condition: .none)
static let tcaCoordinator = TargetDependency.external(name: "TCACoordinators", condition: .none)
static let weaveDI = TargetDependency.external(name: "WeaveDI", condition: .none)

static let googleSignIn = TargetDependency.external(name: "GoogleSignIn", condition: .none)
static let appAuth: TargetDependency = .external(name: "AppAuth")
static let FirebaseCrashlytics = TargetDependency.external(name: "FirebaseCrashlytics", condition: .none)
static let sdWebImage = TargetDependency.external(name: "SDWebImageSwiftUI", condition: .none)
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public extension ModulePath {
case Auth
case OnBoarding
case Profile
case Web


public static let name: String = "Presentation"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ extension String {
return Project.Environment.bundlePrefix
}

public static func appBuildVersion(buildVersion: String = "10") -> String {
public static func appBuildVersion(buildVersion: String = "18") -> String {
return buildVersion
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ extension Settings {
.setCurrentProjectVersion(.appBuildVersion())
.setCodeSignIdentity()
.setCodeSignStyle()
.setCodeSignAllowEntitlementsModification(true)
.setUserScriptSandboxing(false)
.setSwiftVersion("6.0")
.setVersioningSystem()
.setProvisioningProfileSpecifier("match Development \(Project.Environment.bundlePrefix)")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,21 @@ public extension SettingsDictionary {
"CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES": SettingValue(stringLiteral: stringValue)
]) { _, new in new }
}

func setCodeSignAllowEntitlementsModification(_ value: Bool = true) -> SettingsDictionary {
let stringValue = value ? "YES" : "NO"
return merging([
"CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION": SettingValue(stringLiteral: stringValue)
]) { _, new in new }
}

/// User Script Sandboxing을 비활성화 (entitlements 에러 해결)
func setUserScriptSandboxing(_ value: Bool = false) -> SettingsDictionary {
let stringValue = value ? "YES" : "NO"
return merging([
"ENABLE_USER_SCRIPT_SANDBOXING": SettingValue(stringLiteral: stringValue)
]) { _, new in new }
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,22 +118,22 @@ extension InfoPlistDictionary {
.string("${REVERSED_CLIENT_ID}")
])
]),
// 구글 지도
.dictionary([
"CFBundleURLName": .string("google-maps"),
"CFBundleURLSchemes": .array([
.string("googlemaps"),
.string("comgooglemaps")
])
]),
// 네이버 지도
.dictionary([
"CFBundleURLName": .string("naver-maps"),
"CFBundleURLSchemes": .array([
.string("nmap"),
.string("nmapmobile")
])
])
// 구글 지도 (제거 - 외부 앱 호출용이므로 불필요)
// .dictionary([
// "CFBundleURLName": .string("google-maps"),
// "CFBundleURLSchemes": .array([
// .string("googlemaps"),
// .string("comgooglemaps")
// ])
// ]),
// 네이버 지도 (제거 - 외부 앱 호출용이므로 불필요)
// .dictionary([
// "CFBundleURLName": .string("naver-maps"),
// "CFBundleURLSchemes": .array([
// .string("nmap"),
// .string("nmapmobile")
// ])
// ])
])
]
return self.merging(dict) { (_, new) in new }
Expand Down Expand Up @@ -240,4 +240,23 @@ extension InfoPlistDictionary {
func setNMFGovClientSecret(_ value: String) -> InfoPlistDictionary {
return self.merging(["NMFGovClientSecret": .string(value)]) { (_, new) in new }
}

// LSApplicationQueriesSchemes 설정 (다른 앱의 URL 스킴 호출을 위해 필요)
func setLSApplicationQueriesSchemes() -> InfoPlistDictionary {
let schemes = [
// 네이버 지도
"nmap",
"nmapmobile",
"navermap",
// 구글 지도
"googlemaps",
"comgooglemaps",
// 카카오맵
"kakaomap",
// 기본 지도들
"maps"
]

return self.merging(["LSApplicationQueriesSchemes": .array(schemes.map { .string($0) })]) { (_, new) in new }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public extension InfoPlist {
.setGIDClientID("${GOOGLE_CLIENT_ID}")
.setUILaunchScreens()
.setLocationPermissions()
.setLSApplicationQueriesSchemes()

)

Expand Down
3 changes: 2 additions & 1 deletion Projects/App/Project.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ let project = Project.makeAppModule(
scripts: [],
dependencies: [
.Presentation(implements: .Presentation),
.Data(implements: .Repository)
.Data(implements: .Repository),
.SPM.FirebaseCrashlytics
],
sources: ["Sources/**"],
resources: ["Resources/**", "FontAsset/**"],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "darklogo 1.png",
"filename" : "Group 1000003826.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand All @@ -13,7 +13,7 @@
"value" : "dark"
}
],
"filename" : "darklogo.png",
"filename" : "Group 1000003827.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
30 changes: 30 additions & 0 deletions Projects/App/Resources/GoogleService-Info2.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>AIzaSyCuEwad40yLs4BzISNiIGFemZTLBfPcMdU</string>
<key>GCM_SENDER_ID</key>
<string>42173256062</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>io.TimeSpot.co</string>
<key>PROJECT_ID</key>
<string>timespot-app</string>
<key>STORAGE_BUCKET</key>
<string>timespot-app.firebasestorage.app</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:42173256062:ios:078c44ec597bd69892a32f</string>
</dict>
</plist>
Binary file added Projects/App/Resources/splash.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading