Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
52e699b
🚚build: 폴더 및 파일 μΆ”κ°€, 이동
devBambu Aug 19, 2026
29e7bc1
✨feat: MohaView 파일 생성 및 TabView μΆ”κ°€
devBambu Aug 19, 2026
61498b3
✨feat: Route ν”„λ‘œν† μ½œ 생성 및 κ΅¬ν˜„
devBambu Aug 19, 2026
937263f
✨feat: HomeRoute 생성
devBambu Aug 19, 2026
0b025db
✨feat: MainRouter 생성 및 기초 κ΅¬ν˜„
devBambu Aug 20, 2026
e2d73b9
✨feat: MainRouter ν”„λ‘œνΌν‹° μˆ˜μ •
devBambu Aug 20, 2026
69029b9
✨feat: Router ν”„λ‘œν† μ½œ μ •μ˜
devBambu Aug 20, 2026
c3056fe
✨feat: 탭별 Router 및 Route 생성, λ§ˆμ§€λ§‰ νƒ­ 이름 λ³€κ²½(MyPage -> Settings)
devBambu Aug 20, 2026
825958f
🚚build: Route, Router 폴더 뢄리
devBambu Aug 20, 2026
685adba
✨feat: MohaView ν”„λ‘œνΌν‹° μˆ˜μ •
devBambu Aug 20, 2026
9f6d910
✨feat: HomeNavigationStack 생성 및 기초 κ΅¬ν˜„
devBambu Aug 20, 2026
60bad05
✨feat: ReportNavigationStack 생성 및 기초 κ΅¬ν˜„
devBambu Aug 20, 2026
2002e61
✨feat: SettingsNavigationStack 생성 및 기초 κ΅¬ν˜„
devBambu Aug 20, 2026
f645af1
✨feat: TabView 각 NavigationStack μ—°κ²°
devBambu Aug 20, 2026
9bb31c1
✨feat: MainRouter environment 등둝
devBambu Aug 20, 2026
dfc2cdb
🩹chore: Router ν”„λ‘œν† μ½œ 넀이밍 μˆ˜μ • -> NavigationRouter
devBambu Aug 20, 2026
2667ab9
✨feat: μ•± μ§„μž… 메인뷰 λ³€κ²½
devBambu Aug 20, 2026
d434586
🐞fix: workflow yml 파일 μˆ˜μ •
devBambu Aug 20, 2026
813c0b5
✨feat: NavigationRouter ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜ νƒ€μž… μˆ˜μ •
devBambu Aug 20, 2026
60bd52c
✨feat: Route ν”„λ‘œν† μ½œ id 속성 및 hash ν•¨μˆ˜ μ‚­μ œ
devBambu Aug 20, 2026
008d723
✨feat: TabItem μ˜μ‘΄μ„± 뢄리
devBambu Aug 20, 2026
d22a9cd
🐞fix: selectedTab의 TabItem μ˜μ‘΄μ„± μ‚­μ œ
devBambu Aug 20, 2026
e480c50
Merge pull request #36 from devBambu/feature#2
devBambu Aug 20, 2026
3ba92f0
Update README.md
devBambu Aug 20, 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
9 changes: 5 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ jobs:
- name: Checkout
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
-destination 'generic/platform=iOS Simulator' \
CODE_SIGNING_ALLOWED=NO \
Comment on lines +18 to +25

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.

clean build
File renamed without changes.
47 changes: 47 additions & 0 deletions Moha/Moha/Sources/Features/MohaView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//
// MohaView.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/19/26.
//

import SwiftUI

struct MohaView: View {
@State private var router = MainRouter()

var body: some View {
TabView(selection: $router.selectedTab) {
HomeNavigationStack(router: router.homeRouter)
.tag(TabItem.home)
.tabItem {
Label("Home", systemImage: "house")
}

ReportNavigationStack(router: router.reportRouter)
.tag(TabItem.report)
.tabItem {
Label("Report", systemImage: "chart.xyaxis.line")
}

SettingsNavigationStack(router: router.settingsRouter)
.tag(TabItem.settings)
.tabItem {
Label("Settings", systemImage: "person")
}
}
.environment(router)
}
}

//MARK: Tab Item
enum TabItem {
case home
case report
case settings
}

//MARK: - MohaView Preview
#Preview {
MohaView()
}
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ struct MohaApp: App {

var body: some Scene {
WindowGroup {
ContentView()
MohaView()
}
.modelContainer(sharedModelContainer)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// HomeNavigationStack.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/21/26.
//

import SwiftUI

struct HomeNavigationStack: View {
@Bindable var router: HomeRouter

var body: some View {
NavigationStack(path: $router.path) {
Text("Home") //TODO: HomeView둜 μˆ˜μ • ν•„μš”
.navigationDestination(for: HomeRoute.self) { route in
destinationView(for: route)
}
}
}

@ViewBuilder
private func destinationView(for route: HomeRoute) -> some View {
switch route {
case .createTodo:
Text("Create")
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// ReportNavigationStack.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/21/26.
//

import SwiftUI

struct ReportNavigationStack: View {
@Bindable var router: ReportRouter

var body: some View {
NavigationStack(path: $router.path) {
Text("Report") //TODO: ReportView둜 μˆ˜μ • ν•„μš”
.navigationDestination(for: ReportRoute.self) { route in
destinationView(for: route)
}
}
}

@ViewBuilder
private func destinationView(for route: ReportRoute) -> some View {
switch route {
case .createTodo:
Text("Create")
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// SettingsNavigationStack.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/21/26.
//

import SwiftUI

struct SettingsNavigationStack: View {
@Bindable var router: SettingsRouter

var body: some View {
NavigationStack(path: $router.path) {
Text("Settings") //TODO: SettingsView둜 μˆ˜μ • ν•„μš”
.navigationDestination(for: SettingsRoute.self) { route in
destinationView(for: route)
}
}
}

@ViewBuilder
private func destinationView(for route: SettingsRoute) -> some View {
switch route {
case .createTodo:
Text("Create")
}
}
}
10 changes: 10 additions & 0 deletions Moha/Moha/Sources/Navigation/Route/HomeRoute.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//
// HomeRoute.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/20/26.
//

enum HomeRoute: Route {
case createTodo
}
10 changes: 10 additions & 0 deletions Moha/Moha/Sources/Navigation/Route/ReportRoute.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//
// ReportRoute.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/20/26.
//

enum ReportRoute: Route {
case createTodo
}
8 changes: 8 additions & 0 deletions Moha/Moha/Sources/Navigation/Route/Route.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
//
// Route.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/20/26.
//

protocol Route: Hashable { }
10 changes: 10 additions & 0 deletions Moha/Moha/Sources/Navigation/Route/SettingsRoute.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//
// SettingsRoute.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/20/26.
//

enum SettingsRoute: Route {
case createTodo
}
20 changes: 20 additions & 0 deletions Moha/Moha/Sources/Navigation/Router/MainRouter.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
//
// MainRouter.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/20/26.
//

import SwiftUI
import Combine

@Observable
final class MainRouter: ObservableObject {
var selectedTab = TabItem.home

let homeRouter = HomeRouter()
let reportRouter = ReportRouter()
let settingsRouter = SettingsRouter()


}
60 changes: 60 additions & 0 deletions Moha/Moha/Sources/Navigation/Router/NavigationRouter.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
//
// Router.swift
// Moha
//
// Created by λ³€μ˜ˆλ¦° on 8/20/26.
//

import SwiftUI

protocol NavigationRouter: AnyObject {
associatedtype Destination: Route

var path: NavigationPath { get set }
}

extension NavigationRouter {
func push(to route: Destination) {
path.append(route)
}

func pop() {
guard !path.isEmpty else { return }
path.removeLast()
}

func reset() {
path = NavigationPath()
}

func popTo(count: Int) {
guard count > 0, count <= path.count else { return }
path.removeLast(count)
}

func replace(with route: Destination) {
path = NavigationPath()
path.append(route)
}
}

@Observable
final class HomeRouter: NavigationRouter {
typealias Destination = HomeRoute

var path = NavigationPath()
}

@Observable
final class ReportRouter: NavigationRouter {
typealias Destination = ReportRoute

var path = NavigationPath()
}

@Observable
final class SettingsRouter: NavigationRouter {
typealias Destination = SettingsRoute

var path = NavigationPath()
}
30 changes: 28 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,28 @@
# Moha
To-do list with daily scrum
# λͺ¨ν•˜ (Moha)

> 였늘 뭐 ν•˜μ§€? κ³„νšν•˜κ³ , μ‹€ν–‰ν•˜κ³ , λŒμ•„λ³΄λŠ” ν•˜λ£¨.

**λͺ¨ν•˜(Moha)** λŠ” Daily Scrum의 흐름을 개인의 ν•˜λ£¨μ— μ μš©ν•œ iOS μ•±μž…λ‹ˆλ‹€.

λ‹¨μˆœνžˆ ν•  일을 κΈ°λ‘ν•˜λŠ” κ²ƒμ—μ„œ λλ‚˜μ§€ μ•Šκ³ ,
**κ³„νš β†’ μ‹€ν–‰ β†’ 회고**의 흐름을 톡해 ν•˜λ£¨λ₯Ό κ΄€λ¦¬ν•˜κ³  λŒμ•„λ³Ό 수 μžˆλ„λ‘ λ§Œλ“œλŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

## μ£Όμš” κΈ°λŠ₯

* ν•˜λ£¨ κ³„νš μž‘μ„± 및 관리
* κ³„νšλ³„ μ§„ν–‰ μƒνƒœ 기둝
* ν•˜λ£¨ 회고
* μ£Όκ°„ / μ›”κ°„ 리포트
* λ¦¬λ§ˆμΈλ“œ μ•Œλ¦Ό

## 기술 μŠ€νƒ

| Category | Technology |
| --- | --- |
| UI | SwiftUI |
| Architecture | MVI + Router Pattern |
| Persistence | SwiftData |

## Status

🚧 ν˜„μž¬ 개발 μ€‘μž…λ‹ˆλ‹€.
Loading