GithubHelp home page GithubHelp logo

mad-labs's Introduction

Mobile Application Development Labs

Repository for the laboratories of the Mobile Application Development course

The repository contains the 5 laboratories and the final project for the Mobile Application Development course (A.Y. 2022/23, Politecnico di Torino). Each folder contains the PDF of the assignment.

๐ŸŒ Qui in italiano

Lab 1: Kotlin Exercism exercises

4 exercises from the Exercism Kotlin track: Bank Account, Forth, List-Ops and Minesweeper.

Labs 2-5 and final project: Playgrounds Reservations

The following labs and the final project were aimed at creating an app for making reservations for available playgrounds to play a selection of sports.

The app is what can be considered a proof of concept: its main goal was to test and showcase all the different technologies that can be used to develop an Android application. For this very reason the app is a mix of activities and fragments, view-based screens and Jetpack Compose ones.

Optimizations were also not performed, mostly due to time constraints: most notably, the whole app operates from the main thread and frequently skips frames.

Features

  • Explore the playgrounds availability, also without logging in
  • Login or sign up with email and password or with a Google account
  • Visualize already placed reservation through a calendar
  • Make a new reservation, selecting a playground from recents or favourites ones or searching for one through filters
  • Edit or delete an existing reservation
  • Invite friends to a reservation, selecting from recents or favourites users or searching for one
  • Receive in-app notifications for incoming invitations to reservations
  • Withdraw participation from an accepted invitation to a reservation
  • Personalize your profile with personal information to be displayed to friends and users of the app

Horizontal features

  • The app supports multi-language localization and is fully translated in English and Italian
  • The app supports both portrait and landscape orientations and the layout is sufficiently diversified for the two alternatives

Technologies used

  • The app is fully developed in Kotlin
  • View-based activities and fragment
  • Jetpack Compose fragments (to integrate with the navigation graph used for fragments)
  • Firebase Firestore database
  • Firebase UI authentication
  • Firebase storage for saving profile images
  • Local Room database for labs 3 and 4

Known bugs and limitations

  • The app supports a dark mode too, but the color scheme was not dutifully considered nor tested
  • Accepting an invitation while the inviter disinvites you
  • Two users making a reservation at the same time
  • In general, concurrency has not been handled
  • As previously mentioned, several performance optimizations would be needed

Screenshots

Calendar Calendar Playgrounds availability Playgrounds availability Add reservation Add reservation
Choose playground Choose playground Show reservation Show reservation Notifications screen Notifications screen
Show profile Show profile

Folders content and brief changelog

  • Lab 2

    • Show and edit personal profile
  • Lab 3

    • Show personal reservations
    • Explore playgrounds availability
    • Add, edit and delete a reservation
    • Introduced local Room database
  • Lab 4

    • Rate a previously reserved court
  • Lab 5

    • See past ratings for a specific playground
    • Moved to Firebase Firestore database
    • Login (multi-user interactions properly managed)
    • Loading screens
  • Final project

    • Invite friends to reservations
    • Manage received invites from notifications
    • Add friends and playgrounds to favourites
    • General bug fixing and management of corner cases

We apologize if any of the technologies, plugins or components used required an acknowledgement and it was not provided: please note that the app was never meant to be public or operative.

mad-labs's People

Contributors

alessiomason avatar salvatoremallemaci avatar vittoriomagelli avatar magelli99 avatar francescosantoro7 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.