Skip to content

napzakmarket/Napzak-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

😺 NAPZAKMARKET-iOS

덕후들이 사랑하는 거래 공간 - 납작마켓

납작한 것만 취급하는 오타쿠 전용 중고거래 서비스

image 2719


👩🏻‍💻🧑🏻‍💻 Developers

조혜린 김한열 박어진 조호근

개발 환경 세팅
커스텀 탭바
검색/탐색
상세 페이지
장르 페이지

등록
설정
신고하기
탈퇴하기

마이페이지
마켓 보기
프로필 수정

카카오 로그인
애플 로그인
온보딩


😺 Project

1️⃣ 덕후 취향 반영 온보딩

  • 관심 장르를 직접 설정하고 취향에 딱 맞는 아이템들을 한눈에 확인해요
  • 개인 맞춤 상품 추천으로 취향 저격 아이템을 발견해보세요

2️⃣ 500여개 장르로 세분화된 상세 탐색

  • 불편한 검색은 이제 그만! 애니메이션, 게임 등 세분화된 장르로 더욱 편리하고 정확하게 상품을 찾아봐요
  • 검색, 필터 기능을 통해 원하는 장르 및 아이템을 쉽고 정확하게 탐색해보세요

3️⃣ 원하는 상품은 '구해요'에서 쉽게 찾고, 팔고 싶은 굿즈는 '팔아요'에서 빠르게 거래해요

  • (‘팔아요’와 ‘구해요’ 카테고리를 통해) 거래 목적에 맞게, 보다 편리하고 확실하게 거래해보세요

4️⃣ 덕후들의 거래 방식에 딱 맞는 등록 시스템!

  • 원하는 아이템을 구하기 위해 매일 검색하거나 찾아다니지 않아도 돼요!
  • 장르 설정부터 상품 상태 설정까지, 빠르고 간편한 거래가 가능해요
  • 가격 제시 버튼원하는 가격대 설정 기능으로 위시템을 구할 수 있어요

5️⃣ 나만의 덕질 마켓

  • 자신만의 독특한 스타일로 마켓의 개성을 드러낼 수 있어요
  • 관심 장르, 소개글, 프로필 이미지로 직접 커스텀하여 나만의 마켓을 꾸며보세요

🛠 Development Environment

iOS Swift Xcode

Purpose Version
SwiftUI 코드의 간결성과 직관성을 통해 빠르고 쉽게 사용자 인터페이스를 설계하고 유지보수가 가능 SwiftUI
Combine 퍼블리셔-서브스크라이버 모델을 통해 비동기 이벤트 스트림을 선언적으로 처리 Combine
Swift Concurrency 명확하고 안전한 비동기 흐름 관리를 통해 복잡한 비동기 로직의 가독성과 유지보수성 향상 Swift Concurrency
OSLog 구조화된 로깅을 지원하여 성능 저하 없이 효율적으로 로그 수집 및 분석 가능 OSLog
Moya 간결한 네트워크 요청과 구조화된 관리 방식으로 코드 가독성과 유지보수성 향상 Moya
Kingfisher 효율적인 이미지 다운로드 및 캐싱을 통해 네트워크 이미지 로딩 성능 향상 Kingfisher
KakaoOpenSDK 카카오 소셜 로그인을 위해 사용 KakaoOpenSDK
Lottie 애니메이션 데이터 처리를 위해 사용 Lottie

😺 Project Architecture

iOS 1차 과제 (2)

MVVM 패턴

SwiftUI의 선언형 UI 특성과 자연스럽게 맞물리는 MVVM(Model-View-ViewModel) 아키텍처를 채택하여 뷰와 비즈니스 로직을 명확히 분리했습니다.
이로 인해 코드의 재사용성과 테스트 용이성이 높아졌고, 뷰 상태 관리를 더욱 체계적으로 수행할 수 있었습니다.
또한, ViewModel을 통해 데이터 흐름을 일관되게 유지함으로써 유지보수성과 확장성을 고려한 구조를 구현하였습니다.


😺 Project Design

image image

😺 Code Convention

🔗 Code Convention

Naming:
- 타입: UpperCamelCase
- 변수/상수: lowerCamelCase
- 약어(URL/ID/API): 대문자

Structure:
- Protocol → extension으로 분리
- import: 내장 먼저, 서드파티는 한 줄 띄움
- 90자 초과시 줄바꿈

Image:
- icn_/btn_/img_ 접두어
- snake_case
- SVG 우선

self/강제 언래핑 지양, 긴 View는 extension으로 분리

😺 Foldering

📁 Project
├── 📁 Applacation
│   ├── 📁 Preview Content
│   ├── Napzakmarket_iOSApp.swift
├── 📁 Global
│   ├── 📁 Core
│   ├── 📁 Modifier
│   ├── 📁 Extensions
│   ├── 📁 Components
│   ├── 📁 Models
│   ├── 📁 Enums
│   ├── 📁 Literals
│   │   ├── StringLiterals.swift
│   │   ├── FonrLiterals.swift
│   │   └── ColorLiterals.swift
│   └── 📁 Resources
│       ├── 📁 Animation
│       ├── 📁 Fonts
│       └── Assets.xcassets
├── 📁 Network
│   ├── 📁 Base
│   ├── 📁 Auth
│   │   ├── 📁 DTO
│   │   │   ├── 📁 Request
│   │   │   └── 📁 Response
│   │   ├── AuthAPI.swift
│   │   └── AuthService.swift
│   ├── 📁 Genre
│   │   ├── 📁 DTO
│   │   │   ├── 📁 Request
│   │   │   └── 📁 Response
│   │   ├── GenreAPI.swift
│   │   └── GenreService.swift
│   ├── 📁 Interest
│   │   ├── 📁 DTO
│   │   │   ├── 📁 Request
│   │   │   └── 📁 Response
│   │   ├── InterestAPI.swift
│   │   └── InterestService.swift
│   ├── 📁 Store
│   │   ├── 📁 DTO
│   │   │   ├── 📁 Request
│   │   │   └── 📁 Response
│   │   ├── StoretAPI.swift
│   │   └── StoreService.swift
│   ├── 📁 Product
│   │   ├── 📁 DTO
│   │   │   ├── 📁 Request
│   │   │   └── 📁 Response
│   │   ├── ProductAPI.swift
│   │   └── ProductService.swift
│   ├── 📁 Report
│   │   ├── 📁 DTO
│   │   │   ├── 📁 Request
│   │   │   └── 📁 Response
│   │   ├── ReportAPI.swift
│   │   └── ReportService.swift
└── 📁 Presentation
    ├── 📁 Splash
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── SplashView.swift
    ├── 📁 Onboarding
    │    ├── 📁 Model
    │    ├── 📁 View
    │    │   └── OnboardingView.swift
    │    └── 📁 ViewModel
    │        └── OnboardingViewModel.swift
    ├── 📁 Home
    │    ├── 📁 Model
    │    ├── 📁 View
    │    │   └── HomeView.swift
    │    └── 📁 ViewModel
    │        └── HomeViewModel.swift
    ├── 📁 Search
    │    ├── 📁 Model
    │    ├── 📁 View
    │    │   └── SearchView.swift
    │    └── 📁 ViewModel
    │        └── SearchViewModel.swift
    ├── 📁 Register
    │    ├── 📁 Model
    │    ├── 📁 View
    │    │   └── RegisterView.swift
    │    └── 📁 ViewModel
    │        └── RegisterViewModel.swift
    ├── 📁 Detail
    │    ├── 📁 Model
    │    ├── 📁 View
    │    │   └── DetailView.swift
    │    └── 📁 ViewModel
    │        └── DetailViewModel.swift
    ├── 📁 Mypage
    │    ├── 📁 Model
    │    ├── 📁 View
    │    │   └── MypageView.swift
    │    └── 📁 ViewModel
    │        └── MypageViewModel.swift
    ├── 📁 Report
    │    ├── 📁 Model
    │    ├── 📁 View
    │    │   └── ReportView.swift
    │    └── 📁 ViewModel
    │        └── ReportViewModel.swift
    └── 📁 Tabbar
         ├── 📁 Model
         └── 📁 View
             └── TabbarView.swift

🔥 Trouble Shooting

🔗 Trouble Shooting

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages