Skip to content

내 여정의 경유지들을 기록하다🧑‍🚀👩‍🚀👨‍🚀 - 위치기반 숏폼 플랫폼

Notifications You must be signed in to change notification settings

boostcampwm2023/iOS09-Layover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iOS09-Layover


프로젝트 소개

Layover는 5초에서 60초의 짧은 영상을 위치기반으로 기록하고 공유하는 플랫폼입니다.

유저들은 지구를 여행하는 여행자가 되어 자신의 여정을 간편하고 직관적인 방식으로 기록하고, 

다양한 장소들의 대한 영상을 다른 유저들과 공유하고, 감상할 수 있습니다.

어디서든 간편하게 Layover를 통해 방문의 순간, 기억을 지도에 기록하고, 다양한 경험을 나눌 수 있습니다. 

당신의 여정을 Layover에 쌓아가보세요!

문서

그라운드 룰 기획/디자인 템플릿 회의록 개발일지
⛳️ 그라운드 룰 🎨 디자인 🔭 템플릿 📝 회의록 🛠️ DevLog

팀원 소개

🍎 김인환 🍎 안유경 🍎 황지웅 🌐 박지환 🌐 백종인
@loinsir @anyukyung @chopmozzi @hw-ani @whipbaek
환1에요,,ㅎ 콩이에요,,ㅎ 웅이에요,,ㅎ 환2에요,,,,,,ㅎ 몰?루
Write Reasonable Code!
이유 있는 코드를 작성하기
🏊‍♂️ DEEP DIVE
함께 성장하기
재밌게 하기
꼼꼼한 코드리뷰
🐢 기본에 충실한
서드 파티에 의존하지 않기
Swift를 이용한 기술 도전 많이 하기
과정을 즐기기
열린 자세로 학습
영향을 주는 사람 되기 🎱

프로젝트 소개 및 주요 기능

기획 설명

영상 탐색 및 시청

홈에서 랜덤한 영상을 탐색하고, 원하는 영상을 골라 재생할 수 있습니다.

위치 기반 영상 탐색

지도에서 원하는 지역의 영상을 탐색하고, 원하는 영상을 골라 재생할 수 있습니다.

영상 편집 및 위치 기반 영상 업로드

현재 위치를 기반으로, 간단한 편집 기능과 함께 영상을 업로드 할 수 있습니다.

프로필

프로필에서 내가 업로드한 영상의 목록을 확인하고 재생할 수 있습니다.


핵심 기술

HLS

  • ABR(Adaptive Bitrate Streaming)를 통해 네트워크, CPU Capacity 상태에 따라 동적으로 화질을 변경하여 최적의 영상 품질을 제공합니다.
  • iOS에서 지원하는 유일한 스트리밍 프로토콜 입니다.

기술스택

🍎 iOS

🌐 BE


기술적 도전 (BE)

🎞 presigned URL 을 통한 업로드 구성

  • 서버 부하 감소 : Client -> Storage 직접 업로드, 서버의 부하 감소 및 업로드 속도 향상
  • 구현 단순화 : 단순히 URL을 통하여 업로드 함으로써 iOS, 서버 양쪽의 구현 단순화

image


🎬 VOD Station & Cloud Function 서비스를 활용한 인코딩 및 스트리밍

  • ABR 스트리밍을 위하여 다양한 화질로 인코딩 (SD/HD/FHD) 및 스트리밍
  • Serverless 서비스 Cloud Function 을 통한 인코딩 자동화 및 콜백 업데이트

image


🔐JWT를 이용한 인증

  • JSON Web Token 으로 사용자 인증 진행
  • Redis로 각 토큰의 whitelist/blacklist를 운영하여 JWT 보안 허점 보완

image


📜 Server Monitoring

  • 서버에서 로그 저장 및 Cloud Log Analytics 서비스를 활용한 로그 수집
  • Discord Bot 을 적극적으로 활용한 빠른 에러대처
  • cadvisor + prometheus + grfana 을 활용한 서버 모니터링

image

image



아키텍처

🍎 iOS

image

🌐 BE

image


개발 일지

🍎 iOS

제목 Topic
CleanSwift에 대하여 아키텍처
코드폭격기 팀에서 적용한 iOS CI CI/CD
앱에서 영상을 재생하기까지의 과정 AVFoundation
디자인 시스템 만들면서 기록하기 UI
AVPlayerLayer를 이용해 영상을 재생할 수 있는 PlayerView 구성 AVFoundation
네트워크 통신없이 테스트하기 - URLProtocol URLSession
영상 업로드 화면을 만들어보쟈 AVFoundation
제목은 좌충우돌 테스트코드 작성기로 하겠습니다. 그런데 Test Double을 곁들인… XCTest
MapView의 annotation selection 이슈 MapKit
테플 올리는거 그냥 과정 정리해보기 TestFlight
영상을 재생시키면서 생긴 문제 AVFoundation
UICollectionView로 무한 스크롤 만들기 UIKit

🌐 BE

제목 Topic
Tech Stack 선정 및 이유 아키텍처
카카오/애플 OAuth OAuth
HTTPS 설정 HTTPS
Custom Response 와 ts-jenum Response
NestJS + Jest 테스트코드 작성 Test
게시물 Pagination Pagination
HTTP Request Header에 대한 Pipe 구현하기 @Pipe
VOD Station이란? 설정방법 Video
클라이언트 업로드를 위한 presigned-URL 발급 Video
Serverless 서비스 Cloud Function을 활용한 자동화 Video
Jenkins Pipeline 을 활용한 CI/CD 대작전 CI/CD
NestJS Circular Dependency 문제.. NestJS
🎈DB에 이모지를 저장할 줄 몰랐지.. DB
log 남기기 대작전 log

더 많은 내용은?? -> Team 코드폭격기 Wiki

About

내 여정의 경유지들을 기록하다🧑‍🚀👩‍🚀👨‍🚀 - 위치기반 숏폼 플랫폼

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published