Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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 17.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 영역으로 구분

📦 의존성 관리

  • SPM
    • Alamofire, Firebase 등 서드파티 라이브러리 관리.

🧩 기타 ( 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
│ ├── Lottie
│ ├── Assets
│ └── Fonts
│
├── Core # 공통 유틸리티 & 시스템 계층
│ ├── DesignSystem # 디자인 시스템
│ ├── 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
└── Frameworks # 외부 프레임워크

🧑‍🧑‍🧒‍🧒 Team Members

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

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

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /