Awesome
Amahi iOS App
Amahi iOS App, new from scratch, in Swift.
Requirements
- iOS 9.0+
- Xcode 9.0+
Setup
- Do a clean
command + shift + k
orcommand + option + shift + K
- Close Xcode
- Open a terminal window, and
$ cd
into your project directory. - Navigate to project directory where the Podfile exist.
- Run
$ pod install
- You may require to run
$ pod update
$ open AmahiAnywhere.xcworkspace
and build.- The build may fail with a missing ApiConfig.swift file
- This file has developer/production credentials/endpoints and should not be shared. Email support at amahi dot org for a copy of this file.
Code Practices
Please help us follow the best practice to make it easy for the reviewer as well as the contributor.
- Please follow the guides and code standards: Swift Style Guide
- Please follow the good iOS development practices: iOS Good Practices
Contributing and developing a feature
- Create a new branch with a meaningful name
git checkout -b branch_name
.<br /> - Develop your feature on Xcode IDE and run it using the simulator or connecting your own iphone.<br />
- Add the files you changed
git add file_name
.<br /> - Commit your changes
git commit -m "Message briefly explaining the feature"
.<br /> - Keep one commit per feature. If you forgot to add changes, you can edit the previous commit
git commit --amend
.<br /> - Push to your repo
git push origin branch-name
.<br /> - Go into the Github repo and create a pull request explaining your changes.<br />
- If you are requested to make changes, edit your commit using
git commit --amend
, push again and the pull request will edit automatically.<br /> - If the PR is related to any front end change, please attach relevant screenshots in the pull request description.
- When creating PRs or commiting changes. Please ensure the sensitive contents of the ApiConfig.swift file are ignored. Such PRs will be declined.
Pods
-
Alamofire: Elegant HTTP Networking in Swift
-
EVReflection: Reflection based (Dictionary, CKRecord, NSManagedObject, Realm, JSON and XML) object mapping with extensions for Alamofire
-
IQKeyboardManagerSwift: Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView with one line of code
-
MBProgressHUD: It is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread.
-
MobileVLCKit: It is an Objective-C wrapper for libvlc's external interface on iOS.
-
SkyFloatingLabelTextField: A beautiful and flexible text field control implementation of "Float Label Pattern". Written in Swift.
-
LightBox: Provides a convenient and easy to use image viewer for iOS app, packed with with features like swipe left/right to change, double tap to zoom, pinch to zoom, caching etc.
-
Cache: Cache is built based on Chain-of-responsibility pattern, in which there are many processing objects, each knows how to do 1 task and delegates to the next one, so can you compose Storages the way you like.
-
Imaginary: Using remote images in an application.This process should be easy, straight-forward and hassle free, and with Imaginary.
-
ReachabilitySwift:Reachability.swift is a replacement for Apple's Reachability sample, re-written in Swift with closures.
Support
If you have questions about Amahi or just want to interact, you can contact us via IRC channel. Don't forget that we are open to suggestions, extensions or adaptations. Feel free to discuss or propose new ideas for projects!
This app will go into the iOS app store and replace the current version there written in Objective C.