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!
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.
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.
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.
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.
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.
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).
- 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
- Show a Mapbox map with the location of the Howest Prime Studio. The data of the building is provided by GeoJSON (in the assets folder).
- Display your own location as a marker
- tutorial https://docs.mapbox.com/help/tutorials/android-markers-from-geojson
- Sensors
- Detect light intensity and movement and show it in the SensorsScreen
- Allow flashlight activation via a toggle button
- Sufficient unit testing
- 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
- Detect when the user enters or exits the building
- tutorial https://docs.mapbox.com/help/tutorials/android-geofencing
- Sensors
- Automatically activate flashlight only when the following constraints are done:
- You are inside the building
- The light intensity is low
- Movement is detected
- Automatically activate flashlight only when the following constraints are done:
- Sufficient unit and instrumented testing
- 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
- Deploy the app via CI/CD to Firebase App Distribution
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!
- Create a Mapbox account on https://account.mapbox.com/auth/signup/?page=/ and get an access token.
- Paste the token in the developer-config.xml file.
- 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.
- 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










