All-in-One for Melbourne University Students (AOMUS, /ˈau̇-mər-s/) is an Android app designed to help new University of Melbourne students familiarize themselves with the campus. With AOMUS, users can:
- Explore campus locations with detailed introductions to places of interest
- Check in at specific locations by scanning QR codes
- Locate campus buildings using an interactive map
- Chat with a built-in chatbot for University-related queries
- Access the university library's online resources instantly
- Follow predefined routes for guided campus tours
Warning
This project is no longer operational or maintained, and all sensitive credentials (Google Maps, GitHub Models, and Firebase) were invalidated and removed from the codebase as of November 22, 2024.
Developers intending to use or modify this repository are required to configure their own API credentials for these services (#6). For reference, you can find the database schema in the Database Management System (DBMS) and mock data in ./backup/database.json
. Please make sure you update the configuration to match your API setups before deployment.
The primary folders and files within this repository are outlined below:
.
├── README.md # Android app
├── app/
├── assets/ # attachments used in README.md
├── backup/
│ └── database.json # copy of the Firebase database
└── docs/
├── canvas-submission/ # copy of files submitted to Canvas LMS
└── scanner-examples/ # examples used for the Scanner function
This app is optimized for:
- Android version: 8.0 (Oreo) or higher
- Display size: Medium, 1080 * 2400 resolution
- Screen density: 420 dpi
To enable all features, please grant the following permissions when prompted:
- Internet: for network-based functionalities
- Camera: for using the QR code scanner
- Notifications: for receiving timely alerts
- Visit the Releases page.
- Install the latest
aomus.apk
.
Note
This app is not signed, so skipping security checks during installation is necessary.
The recommended development environment includes (or compatible versions):
This app uses two types of sensors:
- Camera: requires the
android.permission.CAMERA
permission to capture images, allowing the app to use the device's camera hardware - Location (Fine and Coarse): requires both
android.permission.ACCESS_FINE_LOCATION
andandroid.permission.ACCESS_COARSE_LOCATION
permissions to access the device's precise (GPS) or approximate location
The AOMUS architecture follows a client-server model, where the Android app interacts with the Firebase backend services for data storage, retrieval, and user authentication. The key components of the architecture include:
- client (Android app):
- provides a user interface for interactions such as viewing profiles, checking in at locations, and reading building information
- features for QR code scanning and so forth
- communicates with Firebase for all real-time data needs (e.g., check-ins, profiles)
- server:
- Firebase
- stores data in a JSON format, ensuring real-time updates across all connected clients
- manages user profiles, building details, check-in data, and so forth
- synchronizes data changes automatically in real time, allowing users to instantly see updates
- GitHub Models
- provides large language models for user queries, enabling intelligent, AI-powered responses
- Google Maps
- offers basic map-based and location-based services
- Firebase
The following schema outlines the structure of the Firebase Realtime Database, a JSON-based NoSQL DBMS used by AOMUS. Data are stored in collections, with each node representing a distinct type of entity:
root/
├── buildings/
│ └── <buildingUUID>/
│ ├── code: `String`
│ ├── desc: `String`
│ ├── imgUrl: `String`
│ ├── latitude: `float`
│ ├── longitude: `float`
│ ├── name: `String`
│ └── year: `int`
├── routes/
│ └── <routeUUID>/
│ ├── buildings: `Array`
│ ├── length: `String`
│ ├── name: `String`
│ └── time: `String`
└── users/
└── <userUUID>/
├── checkins/
│ └── <buildingId>/
│ ├── buildingCode: `String`
│ ├── counts: `int`
│ └── lastCheckIn: `long`
├── password: `String`
├── program: `String`
├── realName: `String`
├── schoolEmail: `String`
└── username: `String`
buildings
: a collection of all buildings on the campus. Each building contains metadata like its name, location (latitude/longitude), description, and year of establishment.routes
: a collection of predefined campus routes. Each route contains a list of buildings along the route, an estimated distance, a suggested completion time, and a descriptive route name.users
: a collection of registered users. Each user has personal details such as username, email, and program information, with a checkins node to track the buildings they have visited, including the number of times checked in and the timestamp of the last visit.
This repository intends to use Conventional Commits, which was adapted from the Angular Commit Style.
Important
Commits can only be submitted via branching and pull requests (PRs)!
- main branch (
main
): stable deliverable - feature branch (
feat-xxx
): implementation of one new feature - bugfix branch (
fix-xxx
): bug fixes - documentation branch (
docs-xxx
): documentation writing
Tip
You can also use the type tags following the commit convention.
- Images provided by the University of Melbourne: Image Gallery
- Icons provided by Icons8