Welcome to SportsApp, where you can explore the world of sports, leagues, and teams—all in one place! Built with Swift, UIKit, MVVM, CoreData, and some magic. ✨
- On the first tab, you get to scroll through all the sports available, laid out in a clean 2-column collection view. No spaces between them, so it's like sports heaven right on your screen.
- Each sport shows its name and thumbnail. If a sport is missing its image, we’ve got it covered with a placeholder to ensure everything stays sharp.
- Tap on any sport to view all leagues related to that sport.
- The second tab houses your favorite leagues, stored locally using CoreData, so they’re always available even when offline.
- The layout matches the Leagues screen for consistency.
- If you're offline and try to access a league’s details, an alert will notify you that an internet connection is required.
- The Leagues screen is a
UITableView
where each row displays:- A circular badge for the league (we love round logos).
- The league name.
- A YouTube button that links to the league’s official YouTube page for highlights.
- Selecting a league navigates to the League Details screen.
- The League Details screen is split into three sections with smooth orthogonal scrolling:
- Upcoming Events: Displays upcoming events for the league with event name, date, and time in a horizontal scroll.
- Latest Results: Shows recent match results including teams, scores, date, and time in a vertical scroll.
- Teams: Displays teams with circular images. Tapping a team takes you to the Team Details.
- The Team Details screen showcases team information in an elegant layout designed for clarity and aesthetic appeal.
- Dark Mode: The app fully supports dark mode, maintaining its sleek design across both light and dark themes.
- Image Handling: Missing images are no issue! We’ve implemented placeholder images for missing content, ensuring the UI remains polished.
- MVVM: For clean separation of concerns and easy maintainability.
- CoreData: To manage and store favorite leagues locally.
- Alamofire: For making network requests to the sports API. Alamofire GitHub
- Kingfisher: To download and cache images seamlessly. Kingfisher GitHub
- We’ve implemented unit tests with a focus on the network layer, ensuring robust performance, with 100% network class code coverage for reliability.
-
Clone the repository:
git clone https://github.com/M7Aymn/SportsApp.git
-
Install dependencies using CocoaPods:
pod install
-
Generate an API token:
- Go to All Sports API and sign up for an account.
- Generate a new API token, which will be required for the app to function properly.
-
Open the project in Xcode:
open SportsApp.xcworkspace
-
Replace token in Services/Remote/API.swift
-
Build and run the app on your simulator or connected device.
Feel free to explore and contribute! 😊






























