Welcome to the open source iOS application that lets you browse players and clubs from FIFA19.
- Install Xcode from Apple.
- Install cocoapods.
- Install dependencies (run this in the root folder of the repo)
pod install
- Open
Betterpick.xcworkspace
- Take a look at the
AppDelegate.application(application:didFinishLaunchingWithOptions:)
func where things kick off :) - (Optional) build and run
Betterpick Mock
target to preview the app with hardcoded mock data.
iOS Deployment Target | Architecture | Autolayout | UnitTests | UITests |
---|---|---|---|---|
11.0+ | MVVM-C | Code (no storyboards) ✅ | ✅ | ❌ |
- Browse FIFA Clubs from all competitions (leagues).
- Browse between FIFA players with various filtering options (OVR range, nationality, position...)
- Show player and team details
- Search players / clubs by name
- Create custom teams
├── Betterpick
│ ├── AppDelegate.swift # App entrypoint
│ ├── Discover # constructs related to the Discover screen
│ │ ├── Class
│ │ ├── Coordinator
│ │ ├── Extensions
│ │ ├── Model
│ │ ├── Protocol
│ │ ├── View
│ │ ├── ViewController
│ │ └── ViewModel
│ ├── MyTeams
│ ├── Player
│ ├── Settings
│ ├── Supporting Files # configs, .plist, Xcode assets
│ ├── TabBar # The root ViewControllers and TabBar related stuff
│ ├── Team
│ └── common # constructs that are reused across multiple screens
├── assets
│ └── screenshots # the screenshots
├── docs
│ └── src # generated HTML docs by Jazzy
└── fastlane
├── Appfile
├── Fastfile # Main fastlane setup file
├── Matchfile
├── Snapfile
└── actions # custom fastlane actions
Documentation is available via GitHub Pages. Updated on each new app release.
- fastlane.tools 🚀 - responsible for automating common tasks, such as:
- testing - starts the UI and Unit tests on the main target
$ bundle exec fastlane tests
- creating new releases
$ bundle exec fastlane pr_release
- Jazzy 🎺 - generates the project documentation
- SwiftLint
- SDWebImage
- Travis-CI 🤖 for continuous integration (running time-consuming lanes such as deployment to the App Store / TestFlight)
Discover Teams | Team Detail | Player Detail |
![]() |
![]() |
![]() |
This project is intended to be an educational resource for either our team and also anyone looking for a small-sized iOS project with:
- MVVM-C architecture
- Autolayout done without storyboards and any autolayout DSL. Pure UIKit.
- Custom UI components (e.g
TappableLabel
,TabBarStackView
, ...) - Fastlane scripts that work on/with Travis
Please use issues and pull requests accordingly. Generally speaking, you would want to make a pull request from and to the develop branch.
TestFlight invites are open.
MIT
Finally, if you made it here and this project has helped you in any way, please let me know via Twitter. 🙂