Skip to content

SportNite/SportNiteAndroid

Repository files navigation

SportNiteAndroid

About

SportNite Android app written in Kotlin and Jetpack Compose. Connects with GraphQL Server, uses Firebase for Authentication (with Oauth 2)

Latest Release Language License: BSD-3

Specification

Libraries used

  • Jetpack Compose
  • Kotlin Coroutines
  • Coroutines Flow
  • Orbit MVI
  • Apollo GraphQL
  • Firebase Auth
  • Firebase Storage
  • Store
  • Hilt
  • Coil
  • Google Acompanist
  • Lottie
  • Image Cropper

Architecture

App is based on MVI pattern. It consists of 3 layers:

  • Presentation (ViewModels implementing Orbit MVI containers, UI in Jetpack Compose) - handles interactions with user on particular screens and gets data from repository by use cases
  • Domain (Repository) - responsible for business logic
  • Data - responsible for accessing data from api or from local storage (in our project memory or SharedPreferences)

Code organization

App is divided into modules:

:app

Module with android app and navigation between features

:feature

...

:data

:offers

:meetings

:responses

:players

:user

...

:core

:network

Module with GraphqlService. It's responsible for all calls to GraphQL API

:utils

:models

:commonui

...

User documentation

User can create offers for sport meetings. Other users than can explore existing offers and accept offer.

Create an offer (1)

  • ensure you are signed in, if not Login (2)
  • go to "Moje spotkania" tab and press "+" button on bottom right corner
  • enter date and time
  • select sport
  • select city
  • optionally enter additional informations
  • press "Dodaj ofertę"

Login (2) - if you are not signed yet

  • enter phone number
  • at next screen, enter confirmation code from SMS and tap "Potwierdź"
  • select avatar, type your name and birth date. Select sex and time availability
  • next, select in what sports are you interested in
  • confirm, and select level of advance in chosen sports

View incoming meetings (3)

  • tap "Home" tab
  • now you can view incoming meetings

Search for people (4)

  • tap "Szukaj ludzi tab"
  • use filter to show people only interested in given sport
  • after tapping user, you can see his level of advance, phone number and time availability

Accept offer response (5)

  • tap "Moje spotkania"
  • select offer
  • tap "Akceptuj ofertę"

Remove offer (6)

  • tap "Moje spotkania"
  • select offer
  • tap "Usuń ofertę"

Running

Easiest way to run SportNite Android app is to download apk from Github Releases

Code quality report

With qodana installed:

qodana scan --show-report

qodana

Screenshots

Home Screen My Meetings Screen Sign In Screen
Choose Sports Screen Choose Advance Level Screen Account Details Screen
Find Players Screen Sport Screen Add Offer Screen

License

Project is licensed under the BSD 3-clause license. See LICENSE for more details.