Rewrite of the WSO Mobile iOS app in Swift.
This project will, at some point, completely replace the existing WSO Mobile app, so we need to re-create everything. Pull requests are very welcome!
Not sure what to do next? Check the To-Do List or the Issues!
Swift is a programming language made by Apple that you should learn; it's pretty good. This project has a special layout that you should respect.
- The
Appfolder is forViews, which are the GUI screens of the app, andViewModels, which are the underlying data structure that represent the stateful data which will be rendered byViews. - The
CLIfolder is for the CLI client to WSO Mobile. It's there so that you can quickly and efficiently test some parts of the app without needing to launch a whole iPhone simulator. Feel free to use it if this fits the needs of what you're working on; otherwise ignore it. - The
Sharedfolder contains all core logic code. It is where basically all non-GUI code should go, such as helper functions, anything iterative, and all functions that actually do any data parsing. If it modifies a data structure in a non-declarative way, it must live here.
Throughout the project are various Markdown files describing how to use a certain directory or how to extend something, along with many helpful comments. You should read them!
Also: swiftlint is turned on. To turn it off, add the following to your .swiftlint.yml:
lenient: trueThat will make it ignore all your errors. You should probably read what swiftlint says at some point, although most of its warnings are more aesthetic than anything, and you should go back and fix them. This is only for when you're in a hurry, or simply want to get something out and fix it later.
Ordered from most to least important:
- Add views for all core WSO services
- (Maybe) Decent watchOS support
- (Maybe) Decent iPadOS support
Users are also regularly submitting feedback. You should listen to them, too!
This is a list of things that should never be done. They seem like a good idea, but they are actually bad.
- Storing the user's token in
AppSettings(NEVER do this) - Implementing Android support (not our problem)
- Releasing to tvOS, visionOS, or macOS (why?)
- Shipping the same code for iOS and iPadOS (don't do this)