Monotone
An Unsplash Application for iOS.
Install / Use
/learn @Neko3000/MonotoneREADME
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. (ヽ(✿゚▽゚)ノ)
<br/> <br/>Table of Contents
<ol> <li><a href="#overview">Overview</a></li> <li> <a href="#development-progress">Development Progress</a> <ul> <li><a href="#features">Features</a></li> <li><a href="#tasks">Tasks</a></li> </ul> </li> <li> <a href="#getting-started">Getting Started</a> <ul> <li><a href="#prerequisites">Prerequisites</a></li> <li><a href="#installation">Installation</a></li> </ul> </li> <li><a href="#dependencies">Dependencies</a></li> <li><a href="#sturcture">Sturcture</a></li> <li><a href="#design">Design</a></li> <li><a href="#about-unsplash">About Unsplash</a></li> <li> <a href="#contributing">Contributing</a> <ul> <li><a href="#how-to-participate-in">How to Participate in</a></li> </ul> </li> <li><a href="#contact-on-me">Contact on Me</a></li> <li><a href="#license">License</a></li> </ol> <br/> <br/>Overview
<p align="center"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-record-1.gif"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-record-2.gif"> </p> <p align="center"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-1.png"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-2.png"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-3.png"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-4.png"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-5.png"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-6.png"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-7.png"> <img width="200" src="https://github.com/Neko3000/Monotone/blob/master/doc/screens_en/screen-shot-8.png"> </p> <br/> <br/>Development Progress
Features
- [x] Write Interfaces Programmatically
- [x] Dark Mode Support
- [x] Animation Effects
- [x] Localization
- [x] Powered by Unsplash API
- [X] More...
Tasks
Currently supported tasks:
<table align="center"> <tr> <th style="text-align:center">Position</th> <th style="text-align:center">Module</th> <th style="text-align:center">Page</th> <th style="text-align:center">Style & Layout</th> <th style="text-align:center">Powered by Data</th> <th style="text-align:center">Animation Effects</th> <th style="text-align:center">Localization</th> </tr> <tr > <td align="center" rowspan="7">Main</td> <td align="center" rowspan="1">Login</td> <td align="center">Sign Up & Sign In</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center" rowspan="6">Photo</td> <td align="center">List (Search & Topic)</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">View</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Camera Settings</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Collect (Add & Remove) </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Share to SNS</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Save to Album</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr > <td align="center" rowspan="6">Side Menu</td> <td align="center" rowspan="1">Profile</td> <td align="center">Details</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center" rowspan="5">Menu</td> <td align="center">My Photos</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Hiring</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Licenses</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Help</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Made with Unsplash</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr > <td align="center" rowspan="5">Tab Bar</td> <td align="center" rowspan="2">Store</td> <td align="center">Home</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center">Details</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center" rowspan="1">Wallpaper</td> <td align="center">List (Adapt Screen Size)</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center" rowspan="1">Collection</td> <td align="center">List</td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> <tr> <td align="center" rowspan="1">Explore</td> <td align="center">List (Photo & Collection)</td> <td align="center">✅ </td> <td align="center">⬜️ </td> <td align="center">✅ </td> <td align="center">✅ </td> </tr> </table> <br/> <br/>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.
- Visit Unsplash, sign up then sign in.(If you already have an account, skip this).
- Visit Unsplash Application Registration Platform agree with terms and create a new application, the application name and description can be anything.
- 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 URIsection, inputmonotone://unsplash, make sure all authentication options are checked, just like the image shown below.
- After the work is finished, check ”Access Key“ and ”Secret Key“ on this page, they will be used soon.
Installation
- Execute the following commands in the terminal:
# Clone to a local folder
git clone https://github.com/Neko3
Related Skills
diffs
341.0kUse the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.
clearshot
Structured screenshot analysis for UI implementation and critique. Analyzes every UI screenshot with a 5×5 spatial grid, full element inventory, and design system extraction — facts and taste together, every time. Escalates to full implementation blueprint when building. Trigger on any digital interface image file (png, jpg, gif, webp — websites, apps, dashboards, mockups, wireframes) or commands like 'analyse this screenshot,' 'rebuild this,' 'match this design,' 'clone this.' Skip for non-UI images (photos, memes, charts) unless the user explicitly wants to build a UI from them. Does NOT trigger on HTML source code, CSS, SVGs, or any code pasted as text.
openpencil
1.9kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
ui-ux-designer
Use this agent when you need to design, implement, or improve user interface components and user experience flows. Examples include: creating new pages or components, improving existing UI layouts, implementing responsive designs, optimizing user interactions, building forms or dashboards, analyzing existing UI through browser snapshots, or when you need to ensure UI components follow design system standards and shadcn/ui best practices.\n\n<example>\nContext: User needs to create a new dashboard page for team management.\nuser: "I need to create a team management dashboard where users can view team members, invite new members, and manage roles"\nassistant: "I'll use the ui-ux-designer agent to design and implement this dashboard with proper UX considerations, using shadcn/ui components and our design system tokens."\n</example>\n\n<example>\nContext: User wants to improve the user experience of an existing form.\nuser: "The signup form feels clunky and users are dropping off. Can you improve it?"\nassistant: "Let me use the ui-ux-designer agent to analyze the current form UX and implement improvements using our design system and shadcn/ui components."\n</example>\n\n<example>\nContext: User wants to evaluate and improve existing UI.\nuser: "Can you take a look at our pricing page and see how we can make it more appealing and user-friendly?"\nassistant: "I'll use the ui-ux-designer agent to take a snapshot of the current pricing page, analyze the UX against Notion-inspired design principles, and implement improvements using our design tokens."\n</example>
