An Unsplash Application for iOS.

Overview

License: MIT Platforms: iOS Language: Swift Version: v1.0

Monotone

English · 中文

Report Bug · Request Feature



Monotone is a Modern Mobile Application, integrated with powerful Unsplash API provided by Unsplash. 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

  • Write Interfaces Programmatically
  • Dark Mode Support
  • Animation Effects
  • Localization
  • Powered by Unsplash API
  • 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 to install & configure(If you already installed Cocoapods, skip this).

Prerequisites

Monotone is trigged by Unsplash API . The very first thing must be done is applying a pair of OAuth key to run it.

  1. Visit Unsplash, sign up then sign in.(If you already have an account, skip this).
  2. Visit Unsplash Application Registration Platform 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 https://unsplash.com/oauth/applications). At Redirect URI & Permissions - Redirect URI section, input monotone://unsplash, make sure all authentication options are checked, just like the image shown below.

  1. 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:
# Clone to a local folder
git clone https://github.com/Neko3000/Monotone.git

# Direct to Project folder
cd Monotone

# Install Pods
pod install
  1. Under Monotone folder, duplicate config_debug.json file,and rename it to config.json(This file is ignored by .gitignore);
  2. 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 );
  3. 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



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. They shared this document, 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 and this beautiful design document.



About Unsplash

Unsplash 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 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
Weibo: @一只妖艳的绀色布



License

Distributed under the MIT License.
See LICENSE for more information.



You might also like...
Pasta is clipboard application for ios devices.
Pasta is clipboard application for ios devices.

pasta Pasta is clipboard application for ios devices. Starting Requirements Xcode 13 Runing Not requires any specific steps, clone and run. git clone

Simple weather application in Swift for iOS 15.
Simple weather application in Swift for iOS 15.

DaWeather ⛅️ Simple weather application in Swift for iOS 15. General Information DaWeather ⛅️ will help you determine the current weather Features Get

Sell Factory is an iOS Application.
Sell Factory is an iOS Application.

Sell-Factory Sell Factory is an iOS Application. Description A social Media platform for users to sell their products without a middle man. Now connec

small iOS & ipadOS application written in SwiftUI and Combine, that fetches twitter users and tweets using Twitter's api
small iOS & ipadOS application written in SwiftUI and Combine, that fetches twitter users and tweets using Twitter's api

HomeTwitter Small iOS & ipadOS application written in SwiftUI and Combine, that fetches twitter users and tweets using Twitter's api. This is just a s

iOS mobile development using Swift - Online Shopping Application
iOS mobile development using Swift - Online Shopping Application

iOS mobile development using Swift - Online Shopping Application - yr4_sem1 This is an application developed as an individual project for Mobile Appli

The iOS application has the Pokémon list. In the app
The iOS application has the Pokémon list. In the app

The iOS application has the Pokémon list. In the app, you can search for Pokémon by name, edit the Pokémon list (mark favorites or delete unwanted ones 🙂 ), and re-update the Pokémon list from the network.

A To Do List application for iOS devices.

Todoey A To Do List application for iOS devices. Tools Used - Realm Database UIStoryBoard Swift Ruby How to run - Clone the repo to local storage. Ins

A Swift iOS application designed to help DMs / GMs run tabletop RPGs

Project Overview This project is a work in progress iOS app designed to help Dungeon Masters run tabletop role playing games. It is meant as an explor

🍳 iOS application for DIET and EAT 🍙

diEAT 🥗 Summary 다이어트 중 식단 🍳 을 한번에 기록하고 한눈에 확인하고싶어서 만들어보는 식단 관리 프로그램 (iOS 어플) It's a dieat management ios application to record dieat 🍳 at once 💻 T

Owner
Xueliang Chen
Carpe diem.
Xueliang Chen
macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application.

Download Full Installer This is a Swift UI implementation of my fetch-installer-pkg script. It will list the full macOS Big Sur (and later) installer

Armin Briegel 654 Dec 31, 2022
This application was created as a practice and shows a simply VIPER master-detail application.

MARVEL UNIVERSE CHARACTERS This application was created as a practice and shows a simply VIPER master-detail application. Main screen shows a list of

Daniel Moraleda 0 Nov 15, 2021
An iOS application written in Swift to demonstrate how to implement a Clean Architecture in iOS

Reminders iOS An iOS application written in Swift to demonstrate how to implement a Clean Architecture in iOS. Idea The idea is to implement the simpl

Tiago Martinho 306 Nov 9, 2022
MyNews-iOS - A simple iOS mobile application for reading news articles

MyNews A simple iOS mobile application for reading news articles. This app uses

Ernest Nyumbu 1 Mar 31, 2022
A Currency Converter & Calculator IOS application to check, convert and calculate to popular currencies to your favorite ones.

A Currency Converter & Calculator IOS application to check, convert and calculate to popular currencies to your favorite ones.

CCC 64 Jan 1, 2023
Free time picker iOS Application with SwiftUI and Combine

Free time picker iOS application. This is iOS application for search free time in your calendar. Search Detail Environment macOS Catalina 10.15.3(19D7

fromkk 39 Jul 7, 2022
iOS application to tell the time in the British way 🇬🇧⏰

Tell Time ???? ⏰ As a French guy in London, when people told me the time, I was always lost. Now thanks to this app, I can confirm what I hear and wha

Renaud Jenny 50 Dec 18, 2022
RippleQueries is an iOS application built as assessment task at Ripple Egypt. Built Using MVVM (Model-View-ViewModel) and Clean Architecture concepts

RippleRepositories RippleRepositories is an iOS application built as an assessment task at Ripple Egypt. Built Using RxSwift & MVVM (Model-View-ViewMo

Muhammad Ewaily 3 Sep 16, 2021
Mercury is a free English dictionary iOS application.

Mercury - English Dictionary Mercury is a free English dictionary iOS application. Why "Mercury"? In my trip to the USA I have bought the book "Cosmic

Oleg Rybalko 2 Apr 20, 2022
Teatanic is an iOS application that simulates a tea shop.

teatanic Teatanic is an iOS application that simulates a tea shop. A user is able to search among different tea types and "buy" it. purpose This appli

null 2 Oct 6, 2021