GithubHelp home page GithubHelp logo

kaorumuta / qiitachecker Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 269 KB

A sample app to watch the articles in Qiita and just my practice to implement with MVVM + Clean Architecture

License: MIT License

Swift 95.69% Makefile 2.82% Ruby 1.49%
rxswift clean-architecture mvvm swift ios

qiitachecker's Introduction

QiitaChecker

What Is This App?

QiitaChecker enables you to watch the latest articles of Qiita. However, some problems are existed and should be revised.

App Architecture

In this app, I adopted MVVM + Clean Architecture. A Detail is shown in this figure.
This app separates three layers, presentation layer, domain layer, and data layer. In presentation layer, UI Event and Databinding are handled with ViewController and ViewModel. Essentially, presentation logics are stored in ViewModel. In domain layer, UseCase stores and performs business logics and translates received immutable data (Entity) into Model through Translator. In data layer, Repository receives immutable data with DataStore and pass it to UseCase. Also, DataStore receives the immutable data as Entity from QiitaAPI and pass Entity to Repository.

How To Run This App

  1. rbenv, carthage, mint setup
    Just run this command in your terminal
brew install rbenv ruby-build
brew install carthage
brew install mint
  1. rbenv install
    Just run this command in your terminal
rbenv install $(cat .ruby-version)
  1. set the path in .bashrc and run .bashrc
    Write the command in .bashrc to set the path
[[ -d ~/.rbenv  ]] && \
  export PATH=${HOME}/.rbenv/bin:${PATH} && \
  eval "$(rbenv init -)"

and run it with this command

source ~/.bashrc
  1. bundler install
    Just run this command in your terminal
gem install bundler:2.0.1
  1. run Makefile and open the workspace
    Just run this command in the project root in your terminal
make

and

open QiitaChecker.xcworkspace

Future Work

  • Improve UX (ex. add checkbox in TagCell to watch whether item is selected or not)
  • add the function to search tags and posts by themselves

Used Libraries

Acknowledgements (Reference for Me Specifically)

License

Under MIT License

qiitachecker's People

Contributors

dependabot[bot] avatar kaorumuta avatar

Watchers

 avatar  avatar

qiitachecker's Issues

Introduce XcodeGen

What is this issue?

To manage project file (.xcodeproj) in yaml,

  • Install XcodeGen
  • Create yaml

Build failed in Xcode 12.0

What is this issue?

Build failed due to this error

Module compiled with Swift 5.2.4 cannot be imported by the Swift 5.3 compiler

Environment
MacOS: Catalina
Xcode: 12.0

Screenshot (Optional)

Introduce Dependency Manager

What is this issue?

Try to

  • Install CocoaPods
  • Install Carthage (High Priority)

I'd like to manage any frameworks or OSS in Carthage as far as possible. In case of unsupported frameworks or OSS in Carthage, Introduce CocoaPods

Consider app architecture

What is this issue?

To do unit test easily,

  • Introduce suitable app architecture following SOLID principle, which is a major software architecture principle)

In this app, practice to implement in MVVM+Clean Architecture

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.