Skip to content

BCSDLab/KOIN_iOS

Repository files navigation

Koin - 한기대 학생들의 필수 앱 (KoreaTech IN)

Important

한국기술교육대학교의 학식, 주변 식당, 버스, 시간표, 공지사항 등 필수 정보를 제공하는
DAU 1,100, MAU 3,000명 이상 커뮤니티 서비스 앱으로, 재학생의 60% 이상이 사용하고 있습니다.

여러 직무의 팀원들과 각자 전문성을 살려 프로덕트를 개발하고 있습니다.
(BackEnd / FrontEnd / Android / iOS / Design / DA / PM / Security)


📕 Project Information

iOS Minimum Target Swift Version
iOS 16.0 Swift 5

⚙️ Tech Stack

🎨 UI

  • UIKit
    • iOS 기본 UI 프레임워크. 탭/네비게이션, 셀, 커스텀 전환 등 핵심 화면 구성에 사용.
  • Code-based AutoLayout
    • 스토리보드 미사용, 코드 제약 기반. 변경·리뷰·머지 용이, 환경별 레이아웃 제어 쉬움.
  • SnapKit
    • AutoLayout DSL로 제약을 간결하게 선언. 리스트/디테일/설정 화면 레이아웃 전반에 적용.

🏛️ 디자인 패턴

  • MVVM & Clean Architecture
    • UI(View) / 비즈니스 로직(ViewModel) / 데이터 계층(Model) 분리.
    • 의존성 역전을 통해 유지보수성과 테스트 용이성 확보.
    • Presentation, Domain, Data 영역으로 구분

📦 의존성 관리

  • CocoaPods
    • WebSocket-Stomp, Alamofire 등 서드파티 라이브러리 관리.

🧩 기타 ( Data / Reactive )

  • WebSocket + STOMP
    • 실시간 스트림(채팅 기능) 수신. 서버와 양방향 메시징 채널 유지.
  • Core Data
    • 오프라인 캐시/영속성. 학식/버스/공지 리스트 로컬 저장, 앱 재시작 시 빠른 부팅 지원 및 비로그인 지원
  • Combine
    • 비동기 스트림 & 네트워크 처리.
  • Kingfisher
    • 비동기 이미지 로딩 및 캐싱. 학식/공지 등 서버 이미지 리소스를 효율적으로 다운로드 & 재사용.
  • WebKit
    • 단순 웹뷰 표시뿐 아니라 JavaScript ↔ Swift 양방향 메시지 처리를 통해 이벤트를 보내고 받으며,
      학사 공지, 인증, 외부 시스템 연동 등 상호작용이 필요한 화면에 사용.

☀️ 주요 기능

버스 화면
───

실시간 버스 도착 및 운행 정보를 제공합니다.

분실물 화면
───

분실물을 등록하여 쉽게 찾을 수 있습니다.

학교 식단
───

오늘의 학식 메뉴를 간편하게 확인하세요.

식당 리뷰
───

학교 주변 식당의 리뷰와 평점을 공유합니다.

채팅 기능
───

학생들 간 실시간 소통을 지원합니다.

시간표 기능
───

내 강의 시간표를 편리하게 관리할 수 있습니다.

강제 업데이트
───

필수 업데이트 시 강제 업데이트를 안내합니다.

주변 식당
───

학교 주변 식당 메뉴와 위치를 제공합니다.

복덕방
───

자취방 및 원룸 정보를 공유합니다.

푸시 알림 & 딥링크
───

알림을 눌러 딥링크로 바로 이동합니다.

🗂️ Package Structure

Koin
├── Domain                          # 핵심 비즈니스 로직 계층
│   ├── Repository                  # 추상화된 저장소 인터페이스
│   ├── Model                       # 엔티티, 비즈니스 모델
│   └── UseCase                     # 도메인 규칙/유즈케이스
│
├── Data                            # 데이터 계층 (Infra)
│   ├── DTOs                        # 데이터 전송 객체
│   │   ├── Encodable
│   │   └── Decodable
│   ├── MockService                 # 테스트용 Mock 서비스
│   ├── Service                     # 네트워크/외부 API 연동
│   └── Repository                  # 실제 구현체 (Domain Repository 구현)
│
├── Presentation                    # 프레젠테이션 계층 (UI)
│   ├── View                        # UIKit View, ViewController
│   └── ViewModel                   # MVVM ViewModel
│
├── Resources                       # 리소스 모음
│   ├── Gif
│   ├── Assets
│   └── Fonts
│
├── Core                            # 공통 유틸리티 & 시스템 계층
│   ├── CoreData                    # Core Data 스택 및 관리 코드
│   ├── Workers                     # 싱글톤 패턴 Worker
│   ├── Extensions                  # Swift Extensions
│   ├── View                        # 공통 UI 컴포넌트
│   ├── Logger                      # 로깅 모듈
│   └── Protocol                    # 공용 프로토콜 정의
│
├── Apps                            # 엔트리포인트 (AppDelegate 등)
│   ├── AppDelegate.swift
│   ├── SceneDelegate.swift
│   └── NotificationHandler.swift
│
├── NotificationService             # 알림 확장 서비스
│
├── koinUITests                     # UI 테스트 모듈
│   ├── koinUITests.swift
│   └── koinUITestsLaunchTests.swift
│
├── Products                        # Xcode 기본 Products
├── Pods                            # CocoaPods 종속성
└── Frameworks                      # 외부 프레임워크

🧑‍🧑‍🧒‍🧒 Team Members

나훈 민경 은지 기정 성민
2024.3 ~ 2025.5 2024.4 ~ 2024.12 2025.3 ~ ing 2025.9 ~ ing 2025.9 ~ ing

Tip

BCSD 동아리 정보와 App 설치는 아래에서 확인할 수 있습니다.

📝 BCSD 블로그
🤖 Koin App(Android) 설치하기
🍎 Koin App(IOS) 설치하기
👉 Koin Web 바로가기

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages