Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Neko3000/Monotone

An Unsplash Application for iOS.
https://github.com/Neko3000/Monotone

animation mvvm open-source photo photography rxswift swift unsplash unsplash-api ux-design wallpaper

Last synced: 2 months ago
JSON representation

An Unsplash Application for iOS.

Awesome Lists containing this project

README

        

![License: MIT](https://img.shields.io/github/license/Neko3000/Monotone)
![Platforms: iOS](https://img.shields.io/badge/Platform-iOS-lightgrey)
![Language: Swift](https://img.shields.io/badge/language-swift-orange.svg)
![Version: v1.0](https://img.shields.io/badge/version-v1.0-lightgrey)

Monotone







English
·
中文



Report Bug
·
Request Feature




**Monotone** is a Modern Mobile Application, integrated with powerful [Unsplash API](https://unsplash.com/developers) provided by [Unsplash](https://unsplash.com). It implemented almost all features including viewing, searching, collecting photos. And other features, such as profile, license, FAQ are supported as well.

This is an **un-official** application, exploring the feasibility of some conceptions is the goal of this project.
Written in Swift, triggered by RxSwift, draw responsive constraints using SnapKit.

If you like this project or inspired by any ideas of this project, please star it without any hesitation. (ヽ(✿゚▽゚)ノ)




## Table of Contents


  1. Overview


  2. Development Progress



  3. Getting Started


  4. Dependencies

  5. Sturcture

  6. Design

  7. About Unsplash


  8. Contributing


  9. Contact on Me

  10. License




## Overview
















## Development Progress

### Features
- [x] Write Interfaces Programmatically
- [x] Dark Mode Support
- [x] Animation Effects
- [x] Localization
- [x] Powered by [Unsplash API](https://unsplash.com/developers)
- [X] More...

### Tasks
Currently supported tasks:


Position
Module
Page
Style & Layout
Powered by Data
Animation Effects
Localization


Main
Login
Sign Up & Sign In






Photo
List (Search & Topic)






View






Camera Settings






Collect (Add & Remove)






Share to SNS

⬜️




Save to Album






Side Menu
Profile
Details






Menu
My Photos






Hiring

⬜️




Licenses






Help

⬜️




Made with Unsplash

⬜️




Tab Bar
Store
Home

⬜️




Details

⬜️




Wallpaper
List (Adapt Screen Size)

⬜️




Collection
List






Explore
List (Photo & Collection)

⬜️





## Getting Started
This application uses `Cocoapods` to manage dependencies.
Please refer to [Cocoapods Offical Website](https://cocoapods.org/) to install & configure(If you already installed `Cocoapods`, skip this).

### Prerequisites
**Monotone** is trigged by [Unsplash API](https://unsplash.com/developers) . The very first thing must be done is applying a pair of OAuth key to run it.
1. Visit [Unsplash](https://unsplash.com), sign up then sign in.(If you already have an account, skip this).
2. Visit [Unsplash Application Registration Platform](https://unsplash.com/oauth/applications/new) agree with terms and create a new application, the application name and description can be anything.
3. After the application was created,it will redirect to the application details page automatically (Also can be found from ). At `Redirect URI & Permissions - Redirect URI` section, input `monotone://unsplash`, make sure all authentication options are checked, just like the image shown below.



4. After the work is finished, check ”Access Key“ and ”Secret Key“ on this page, they will be used soon.


### Installation

1. Execute the following commands in the terminal:
``` bash
# Clone to a local folder
git clone https://github.com/Neko3000/Monotone.git

# Direct to Project folder
cd Monotone

# Install Pods
pod install
```

2. Under **Monotone** folder, duplicate `config_debug.json` file,and rename it to `config.json`(This file is ignored by .gitignore);
3. Open `config.json` ,input your ”Access Key“ and ”Secret Key“,they will be copyed to APP folder when running.(For more information, please refer to the content in *Project->Build Phases->Run Script* and *APPCredential.swift* );
4. Done,command + R




## Dependencies


Project
Description


RxSwift
Framework for Reactive Async Programming.


Action
Based on RxSwift,encapsulate actions for calling。


DataSources
Based on RxSwift,extend logic interaction of tableview and collectionview。


Alamofire
HTTP network library.


SwiftyJSON
Handle JSON format data effectively.


ObjectMapper
Map data between models and JSON.


Kingfisher
Network image cache libray with many functions.


SnapKit
Make constraints effectively.


...
...

For more information,please check [Podfile](https://github.com/Neko3000/Monotone/blob/master/Podfile)。




## Project Structure
The basic structure of this project.

```
Monotone
├── Monotone
│ ├── /Vars #Global Variables
│ ├── /Enums #Enums (Includes some dummy data)
│ ├── /Application
│ │ ├── AppCredential #Authentication Credential
│ │ ...
│ │ └── UserManager #User Managment
│ ├── /Utils #Utils
│ │ ├── /BlurHash #Photo Hash
│ │ ├── ColorPalette #Global Colors
│ │ ├── AnimatorTrigger #Animation Effects
│ │ └── MessageCenter #Message Notification
│ │── /Extension #Extensions
│ │── /Services #Services
│ │ ├── /Authentication #Requests of Authentication
│ │ └── /Network #Requesets of Data
│ │── /Components #View Classes
│ │── /ViewModels #View Models
│ │── /ViewControllers #View Controllers
│ │── /Models #Data Models
│ │── /Coordinators #Segues
│ └── /Resource #Resource
└── Pods

```




## Designing
The interface you are seeing are all designed by [Addie Design Co](https://dribbble.com/addiedesign). They shared this [document](https://dribbble.com/shots/7232794-Unsplash-iOS-UI-Kit-Sketch-Invision-Studio), everyone can free download it and use it. Those design elements and their level of completion are astonishing.
This application would not be here without this design document.

Thanks again to [Addie Design Co](https://dribbble.com/addiedesign) and this beautiful design document.




## About Unsplash
[Unsplash](https://unsplash.com) is a website dedicated to sharing high-quality stock photography under the Unsplash license. All photos uploaded by photographers will be organized and archived by editors.

And this website is one of my favorites, admired for its artistic, the spirit of sharing.
You will find my home page here. (~~Not updated frequently since 2020~~)




## Contributing
Limited by data [Unsplash API](https://unsplash.com/developers) provides, some parts of this application only finished their styles and layouts(Almost in store, explore, etc). If the API provides more detailed data on these parts in the future, we will add new features as soon as possible.

Meanwhile, focusing on the current application, we will improve it continuously.

### How to Participate in
If you are an experienced mobile application developer and want to improve this application. You are welcomed to participate in this open-source project. Practice your ideas, improve even refactor this application.

Follow standard steps:

1. `Fork` this repo;
2. Create your new `Branch` (`git checkout -b feature/AmazingFeature`);
3. Add `Commit` (`git commit -m 'Add some AmazingFeature'`);
4. `Push` to remote `Branch` (`git push origin feature/AmazingFeature`);
5. Open a `Pull Request`.

*For anyone, open an issue if you find any problems. PRs are welcome.*




## Contact on Me
E-mail: [email protected]
Blog: [chienerrant.com](https://chienerrant.com)
Weibo: [@一只妖艳的绀色布](https://weibo.com/u/7386133210)




## License
Distributed under the MIT License.
See [LICENSE](https://github.com/Neko3000/Monotone/blob/master/LICENSE) for more information.