Giter Club home page Giter Club logo

movielog's Introduction

Overview

image.jpg1 image.jpg2 image.jpg3



사용한 기술 스택

  • UiKit
  • Combine
  • Firebase
  • SnapKit
  • Then
  • DGCharts
  • FSCalendar
  • Toast



구현 기능

  • 계정 관련

    • 이메일 로그인, 애플 로그인, 로그아웃
  • 홈 화면

    • Firebase에서 영화 리뷰 가져오기
    • 해당 리뷰 클릭 시 자세히 보기
  • 영화 리뷰 작성

    • 영화 검색
    • 영화 정보 추가
    • 리뷰 등록
    • 리뷰 삭제
  • 박스오피스

    • 어제 날짜의 박스오피스 확인
    • 영화 별 댓글 기능 (추가예정)
  • 캘린더

    • 날짜 별 작성 리뷰 목록 확인
  • 차트

    • 일주일간 작성한 리뷰 확인



Screenshots

  • 로그인, 로그아웃
    • 이메일, 애플 로그인이 가능합니다.
    • 로그아웃이 가능합니다.
image.jpg1 image.jpg2



  • 회원가입
    • 이메일, 비밀번호, 비밀번호 확인이 전부 통과되어야만 회원가입 버튼이 작동합니다.
    • 보안상의 문제로 비밀번호를 입력했음에도 불구하고 캡쳐하니 아예 안뜨니 참고해주세요.
image.jpg4 image.jpg3 image.jpg2 image.jpg1



  • 홈 화면
    • Firebase를 통해 지금까지 작성한 리뷰들을 홈 화면에 불러옵니다.
    • UICollectionViewDiffableDataSource를 적용해 데이터의 변화에 유연하게 대응할 수 있습니다.



  • 영화 상세 화면
    • 작성한 리뷰를 상세하게 확인 할 수 있습니다.



  • 영화 검색 화면
    • 리뷰를 작성할 영화의 제목을 검색합니다.
    • 만약 영화가 존재하지 않는다면, 직접 영화 정보를 추가 할 수도 있습니다.
image.jpg1 image.jpg2 image.jpg3



  • 리뷰 작성 화면
    • 리뷰를 작성할 영화의 제목을 선택한 뒤 리뷰를 작성합니다.
    • 영화가 어땠는지, 어떤 점이 좋았는지, 상세 리뷰를 작성할 수 있습니다.
image.jpg1 image.jpg2 image.jpg3 image.jpg4



프로젝트 최적화를 위한 도전들

  • SnapKit 및 Then 라이브러리를 도입한 이유

    • 이전 앱에서 사용했던 기존의 Auto Layout 코드는 복잡하고 가독성이 낮아 유지보수에 어려움을 겪었고, 반복적인 코드 작성으로 인해 개발 생산성이 저하되었습니다.
    • 이번 앱에서 SnapKit을 사용하여 Auto Layout을 구현하고 Then을 사용하여 코드의 가독성을 높였으며, 이를 통해 코드의 재사용성을 향상시켰습니다.
  • UICollectionViewDiffableDataSource를 사용하게 된 이유

    • 데이터의 변화에 유연하게 대응할 수 있어서 도입하게 되었습니다.
    • 기존의 방식처럼 reloadData를 쓰면 애니메이션이 끊깁니다. DiffiableDataSource는 View를 다시 그릴 때 Snapshot의 변화를 스스로 파악하고, 애니메이션으로 나타내줌으로써 더 나은 UX가 가능합니다.
  • Firebase Auth를 이용해 로그인, 로그아웃 구현하게 된 이유

    • 영화 리뷰를 저장하기 위해 로그인, 로그아웃 기능이 필요했습니다. 혼자 개발을 해야했기에 Firebase Auth를 사용하여 사용자 인증을 관리하고 로그인 및 로그아웃 기능을 구현하는 것이 목표였습니다.
    • 따라서 이메일, Apple ID를 이용한 로그인, 로그아웃을 구현하게 되었습니다.
  • Firebase를 이용해 서버 구현하게 된 이유

    • 이전 앱에서는 CoreData, Realm을 통해 영화 리뷰를 저장했지만 앱을 삭제하면 기록이 날아가는 경험을 하게되었습니다.
    • Firebase와 같은 서버를 통해 영화 리뷰를 저장함으로써 앱을 삭제하고 다시 깔더라도 기록이 날아 가지 않도록 수정하게 되었습니다.
  • 클린 아키텍처 도입

    • 유지보수와 테스트를 쉽게 하기 위해 클린 아키텍처에 대해 공부하고 적용 중에 있습니다.

movielog's People

Contributors

kangmingyo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.