Skip to content

Or3nges/howestprime-client-mobile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Howest Prime Studio App (Device Development 2024-2025)

The Howest Prime Studio App app is your personal assistant for the perfect movie experience. Store and access all your tickets in one place. Get notified when your film is about to start. Find your way through the cinema complex with ease. And order your favorite snacks in advance — no waiting, just enjoying.\n Enjoy your movie experience in Howest Prime Studio! The app combines the different techniques seen during the input sessions of the module. Enjoy!

1. Functional requirements

Home screen

The first screen welcomes the user. There is a button to start ordering snacks. If the user wants, he can subscribe to recieve information on the latest events. Once he has subscribed, the form doesn't appear anymore. This is implemented by storing the choice in DataStore.

In code, this is represented by the HomeScreen composable in HomeScreen.kt.

Tickets screen

In this screen the user can see his tickets that he ordered (from the MessageBroker). The user can filter to only see the upcoming tickets. For each upcoming ticket a reminder can be set (1 day, 2 hours, 30 minutes before the start of the movie) and the QR code can be shown for scanning. By clicking on a ticket, the user will navigate to a detail screen. On the detail screen the user can see extra information about the ticket.

In code, this is represented by the TicketListScreen composable in TicketListScreen.kt. The detail screen is represented by the TicketScreen composable.

Snacks screen

In this screen the user can explore the snacks he can order during his visit to the cinema (from the Web API). Bij clicking on one, the snack is added to the cart. If items are in the cart, an icon will appear in the top bar. Clicking on the icon, the user will see on overview of the snacks that he ordered and he can place his order (order will be send to the MessageBroker) or cancel it. If the order is ready, a notification will be sent.

In code, this is represented by the SnackListScreen composable in SnackListScreen.kt and the CartScreen composable in CartScreen.kt. The detail screen is represented by the ProductScreen composable.

Location Screen

This screen shows the users location and the Howest Prime Movie Cinema complex on a customized map with Mapbox. With geofencing, entering the cinema complex will trigger a customized event. The same happens when leaving the building. Once the user enters the building, navigation to the room where the movie is going will be possible.

In code, this is represented by the LocationScreen composable in LocationScreen.kt.

Sensors Screen

This screen helps the user when he needs to go out of the room during the movie. The light intensity is measured as well if the user is seated or standing up. The flash of his phone can be activated manually or based on the light intensity and moving.

In code, this is represented by the SensorsScreen composable in SensorsScreen.kt.

2. Technical requirements

The purpose is to develop an application that has to be sufficiently large to show you have the knowledge of creating a native app with Jetpack Compose in Kotlin using the techniques seen during the course. (minimum SDK: API26)

The app must be designed and developed professionally (Kotlin style guide, Android App architecture, testing, security).

Must have: for a grade of 12/20

  • Tickets
    • Receive tickets from the MessageBroker
    • Save them in a local Room database
    • Display upcoming tickets in a TicketListScreen
    • Show QR code when clicking on a ticket
    • Set a reminder notification when retrieving the ticket from the MessageBroker, 1 hour before the movie starts
  • Snacks
    • Retrieve snack data via Retrofit
    • Save them in a local Room database
    • Display snacks in a SnackListScreen
    • Add snacks to a cart
    • Show overview of the cart in the CartScreen
    • Share the order via message (e.g. text or intent) when clicking on an Order-button on the CartScreen
  • Location
  • Sensors
    • Detect light intensity and movement and show it in the SensorsScreen
    • Allow flashlight activation via a toggle button
  • Sufficient unit testing

Intermediate: for a grade of 14+/20

  • Tickets
    • Show detailed info when clicking a ticket
    • Support multiple notification options for upcoming tickets (30 min, 2 hours, 1 day before movie start)
  • Snacks
    • Send snack orders to the MessageBroker
  • Location
  • Sensors
    • Automatically activate flashlight only when the following constraints are done:
      • You are inside the building
      • The light intensity is low
      • Movement is detected
  • Sufficient unit and instrumented testing

Experienced: for a grade of 16+/20

  • Tickets
    • Save tickets securely in a key vault
    • Add filtering for upcoming/all tickets
    • Allow rating of expired tickets and send the rating via the MessageBroker
  • Snacks
    • Once an order is ready, you receive a notification.
    • Your order is placed in the Howest Movie Snack's locker system, provided with a QR-code containing the orderId.
    • Use the device’s camera to detect and scan matching QR codes
    • Only after a successful scan, the user can pick up the order (door is opened containing your snacks in the locker system)
  • Location
    • Navigate to the correct room once inside the building
    • See friends’ locations in the building via markers
  • Additional features are allowed with approval from the supervising lecturers

Going for the extra mile: For a grade of 18+/20

  • Deploy the app via CI/CD to Firebase App Distribution

3. Programming code

All programming code has to be maintained on Git. Work with issues. Make frequent commits, so we can follow your progress.

Coding guidelines: Use all good practices from previous and current other courses.

Clean code guidelines

  • Create readable code
  • No redundant code
  • Small functions
  • Functions do 1 thing
  • No duplication
  • Refactor code!

4. Getting started

Mapbox

Message broker

  • Start LavinMQ message broker provided on Leho (lavinmq-setup.zip) in Docker with docker compose up
  • This will launch a message broker with 2 queues: send-queue and receive-queue. On the send-queue 3 sample tickets are published for you.
  • Add the credentials to the gradle.properties file.

Start project

  • On git you will find a start project, containing all the necessary depedencies, resources and start files.
  • Start the app in Android Studio (on emulator or physical device).
  • You should see the home screen.

GOOD LUCK!

Koen Koreman en Ann Audenaert

About

This is part of a school project I have completed in my 2nd year in the study Applied Computer Science - Software Engineer at Howest University of Applied Sciences.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages