/TeamMaker

A Kotlin-based mobile application built with Jetpack Compose and Android Jetpack libraries, designed for creating balanced teams with ease. Users can add players, manage competitions, upload player images, and access advanced features like weather integration and SWOT analysis. Leveraging Firebase for storage and Hilt for dependency injection.

Primary LanguageKotlin

Team Maker

Team Maker Logo Dynamic Trio

Contributors Forks Stargazers Issues

We are the Dynamic Trio three Android developers working together to create powerful and user-friendly mobile apps.

Team Maker is an application designed to streamline the creation of balanced teams with fair skill distribution for various sports. Whether you're setting up a competitive event or organizing a casual game, Team Maker provides an intuitive platform to manage teams and competitions effectively.

Image 1 Image 2 Image 3

Table of Contents

  1. Key Features
  2. Screenshots
  3. Demo
  4. Open-Source Libraries
  5. Architecture
  6. API and Services
  7. Getting Started
  8. Contact
  9. Licence

Key Features

  • Create Competitions: Easily set up matches for a variety of sports such as football, volleyball, basketball, and more.
  • Add and Manage Players: Add players to your roster with detailed profiles, including:
    • Profile Picture
    • First Name
    • Last Name
    • Position
    • Skill Rating (used to balance teams)
  • Update and Delete Players: Modify player details or remove players as needed.
  • Form Matches: Select players from your list to create teams and organize matches.
  • View Match Details: Access comprehensive details of created competitions, including team compositions.
  • Check Location and Time: View essential location and time information for your events.
  • Weather Information: Get weather forecasts based on the location of your competition to better plan your events.

With Team Maker, you can register, log in, and customize your experience by adding games and participants. Build balanced teams, track your competitions, and ensure a fair and enjoyable gaming experience. Start organizing your sports events and creating balanced teams with Team Maker!

Screenshots

On Boarding Page First Sign Up Sign In Reset Password Choose Competition Update Competition Add Competition
Options Players Add Player Dialog Create Competition Competition Detail Saved Competition Delete Saved Competition

Demo

TeamMaker.mp4

Open-Source Libraries

  • Minimum SDK level 26
  • Dependency Injection (Hilt) (2.51.1) - Used for dependency injection, simplifying the management of application components.
  • Jetpack Compose (1.9.1) - A modern toolkit for building native UI in Android.
  • Navigation (1.2.0) - Handles in-app navigation in a type-safe manner.
  • Compose Lifecycle (2.8.4) - Manages lifecycle-aware components in Jetpack Compose.
  • Coroutines - Provides a simple way to manage background threads, making asynchronous programming easier and more efficient.
  • Flow - A reactive streams API in Kotlin used for managing data streams asynchronously.
  • DataStore (1.1.1) - Handles data storage and persistence, replacing SharedPreferences for more complex data structures.
  • MVVM - A design pattern used to separate concerns, making the application more modular, testable, and maintainable.
    • Lifecycle (2.8.4) - Manages Android lifecycle-aware components.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • UseCases - Located domain layer that sits between the UI layer and the data layer.
    • Repository - Located in the data layer that contains application data and business logic.
  • Retrofit (2.11.0) A type-safe HTTP client for Android and Java
  • OkHttp (5.0.0-alpha.14) An HTTP client that efficiently makes network requests
  • Gson (2.11.0) - A library for serializing and deserializing JSON data.
  • Firebase - A suite of tools used for backend services including authentication, Firestore database, storage, crash reporting, analytics, and performance monitoring.
  • Location (21.3.0) - Used for obtaining device location data.
  • SharedPreferences Store private primitive data in key-value pairs. Standard Android library with no specific version (comes with the Android SDK).
  • Lottie Animation (6.3.0) - Used to display animations in the app.
  • Coil (2.6.0) - An image loading library for Android backed by Kotlin Coroutines.

Architecture

This Android app uses the MVVM (Model-View-ViewModel) pattern and Clean Architecture principles, organized into four main modules for better scalability and maintainability.

MVVM

  • Model: Manages data and business logic, separate from the UI.
  • View: Displays the data and interacts with the user.
  • ViewModel: Connects the View and Model, handling UI-related logic and state management.

Clean Architecture & Multi Module

  • App Module: The core module that integrates all other modules and provides the main entry point of the application.
  • Data Module: Handles data sources, such as APIs and databases, and provides data to the Domain Layer.
  • Domain Module: Contains the core business logic and use cases, which are independent of external frameworks.
  • Feature Module: Encapsulates the app's features, allowing for modular development and testing of individual functionalities.

image

API and Services

The application integrates with the following APIs and services:

  • OpenWeather API: Provides weather data and forecasts. More information can be found here.
  • Restful API: Utilized for data communication and integration to get weather data.
  • Retrofit: A type-safe HTTP client for Android, used for interacting with RESTful APIs.
  • OkHttp: An HTTP client used for making network requests and handling responses efficiently.
  • Firebase: Used for various backend services, including:
    • Authentication: User sign-in and management.
    • Firestore Database: Real-time database for storing and syncing app data.
    • Storage: File storage and retrieval.
    • Crashlytics: Real-time crash reporting and diagnostics.
    • Performance Monitoring: Monitoring and optimizing app performance.
    • Analytics: Data collection and insights on app usage.
  • Google Services: Used for location services, allowing the app to access and manage location data. More detail

Getting Started

  • If You Want to Run the App on Android Studio:
  1. Clone this repository to your preferred directory using the following command:
git clone https://github.com/Yusuf-Solmaz/TeamMaker
  1. Open the cloned project in Android Studio.

    Configuration Steps

  2. Create secrets.properties file in the project directory.

  3. Add the following line with your API key to secrets.properties:

API_KEY=YOUR_API_KEY_HERE
  1. Build and run the app on an emulator or a physical device.

  • Or you can download the APK of the application here

Contact

Bengisu Şahin - bengisusaahin@gmail.com linkedin
Talha Çalışır - talha5797@gmail.com linkedin
Yusuf Mücahit Solmaz - yusufmucahitsolmaz@gmail.com linkedin

Licence

This project is licensed under the MIT License. See the LICENSE file for details.