Skip to content

Hi-lingual/Hilingual-iOS

Repository files navigation

브랜딩 썸네일

하이링구얼 Hilingual

프로젝트 기간: 2025.7.7 ~ing

영어 일기 작성을 통해 꾸준한 영어 루틴 형성을 돕는 iOS 애플리케이션입니다.
매일 제공되는 주제를 바탕으로 영어로 일기를 쓰고, 기록을 관리하며 작문 습관을 만들어갈 수 있습니다.


📌 주요 기능

11

👩‍💻 iOS 파트

성현주 신혜연 조영서 진소은
iOS Lead
스플래시 · 로그인/온보딩 · 단어장
iOS Developer
일기 작성 · 피드백 요청 로딩
iOS Developer
홈 · 캘린더
iOS Developer
일기 자세히 보기

🛠 기술 스택

영역 기술 비고
UI 프레임워크 UIKit 안정적이고 풍부한 레퍼런스, 실무 적합성
아키텍처 MVVM + Clean Architecture UI, 도메인, 데이터 계층 분리로 유지보수 용이
네트워킹 Moya 추상화된 API 구성, 테스트 용이성, 요청 관리 편의
비동기/반응형 Combine 데이터 흐름의 선언적 처리, 상태 바인딩 최적화
OCR 기능 VisionKit iOS 기본 OCR 지원으로 성능 및 접근성 확보
애니메이션 Lottie 감성적인 UI 표현, 디자이너 협업 효율, 벡터 기반 경량 애니메이션
이미지 처리 Kingfisher 이미지 캐싱 및 네트워크 병목 방지
로컬 저장소 UserDefaults 간단한 유저 설정 및 정보 유지
의존성 주입 DIContainer 모듈 간 결합도 최소화, 테스트 편의성 확보
패키지 관리 및 모듈화 SPM Swift Package Manager 기반 외부 라이브러리 관리 및 내부 모듈화 구성
버전 관리 Git, GitHub 브랜치 전략 기반 협업, PR 및 코드리뷰 활용
협업 도구 Figma, Notion 디자인 및 기능 흐름 시각화, 문서화 기반 협업


🔧 Project Architecture

아키텍쳐

📂 프로젝트 구조

📦 HilingualNetwork (SPM 패키지)
├── 📁 Sources
   └── 📁 HilingualNetwork
       ├── 📁 API          # API 정의 (TargetType 등)
       ├── 📁 DTO          # 데이터 전송 객체 (요청/응답 모델)
       ├── 📁 Error        # 네트워크 에러 처리 및 공통 에러 타입
       ├── 📁 Foundation   # 네트워크 기반 설정 (인터셉터, 공통 프로토콜 등)
       ├── 📁 Service      # 각 API에 대응하는 서비스 레이어
       └── 📁 Token        # 토큰 저장/갱신/관리 로직
├── 📄 Package.swift
└── 📄 Package.resolved
📦 HilingualData (SPM 패키지)
├── 📁 Sources
   └── 📁 HilingualData
       ├── 📁 Mapper       # DTO  Domain Entity 변환 로직
       ├── 📁 Repository   # Repository 구현체 (Interface 충족)
       └── 📁 Token        # Token 저장/불러오기 관련 구현 (ex. UserDefaults 기반 등)
├── 📄 Package.swift
└── 📄 Package.resolved
📦 HilingualDomain (SPM 패키지)
├── 📁 Sources
   └── 📁 HilingualDomain
       ├── 📁 Entity         # 순수 도메인 모델 (불변 데이터, 로직 포함 가능)
       ├── 📁 Interface
          └── 📁 Repository # 추상 Repository 프로토콜 (도메인 로직 독립성 확보)
       └── 📁 UseCase        # 유스케이스 계층 (비즈니스 로직 담당)
├── 📄 Package.swift
└── 📄 Package.resolved
📦 HilingualPresentation (SPM 패키지)
├── 📁 Sources
   └── 📁 Presentation
       ├── 📁 Common                  # 전역적으로 사용하는 공통 요소들
          ├── 📁 Base               # BaseViewController, BaseView 등 공통 베이스 클래스
          ├── 📁 Components         # 공통 UI 컴포넌트 (ex: 버튼, 토스트 등)
          ├── 📁 Extensions         # UIKit, Foundation 등 확장 기능
          ├── 📁 Factory            # 화면 생성 관련 Factory 객체들
          └── 📁 Resources          # 리소스 관련 정리
              ├── 📁 Font           # 커스텀 폰트 관리
              ├── 📁 Lottie         # Lottie 애니메이션 JSON 파일 관리
              └── 🖼️ Assets         # 이미지 에셋, 컬러셋 등
       ├── 📁 Utils                  # 유틸리티 클래스 모음
       ├── 📁 Community              # 커뮤니티 관련 화면
       ├── 📁 Diarydetail            # 일기 상세 화면
       ├── 📁 DiaryWriting           # 일기 작성 화면
       ├── 📁 Example                # 예제 테스트 화면 (샘플, 실험용)
       ├── 📁 Home                   # 홈 화면 관련 구성
       ├── 📁 Loading                # 로딩 화면
       ├── 📁 Login                  # 로그인 화면
       ├── 📁 MyPage                 # 마이페이지 화면
       ├── 📁 OnBoarding             # 온보딩 화면
       ├── 📁 Preparing              # 준비 중인 기능들
       ├── 📁 Splash                 # 스플래시 화면
       └── 📁 WordBook               # 단어장 기능
├── 📄 Package.swift
└── 📄 Package.resolved
📱 Hilingual (App Main Target)
├── 📁 App                             # 앱 진입점과 환경 설정 관련 모듈
   ├── 🧩 AppDelegate                # 앱 생명주기 진입 지점
   ├── 🧩 SceneDelegate              # 씬 생명주기 관리
   ├── 🧩 AppDIContainer            # DIContainer: 의존성 주입 시작점
   ├── 🛠️ LaunchScreen              # LaunchScreen.storyboard
   └── 📁 Config                     # 런타임 환경 및 앱 설정 관련 모음
       ├── ⚙️ Config                # 환경 enum 정의 (dev, prod 등)
       ├── 🧩 AppConfig             # 현재 앱의 설정값을 관리 (e.g. 환경별 분기)
       ├── 🧩 AppBaseURLProvider    # 네트워크 요청의 기본 URL 제공자
       └── 🖼️ AppIcon               # 앱 아이콘 관리 (dev/prod 분기 등)
├── 📦 Hilingual                      # 앱 바이너리
├── 📝 Info                          # Info.plist

📌 Convention

Code Style


Commit 태그

태그 설명
feat 새로운 기능 구현
style UI 및 스타일 관련 작업
fix 버그 및 오류 수정
docs 문서 수정 (README 등)
setting 설정 파일 및 환경 구성 변경
add 에셋/라이브러리 추가
refactor 코드 리팩토링 (기능 변경 없이 구조 개선)
chore 사소한 수정 및 유지보수 작업
hotfix 긴급 수정 (배포 또는 개발 중 발생한 치명적 이슈 해결)

Commit Message 규칙

  1. 소문자로 작성합니다.
  2. 한글로 작성합니다.
  3. 제목은 명령문 형태, 50자 이내로 작성합니다.
feat: #1 로그인 화면 UI 구현  
add: #3 온보딩 이미지 에셋 추가  
fix: #5 캘린더 날짜 선택 오류 수정  

☄️ Trouble Shooting

문제 해결 과정은 아래 Notion 페이지에 정리되어 있습니다.
🔗 Trouble Shooting 바로가기

About

하링구 아요링구얼임

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages