Skip to content

[Chore] Update Readme.md - #38

Closed
devBambu wants to merge 24 commits into
mainfrom
develop
Closed

devBambu wants to merge 24 commits into
mainfrom
develop

Conversation

@devBambu

Copy link
Copy Markdown
Owner

🎫 관련 이슈 (Linked Issues)

Closes #37

🛠 작업 내용 (What I did)

  • Readme.md 파일 수정

💻 구현 상세 (Implementation Details)

  • Readme에 프로젝트 소개와 기술 스택 등 기본 정보를 추가하였습니다.

- destinationView 내부 임시 View 생성 코드 추가
- 프로젝트 경로 수정
- 시뮬레이터 수정
- 누락 기호 추가 ( ' \. ')
- any Route -> Destination 수정으로 인해 함수 동작 오류 방지
- 해당값이 없어도 enum은 Hashable 채택 가능
- Router에서의 associatedType을 제한하기 위해 Route 프로토콜은 삭제하지 않음
[FEAT] 메인 TabView 및 탭별 NavigationStack 연결
@devBambu devBambu added the chore 빌드 설정, 문서, 출시 준비 등 기타 작업 label Aug 20, 2026
@sourcery-ai

sourcery-ai Bot commented Aug 20, 2026 •

Copy link
Copy Markdown

Reviewer's Guide

이 PR은 SwiftUI 기반 탭 내비게이션 아키텍처(홈, 리포트, 설정을 위한 라우터와 라우트 포함)를 도입하고, 앱 엔트리 포인트를 새로운 메인 뷰에 연결하며, CI에서 올바른 프로젝트 경로와 코드 서명 없이 시뮬레이터 빌드를 수행하도록 Xcode 빌드 설정을 조정하고, README를 프로젝트 설명과 기술 스택으로 확장합니다.

File-Level Changes

Change Details Files
테스트 실행이나 코드 서명을 요구하지 않고 올바른 Xcode 프로젝트를 빌드하도록 CI 워크플로를 업데이트합니다.
  • xcodebuild -project 경로를 Moha/Moha.xcodeproj로 변경
  • CI 잡 단계 이름을 'Build & Test'에서 'Build'로 변경하고 clean test 호출 제거
  • 시뮬레이터 destination을 generic/platform=iOS Simulator로 조정
  • CODE_SIGNING_ALLOWED=NO 설정을 통해 코드 서명 비활성화
.github/workflows/ci.yml
SwiftUI 기반 메인 탭 뷰(MohaView)를 앱의 루트 UI로 도입하여, 공유 라우터를 통해 세 개의 탭을 관리합니다.
  • Home, Report, Settings 탭을 위한 TabView를 갖는 MohaView 추가, TabItem enum을 사용해 탭 정의
  • MainRouter를 @State로 주입하고 .environment를 통해 제공
  • 탭 식별자를 위한 TabItem enum 정의
  • MohaApp의 WindowGroup 루트 뷰를 ContentView에서 MohaView로 변경
  • MohaApp.swift를 Sources/MohaApp.swift 경로로 이동
Moha/Moha/Sources/MohaView.swift
Moha/Moha/Sources/MohaApp.swift
Home, Report, Settings 각각에 대해 전용 라우터와 라우트 enum으로 구동되는 내비게이션 스택 뷰를 추가합니다.
  • HomeRouter.path에 바인딩된 NavigationStack과 HomeRoute용 navigationDestination을 갖는 HomeNavigationStack 생성
  • ReportRouter 및 ReportRoute에 대해 동일한 패턴의 ReportNavigationStack 생성
  • SettingsRouter 및 SettingsRoute에 대해 동일한 패턴의 SettingsNavigationStack 생성
  • createTodo 라우트용 목적지 뷰를 placeholder Text로 스텁 처리
Moha/Moha/Sources/Navigation/NavigationStack/HomeNavigationStack.swift
Moha/Moha/Sources/Navigation/NavigationStack/ReportNavigationStack.swift
Moha/Moha/Sources/Navigation/NavigationStack/SettingsNavigationStack.swift
기능 전반에서 타입이 지정된 내비게이션 경로를 위해 라우터와 라우트 추상화를 정의합니다.
  • 내비게이션 목적지를 위한 Hashable을 확장하는 Route 프로토콜 도입
  • 각각 createTodo 케이스를 갖고 Route를 준수하는 HomeRoute, ReportRoute, SettingsRoute enum 추가
  • 연관 타입 Destination과 NavigationPath 프로퍼티를 갖는 NavigationRouter 프로토콜 생성
  • NavigationRouter 익스텐션에서 기본 내비게이션 연산(push, pop, reset, popTo, replace) 제공
  • 타입이 지정된 Destination을 사용하는 NavigationRouter를 준수하는 @observable 클래스 HomeRouter, ReportRouter, SettingsRouter 구현
Moha/Moha/Sources/Navigation/Route/Route.swift
Moha/Moha/Sources/Navigation/Route/HomeRoute.swift
Moha/Moha/Sources/Navigation/Route/ReportRoute.swift
Moha/Moha/Sources/Navigation/Route/SettingsRoute.swift
Moha/Moha/Sources/Navigation/Router/NavigationRouter.swift
탭 선택을 조율하고 메인 뷰에 기능별 라우터를 제공하는 MainRouter를 추가합니다.
  • 선택된 탭 상태를 보관하는 @observable final class로 MainRouter 구현
  • MainRouter에서 HomeRouter, ReportRouter, SettingsRouter 인스턴스를 생성 및 노출
Moha/Moha/Sources/Navigation/Router/MainRouter.swift
프로젝트 개요, 주요 기능, 기술 스택, 현재 상태를 한국어로 README에 확장합니다.
  • 최소한의 README를 Moha 앱 목적에 대한 상세한 한국어 설명으로 대체
  • 주요 기능 세트(계획, 상태 추적, 회고, 리포트, 리마인더)를 문서화
  • 기술 스택 테이블 추가(SwiftUI, MVI + Router 패턴, SwiftData)
  • 현재 개발 상태 언급
README.md

Assessment against linked issues

Issue Objective Addressed Explanation
https://github.com/devBambu/Moha/issues/37 초기 README 내용을 최신 프로젝트 소개 및 기본 정보(예: 기능, 기술 스택, 상태)를 포함하도록 업데이트합니다. ✅

Possibly linked issues

  • #37: PR에서 메인 TabView, 라우팅, Home 기본 진입점을 추가하여 이슈의 메인 탭 요구 사항을 충족합니다.

Tips and commands

Interacting with Sourcery

  • 새 리뷰 트리거: 풀 리퀘스트에 @sourcery-ai review 라고 댓글을 남깁니다.
  • 논의 이어가기: Sourcery의 리뷰 코멘트에 직접 답글을 남겨 계속 논의합니다.
  • 리뷰 코멘트로부터 GitHub 이슈 생성: 리뷰 코멘트에 답글을 남겨 해당 코멘트로부터 이슈를 생성해 달라고 요청합니다. 또는 리뷰 코멘트에 @sourcery-ai issue 라고 답글을 남겨 이슈를 생성할 수도 있습니다.
  • 풀 리퀘스트 제목 생성: 풀 리퀘스트 제목 어디에나 @sourcery-ai 를 적어 언제든지 제목을 생성할 수 있습니다. 또는 풀 리퀘스트에 @sourcery-ai title 이라고 댓글을 남겨 제목을 (재)생성할 수 있습니다.
  • 풀 리퀘스트 요약 생성: 풀 리퀘스트 본문 어디에나 @sourcery-ai summary 를 적어 원하는 위치에 PR 요약을 언제든지 생성할 수 있습니다. 또는 풀 리퀘스트에 @sourcery-ai summary 라고 댓글을 남겨 요약을 (재)생성할 수 있습니다.
  • Reviewer's guide 생성: 풀 리퀘스트에 @sourcery-ai guide 라고 댓글을 남겨 reviewer's guide를 언제든지 (재)생성할 수 있습니다.
  • 모든 Sourcery 코멘트 해결 처리: 풀 리퀘스트에 @sourcery-ai resolve 라고 댓글을 남겨 모든 Sourcery 코멘트를 해결된 것으로 표시합니다. 이미 모든 코멘트를 반영했고 더 이상 보고 싶지 않을 때 유용합니다.
  • 모든 Sourcery 리뷰 기각: 풀 리퀘스트에 @sourcery-ai dismiss 라고 댓글을 남겨 기존 Sourcery 리뷰를 모두 기각합니다. 새 리뷰로 깔끔하게 다시 시작하고 싶을 때 특히 유용합니다. 새 리뷰를 트리거하려면 @sourcery-ai review 댓글을 남기는 것을 잊지 마세요!

Customizing Your Experience

대시보드에 접속하여:

  • Sourcery가 생성하는 풀 리퀘스트 요약, reviewer's guide 등 리뷰 기능을 활성화/비활성화합니다.
  • 리뷰 언어를 변경합니다.
  • 사용자 정의 리뷰 지침을 추가·삭제·수정합니다.
  • 기타 리뷰 설정을 조정합니다.

Getting Help

Original review guide in English

Reviewer's Guide

This PR introduces a SwiftUI-based tabbed navigation architecture (with routers and routes for Home, Report, and Settings), wires the app entry point to the new main view, adjusts the CI Xcode build configuration for the correct project path and non-code-signing simulator builds, and expands the README with project description and tech stack.

File-Level Changes

Change Details Files
Update CI workflow to build the correct Xcode project without running tests or requiring code signing.
  • Change xcodebuild -project path to Moha/Moha.xcodeproj
  • Rename CI job step from 'Build & Test' to 'Build' and remove clean test invocation
  • Adjust simulator destination to generic/platform=iOS Simulator
  • Disable code signing via CODE_SIGNING_ALLOWED=NO
.github/workflows/ci.yml
Introduce a main SwiftUI tab view (MohaView) as the app’s root UI, managing three tabs via a shared router.
  • Add MohaView with TabView for Home, Report, and Settings tabs using TabItem enum
  • Inject MainRouter as @State and provide it via .environment
  • Define TabItem enum for tab identifiers
  • Change MohaApp’s WindowGroup root view from ContentView to MohaView
  • Relocate MohaApp.swift into Sources/MohaApp.swift path
Moha/Moha/Sources/MohaView.swift
Moha/Moha/Sources/MohaApp.swift
Add navigation stack views for Home, Report, and Settings, each driven by dedicated routers and route enums.
  • Create HomeNavigationStack with NavigationStack bound to HomeRouter.path and navigationDestination for HomeRoute
  • Create ReportNavigationStack similarly for ReportRouter and ReportRoute
  • Create SettingsNavigationStack similarly for SettingsRouter and SettingsRoute
  • Stub destination views with placeholder Text for createTodo routes
Moha/Moha/Sources/Navigation/NavigationStack/HomeNavigationStack.swift
Moha/Moha/Sources/Navigation/NavigationStack/ReportNavigationStack.swift
Moha/Moha/Sources/Navigation/NavigationStack/SettingsNavigationStack.swift
Define a router and route abstraction for typed navigation paths across features.
  • Introduce Route protocol extending Hashable for navigation destinations
  • Add HomeRoute, ReportRoute, and SettingsRoute enums each conforming to Route with a createTodo case
  • Create NavigationRouter protocol with associated Destination and a NavigationPath property
  • Provide default navigation operations (push, pop, reset, popTo, replace) in a NavigationRouter extension
  • Implement HomeRouter, ReportRouter, and SettingsRouter as @observable classes conforming to NavigationRouter with typed Destination
Moha/Moha/Sources/Navigation/Route/Route.swift
Moha/Moha/Sources/Navigation/Route/HomeRoute.swift
Moha/Moha/Sources/Navigation/Route/ReportRoute.swift
Moha/Moha/Sources/Navigation/Route/SettingsRoute.swift
Moha/Moha/Sources/Navigation/Router/NavigationRouter.swift
Add a MainRouter to coordinate tab selection and provide feature routers to the main view.
  • Implement MainRouter as an @observable final class holding selectedTab state
  • Instantiate and expose HomeRouter, ReportRouter, and SettingsRouter instances from MainRouter
Moha/Moha/Sources/Navigation/Router/MainRouter.swift
Expand README with project overview, key features, tech stack, and current status in Korean.
  • Replace minimal README with detailed Korean description of Moha app’s purpose
  • Document main feature set (planning, status tracking, retrospectives, reports, reminders)
  • Add technology stack table (SwiftUI, MVI + Router Pattern, SwiftData)
  • Mention current development status
README.md

Assessment against linked issues

Issue Objective Addressed Explanation
https://github.com/devBambu/Moha/issues/37 Update the initial README contents to include an up-to-date project introduction and basic information (e.g., features, tech stack, status). ✅

Possibly linked issues

  • #37: PR adds main TabView, routing, and Home default entry, fulfilling the issue’s main tab requirements.

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@devBambu devBambu closed this Aug 20, 2026

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue, and left some high level feedback:

  • MainRouter가 @observable과 ObservableObject로 모두 선언되어 있습니다. 하나의 관찰 메커니즘만 사용하고, 그 선택에 맞게 환경 주입 방식(예: environment vs environmentObject)을 정렬하는 것을 고려해 주세요.
  • TabView의 selection 바인딩은 Hashable 타입을 기대합니다. 암시적인 합성에 의존하기보다는 TabItem이 Hashable을 준수하도록 명시적으로 선언하는 것이 더 명확하고 안전합니다.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- MainRouter가 @Observable과 ObservableObject로 모두 선언되어 있습니다. 하나의 관찰 메커니즘만 사용하고, 그 선택에 맞게 환경 주입 방식(예: environment vs environmentObject)을 정렬하는 것을 고려해 주세요.
- TabView의 selection 바인딩은 Hashable 타입을 기대합니다. 암시적인 합성에 의존하기보다는 TabItem이 Hashable을 준수하도록 명시적으로 선언하는 것이 더 명확하고 안전합니다.

## Individual Comments

### Comment 1
<location path=".github/workflows/ci.yml" line_range="18-25" />
<code_context>
         uses: actions/checkout@v4

-      - name: Build & Test
+      - name: Build
         run: |
           xcodebuild \
-            -project Moha.xcodeproj \
+            -project Moha/Moha.xcodeproj \
             -scheme Moha \
             -sdk iphonesimulator \
-            -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.5'
-            clean test
\ No newline at end of file
+            -destination 'generic/platform=iOS Simulator' \
+            CODE_SIGNING_ALLOWED=NO \
+            clean build
</code_context>
<issue_to_address>
**issue (testing):** CI no longer runs tests; only a build is performed now

업데이트된 워크플로가 이제 `clean test` 대신 `clean build`를 실행하고 있어서, 단위 테스트가 CI에서 더 이상 수행되지 않습니다. 이것이 의도된 변경이 아니라면, 테스트가 아무런 알림 없이 중단되게 됩니다. 빌드와 테스트를 분리하려는 의도였다면, CI 테스트 커버리지를 유지할 수 있도록 별도의 테스트 잡/단계를 추가해 주세요.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
저를 더 유용하게 만들어 주세요! 각 코멘트에 👍 또는 👎를 눌러 주시면, 그 피드백을 활용해 리뷰 품질을 개선하겠습니다.
Original comment in English

Hey - I've found 1 issue, and left some high level feedback:

  • MainRouter is declared as both @observable and ObservableObject; consider using a single observation mechanism and aligning the environment injection (e.g., environment vs environmentObject) with that choice.
  • TabView’s selection binding expects a Hashable type; it would be clearer and safer to explicitly declare TabItem as conforming to Hashable rather than relying on implicit synthesis.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- MainRouter is declared as both @Observable and ObservableObject; consider using a single observation mechanism and aligning the environment injection (e.g., environment vs environmentObject) with that choice.
- TabView’s selection binding expects a Hashable type; it would be clearer and safer to explicitly declare TabItem as conforming to Hashable rather than relying on implicit synthesis.

## Individual Comments

### Comment 1
<location path=".github/workflows/ci.yml" line_range="18-25" />
<code_context>
         uses: actions/checkout@v4

-      - name: Build & Test
+      - name: Build
         run: |
           xcodebuild \
-            -project Moha.xcodeproj \
+            -project Moha/Moha.xcodeproj \
             -scheme Moha \
             -sdk iphonesimulator \
-            -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.5'
-            clean test
\ No newline at end of file
+            -destination 'generic/platform=iOS Simulator' \
+            CODE_SIGNING_ALLOWED=NO \
+            clean build
</code_context>
<issue_to_address>
**issue (testing):** CI no longer runs tests; only a build is performed now

The updated workflow now runs `clean build` instead of `clean test`, so unit tests are no longer executed in CI. If this wasn’t intentional, tests will silently stop running. If you meant to separate build and test, please add a dedicated test job/step to keep CI test coverage.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread .github/workflows/ci.yml
Comment on lines +18 to +25
- name: Build
run: |
xcodebuild \
-project Moha.xcodeproj \
-project Moha/Moha.xcodeproj \
-scheme Moha \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 15,OS=17.5'
clean test No newline at end of file
-destination 'generic/platform=iOS Simulator' \
CODE_SIGNING_ALLOWED=NO \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (testing): CI no longer runs tests; only a build is performed now

업데이트된 워크플로가 이제 clean test 대신 clean build를 실행하고 있어서, 단위 테스트가 CI에서 더 이상 수행되지 않습니다. 이것이 의도된 변경이 아니라면, 테스트가 아무런 알림 없이 중단되게 됩니다. 빌드와 테스트를 분리하려는 의도였다면, CI 테스트 커버리지를 유지할 수 있도록 별도의 테스트 잡/단계를 추가해 주세요.

Original comment in English

issue (testing): CI no longer runs tests; only a build is performed now

The updated workflow now runs clean build instead of clean test, so unit tests are no longer executed in CI. If this wasn’t intentional, tests will silently stop running. If you meant to separate build and test, please add a dedicated test job/step to keep CI test coverage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore 빌드 설정, 문서, 출시 준비 등 기타 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant