Skip to content

M7Aymn/SportsApp

Repository files navigation

SportsApp 🏀⚽🏈

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. ✨

What's inside the app?

Sports Tab 🏅

  • 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.

Favorite Leagues Tab ⭐

  • 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.

Leagues View 📺

  • The Leagues screen is a UITableView where each row displays:
    1. A circular badge for the league (we love round logos).
    2. The league name.
    3. A YouTube button that links to the league’s official YouTube page for highlights.
  • Selecting a league navigates to the League Details screen.

League Details ⚡

  • The League Details screen is split into three sections with smooth orthogonal scrolling:
    1. Upcoming Events: Displays upcoming events for the league with event name, date, and time in a horizontal scroll.
    2. Latest Results: Shows recent match results including teams, scores, date, and time in a vertical scroll.
    3. Teams: Displays teams with circular images. Tapping a team takes you to the Team Details.

Team Details ⚽

  • The Team Details screen showcases team information in an elegant layout designed for clarity and aesthetic appeal.

Special Touches 🌟

  • 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.

Tech Stack 🛠️

  • 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

Unit Testing ✅

  • We’ve implemented unit tests with a focus on the network layer, ensuring robust performance, with 100% network class code coverage for reliability.

Installation Guide 🚀

  1. Clone the repository:

    git clone https://github.com/M7Aymn/SportsApp.git
  2. Install dependencies using CocoaPods:

    pod install
  3. 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.
  4. Open the project in Xcode:

    open SportsApp.xcworkspace
  5. Replace token in Services/Remote/API.swift

  6. Build and run the app on your simulator or connected device.


Feel free to explore and contribute! 😊

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •