https://github.com/mdb1/swiftypick
Useful Swift code samples, extensions, functionalities and scripts to cherry-pick and use in your projects
https://github.com/mdb1/swiftypick
ios swift xcode
Last synced: 13 days ago
JSON representation
Useful Swift code samples, extensions, functionalities and scripts to cherry-pick and use in your projects
- Host: GitHub
- URL: https://github.com/mdb1/swiftypick
- Owner: mdb1
- License: mit
- Created: 2021-08-24T23:33:00.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-08-24T01:46:12.000Z (over 2 years ago)
- Last Synced: 2025-06-17T09:02:03.242Z (9 months ago)
- Topics: ios, swift, xcode
- Language: Swift
- Homepage: https://mdb1.github.io/SwiftyPick/
- Size: 3.07 MB
- Stars: 19
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# SwiftyPick 🦅🍒
Useful Swift code samples, extensions, functionalities and scripts to cherry-pick and use in your projects.
|[Codebase documentation](https://mdb1.github.io/SwiftyPick)|
|-|
||
The documentation on this project is generated and updated automatically using Jazzy + Github Actions. For more info check the [Jazzy docs](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/Jazzy.md) on this repo.
## Purpose
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.
## Installation
### SwiftLint
> `brew install swiftlint`
### Configure the Git Hooks
> `git config core.hooksPath .githooks`
### CocoaPods
> Run `pod install` on the root of the project
Open `SwiftyPick.xcworkspace` with Xcode
# Features 🚀
## Code
### Extensions
* [Add support for multiple Color Palettes](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/ColorPalette.md): Easily handle multiple color palettes in your app.
* [AutoLayout helper methods](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/AutoLayout.md): Lightweight classes for declarative auto layout.
* [TableView extensions](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/TableViewExtensions.md): A couple of helper methods when dealing with table and collection views and cells.
### Features
* [SwiftGen](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/SwiftGen.md): Get autogenerated instances of colors, images, and localized strings.
### Networking
* `// TODO //`
### Testing
* [Xcode Test Plans](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/TestPlans.md): Configure different test plans in your project in order to test different configurations.
### UI
* `// TODO //`
### UI Design Patterns
* [MVP](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/MVP.md): Use the MVP design pattern in your project.
## Process
### Danger
* [Danger](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/Danger.md): Configure Danger and add a Github Action to run the script on every PR.
### Documentation
* [Jazzy](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/Jazzy.md): Configure Jazzy to get autogenerated `html` files for documentation.
### Fastlane
* [Fastlane](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/Fastlane.md): Configure Fastlane in your project and add a Github Action to run the tests on every PR to `main`.
* [Run Test Plans on Fastlane](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/TestPlans.md): Configure your fastfile to run different test plans.
* [Automatic distribution to testflight](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/Fastlane+Distribution.md): Automate the process of uploading builds to testflight using Fastlane and Github Actions.
### Github
* [Set up PR and Issue templates](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/GithubTemplates.md): How to add a Pull Request or Issue template to your project.
* [Github Actions](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/GithubActions.md): How to add a Github Actions and make them run on Pull Requests.
### SwiftLint
* [SwiftLint](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/SwiftLint.md): How to add and configure SwiftLint rules.
### Scripts
* [Sort Project files alphabetically](https://github.com/mdb1/SwiftyPick/blob/main/Documentation/SortProject.md): Keep the Xcode project files sorted alphabetically and avoid conflicts in the `.pbxproj` file.
# TODOs
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
# Contributing
Check out the [Contribution guide](https://github.com/mdb1/SwiftyPick/blob/main/.github/CONTRIBUTING.md)