Git Product home page Git Product logo

filmboard's Introduction

this was image

Filmboard

Movie App with MVVM, RxSwift, SnapKit

this was image this was image this was image


Getting started

Because of Security reason, Keys.swift is not included

  1. Get API Key from The Movie DB API
  2. Create Keys.swift in Domain Folder: /MovieApp/Domain/Service/Keys.swift.
  3. Copy this code and put your APIKey:
let APIKey = "your key here"

Design

Inspired by Movie Streaming App(figma community) and iTunes Store

API

Requirements

  • iOS 15.0+
  • Swift 5
  • Cocoapods

Libraries

  • SnapKit
  • Then
  • RxSwift
  • RxCocoa
  • RxDataSources
  • Cosmos

filmboard's People

Contributors

aakifnadeem avatar choiysapple avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

jqhxx

filmboard's Issues

[refactor] Improve caching

  1. Caching feature is only supported to Image. Need to support API Caching
    Proceed after API refactoring (Not easy to develop API Caching because API code is mostly static function)

  2. Need to invalidation of cache by time

  • Add API Caching
  • Invalidating old cache data by time

[Fix] ChartView category change is not working correctly

Describe

When new category is selected from UIMenu, Chart Table View should be reloaded immediately. But It doesn't reload until manual refresh

To Reproduce

  1. Go to Chart Tab
  2. Select different category from UIMenu

Expected behavior

Chart Table should reload immediately when UIMenu selected

Screenshots

this was image

Device: iPhone 12 mini
OS: iOS 16.1

[Fix] ChartView list is not appending

Describe

In Chart View:

  • List should appended when scroll reach to bottom

These two function is not working

To Reproduce

  1. Go to 'Chart' Tab
  2. Scroll to bottom

Expected behavior

  • When list scrolled to bottom: new contents are appended to list

Additional context

This issue created after fixing issue #58

[refactor] Fix force decoding API response, Separate API response model and Model for View

1. Force decoding

Need to fix forced unwrapping when decoding API response:

// func requestData(contentId: Int)
let response = try! JSONDecoder().decode(MovieDetail.self, from: data)

There's too many try! code in project. Need to fix

2. Model seperation

This project is now using API response model for view.
Need to use different model for view and separate dependency between View <-> API

Add Issue Convention & template

Set convention and template for Issue PR (Title & description)
Title convention will be written in description template as comment.

  • Issue template
  • PR template

[Fix] Invalid UITableViewCell color at CreditViewController

Describe

Background color of cells at CreditView is wrong

To Reproduce

  • Go to Credit Tab
  • Always happens

Expected behavior

Background color should be dark color as usual

Screenshots

this was image

Device: iPhone 12 mini
OS: iOS 16.1

Additional context

  • This issue produces after PR #56
  • Probably replacing UITableViewCell to CreditTableView cause this issue

[Fix] Refresh Control animation flickering

Describe

  • Animation is flickering and scroll seems not smooth

To Reproduce

Steps to reproduce the behavior:

  1. Go to Chart
  2. Swipe down to activate refresh control
  3. See error

Expected behavior

Refresh control need to be animate successfully

Additional context

Issue created & developed after fixing #65

[Feat] Scroll to top when Chart category changed

Description

Current Chart list is not changing scroll location

Benefit

Better User Experience. (User need to see list from first when they change category)

Additional context

Current version has diffrent action by number of rows

  • numberOfRows <= 20 Scroll location not changes
  • numberOfRows > 20 Scrolled to first row but not top (Navigation title is not presented as large title)

TO-DO

Required

  • DetailView Add trailer collection view
  • DetailView Add cast collection view
  • ChartView DiscoverView Infinite scroll
  • ChartView DiscoverView scroll up to refresh
  • CreditView Dev info, API, Design reference

Optional

  • change App Name: Filmboard
  • README.md Change App Icon into Rounded corner version
  • Use Alamofire

[Doc] Change README image source

Describe

Contents of REAME example images contains UI issues that already fixed

Expected behavior

REAME Example images should be replaced with screenshots taken after ver 0.1.0

Edit README.md

Things to write

  • Installation guide
  • Sample Screenshot
  • Used APIs
  • Used Pods
  • Architecture (Continue after all refactoring works)

[refactor] remove Constant.swift

Constant.swift

import Foundation

struct Colors {
    static let background = "BgColor"
    static let light_background = "LightBgColor"
    static let placeholder = "PlaceholderTextColor"
}

struct identifiers {
    static let discover_collection_cell = "DiscoverCollectionCell"
    static let discover_collection_header = "DiscoverCollectionHeader"
    
    static let chart_table_cell = "ChartTableCell"
    static let chart_table_header = "ChartTableHeader"
    
    static let credit_table_cell = "CreditTableCell"
    
    static let detail_trailer_collection_Cell = "DetailTrailerCollectionCell"
    static let detail_cast_collection_Cell = "DetailCastCollectionCell"
}


let genreCode = [
    28 : "Action",
    12 : "Adventure",
    16 : "Animation",
    35 : "Comedy",
    80 : "Crime",
    99 : "Documentary",
    18 : "Drama",
    10751 : "Family",
    14 : "Fantasy",
    36 : "History",
    27 : "Horror",
    10402 : "Music",
    9648 : "Mystery",
    10749 : "Romance",
    878 : "Science Fiction",
    10770 : "TV Movie",
    53 : "Thriller",
    10752 : "War",
    37 : "Western"
]
  • refactor color constant using UIColor extension
  • Make cell identifiers as static variable of class
  • Move genre code to Domain or Model part

ChatTableViewController Category selection button (Navigation Button) is not Updating tableView

There's UIMenu Item changing category of chart(Update tableview content)
But It's not working:

UIAction(title: "Popular", image: UIImage(systemName: "flame.fill"), handler: { _ in self.viewModel.requestData(category: .Popular) }),
UIAction(title: "Top Rated", image: UIImage(systemName: "star.fill"), handler: { _ in self.viewModel.requestData(category: .TopRated) }),
UIAction(title: "Now Playing", image: UIImage(systemName: "theatermasks.fill"), handler: { _ in self.viewModel.requestData(category: .NowPlaying) })

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.