Skip to content

35기 AND SOPT 앱잼 납작마켓 iOS 레포지토리 입니다!! ^_^

Notifications You must be signed in to change notification settings

SOPT-all/35-APPJAM-iOS-NAPZAKMARKET

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

👽 NAPZAKMARKET-iOS

덕후들이 사랑하는 거래 공간

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

트위터 배경


👩🏻‍💻🧑🏻‍💻 Developers

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

탐색
상세 페이지

등록

마이페이지
마켓 보기
탭바

온보딩


👽 Project

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

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

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

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

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

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

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

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

5️⃣ 나만의 덕질 마켓

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

🛠 Development Environment

iOS Swift Xcode

Purpose Version
SwiftUI 코드의 간결성과 직관성을 통해 빠르고 쉽게 사용자 인터페이스를 설계하고 유지보수가 가능 SwiftUI
Moya 간결한 네트워크 요청과 구조화된 관리 방식으로 코드 가독성과 유지보수성 향상 Moya
Kingfisher 효율적인 이미지 다운로드 및 캐싱을 통해 네트워크 이미지 로딩 성능 향상 Kingfisher

👽 Project Architecture

iOS 1차 과제 (2)

SwiftUI와 MV 패턴: 단순함 속에서 생산성을 극대화하다

SwiftUI의 선언적 UI데이터 바인딩 시스템을 최대한 활용하기 위해 저희는 MV(Model-View) 패턴을 채택했습니다. 복잡한 MVVM 아키텍처를 배제하고 @State@Binding을 활용한 데이터와 UI 간의 자동 동기화를 통해 간결하고 효율적인 코드베이스를 유지합니다.

이 접근 방식은 불필요한 레이어를 제거하여 개발 속도를 극대화하는 동시에 단순함 속에서도 유지보수성확장성을 자연스럽게 확보하는 것을 도와줍니다. 특히 추가적인 ViewModel 레이어 없이도 SwiftUI만으로 효과적인 상태 관리를 구현할 수 있습니다.

👽 Project Design & Flow Chart

iOS 1차 과제 iOS 1차 과제 (1)

👽 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
│   ├── 📁 Modifier
│   ├── 📁 Extensions
│   ├── 📁 Components
│   ├── 📁 Literals
│   │   ├── StringLiterals.swift
│   │   ├── FonrLiterals.swift
│   └── 📁 Resources
│       ├── Font
│       └── Assets.xcassets
├── 📁 Network
│   ├── 📁 Base
│   └── 📁 Domain
│       ├── 📁 DTO
│       │   ├── 📁 Request
│       │   └── 📁 Response
│       ├── Domain1API.swift
│       └── Domain1Service.swift
└── 📁 Presentation
    ├── 📁 Splash
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── SplashView.swift
    ├── 📁 Onboarding
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── OnboardingView.swift
    ├── 📁 Home
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── HomeView.swift
    ├── 📁 Search
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── SearchView.swift
    ├── 📁 Register
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── RegisterView.swift
    ├── 📁 Detail
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── DetailView.swift
    ├── 📁 Mypage
    │    ├── 📁 Model
    │    └── 📁 View
    │        └── MypageView.swift
    └── 📁 Tabbar
         ├── 📁 Model
         └── 📁 View
             └── TabbarView.swift

🔥 Trouble Shooting

🔗 Trouble Shooting

About

35기 AND SOPT 앱잼 납작마켓 iOS 레포지토리 입니다!! ^_^

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages