Useful Swift code samples, extensions, functionalities and scripts to cherry-pick and use in your projects.
Codebase documentation |
---|
The documentation on this project is generated and updated automatically using Jazzy + Github Actions. For more info check the Jazzy docs on this repo.
The idea behind this project is not to be a pod
that users import into their own projects, but rather a collection of useful ideas, well-organized and documented, to cherry-pick as needed into another projects.
Every new piece of functionality will have a proper document explaining it's usage under the Documentation
directory.
brew install swiftlint
git config core.hooksPath .githooks
Run
pod install
on the root of the project
Open SwiftyPick.xcworkspace
with Xcode
- Add support for multiple Color Palettes: Easily handle multiple color palettes in your app.
- AutoLayout helper methods: Lightweight classes for declarative auto layout.
- TableView extensions: A couple of helper methods when dealing with table and collection views and cells.
- SwiftGen: Get autogenerated instances of colors, images, and localized strings.
// TODO //
- Xcode Test Plans: Configure different test plans in your project in order to test different configurations.
// TODO //
- MVP: Use the MVP design pattern in your project.
- Danger: Configure Danger and add a Github Action to run the script on every PR.
- Jazzy: Configure Jazzy to get autogenerated
html
files for documentation.
- Fastlane: Configure Fastlane in your project and add a Github Action to run the tests on every PR to
main
. - Run Test Plans on Fastlane: Configure your fastfile to run different test plans.
- Automatic distribution to testflight: Automate the process of uploading builds to testflight using Fastlane and Github Actions.
- Set up PR and Issue templates: How to add a Pull Request or Issue template to your project.
- Github Actions: How to add a Github Actions and make them run on Pull Requests.
- SwiftLint: How to add and configure SwiftLint rules.
- Sort Project files alphabetically: Keep the Xcode project files sorted alphabetically and avoid conflicts in the
.pbxproj
file.
This is the list of things I want to add to the project in the near future:
- UserDefaults easy access / FeatureFlags using UserDefaults
- Logger: Object to log useful information to the console (and to report to analytics/crashlytics)
- Lightweight
URLSession
networking layer - PokedexViewController
- Use MVP: PokedexPresenter, PokedexPresenting, PokedexPresentingDelegate
- Use the new networking layer for the backend call
- Unit test the presenter using a mock presenter to avoid the network call
- NumberFormatter + Regional unit tests (ie: check the
,
or.
separator for decimals/thousands depending on the region) - CurrencyFormatter + Regional unit tests
- DateFormatter + Regional unit tests
- Dynamic Fonts (For accessibility)
- UITests layer using Page Object pattern
- Run UI Tests against local json files to avoid using the network
- Schemes (prod/dev)
- UIView extension with some basic animations
- Firebase integration (Analytics/Crashlytics/AB Testing/Flags)
- Custom Operators from the
Advanced Swift
book - GraphQL support
- Settings view: dark mode, color palette, app icon, local feature flags, display backend calls for debug, change accessibility features, etc
Check out the Contribution guide