/pxview

An unofficial Pixiv app client for Android and iOS, built in React Native.

Primary LanguageJavaScriptMIT LicenseMIT

PxView

logo

styled with prettier PRs Welcome

Unofficial Pixiv app client for Android and iOS, built in React Native.

Gif

gif

Screenshots

android_home android_search android_detail ios_detail ios_connection ios_ranking

Features

  • Tab navigation on iOS, drawer navigation on Android

  • Ranking

    • Enjoy the latest popular works.
    • Find trending works over the past day, week, or month.
  • New Works

  • Check out new works from the users you're following.

  • View new works from your friends or all pixiv users

  • Search

    • Search for your favourite works with keyword.
    • Search for popular titles or characters.
    • Search illustrations by tags or titles.
    • Search for users.
    • View the latest trends on pixiv with "Featured Tags"
  • One tap button to save multiple images

  • Mute and highlight tags (New in version 1.6)

  • Tag Encyclopedia (New in version 1.6)

  • Support localization (English, Japanese, Chinese)

  • Ad free

Download

Get it on Google Play

Getting Started

  1. $ git clone https://github.com/alphasp/pxview

  2. $ npm install

  3. $ npm run pod-install

  4. $ react-native link

  5. $ npm run ios or npm run android

  6. (Optional) Set up Fabric / Crashlytics account on Fabric.io.

    a) Android: Change value for io.fabric.ApiKey in ./android/app/src/main/AndroidManifest.xml

    b) iOS: Change value for Fabric APIKey in ./ios/PxView/info.plist

  7. (Optional) Setup Firebase account on Firebase. Create a database, get apiKey, databaseURL, projectId from database settings, then change values for firebase config in ./src/common/config/env.dev.js for development and ./src/common/config/env.prod.js for production

Application Architecture

  • redux is a predictable state container for JavaScript apps,
  • redux-saga is a library that aims to make side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) in React/Redux applications easier and better.
  • redux-persist is use to persist and rehydrate a redux store. It is use in this project to persist redux store in react-native AsyncStorage and rehydrate on app start.
  • react-navigation is the official react-native navigation solution. It is extensible yet easy-to-use
  • react-native-localization is a library to localize the ReactNative interface
  • react-native-fabric is a React Native library for Fabric, Crashlytics and Answers. It is use in this project for crash reporting.
  • normalizr normalizes nested JSON according to a schema
  • reselect is a selector library for Redux that is efficient and can compute derived data, allowing Redux to store the minimal possible state.
  • And more..

Troubleshooting

Could not list contents of '/node_modules/react-native/third-party/glog-0.3.4/test-driver'. Couldn't follow symbolic link.

$ unlink node_modules/react-native/third-party/glog-0.3.4/test-driver Related issue in react-native facebook/react-native#14464

Tests

$ npm test

Related Projects

pixiv-api-client - Api client for Pixiv

Contribute

  1. Fork pxview
  2. Follow steps in Getting Started to install dependencies and setup.
  3. Make your code changes
  4. npm run lint to lint and prettify codes, make sure all eslint warning and errors are fixed.
  5. npm test to run test, make sure all tests are passed.
  6. Commit and push your codes, then create a pull request.

License

MIT