CSE3MAD Mobile Application Development – Assessment 4
Student: Muqtada Al-Abbooda
App Name: ParkMate
Platform: React Native Expo Mobile App
Build Type: Android APK using EAS Build
ParkMate is a React Native Expo mobile app prototype designed to help La Trobe University students find campus parking more easily.
The app provides parking availability information, parking details, GPS/map support, favourites, safety reminders, theme switching, testing evidence, and Android build evidence.
Students can waste time looking for parking on campus, especially during busy study periods.
ParkMate solves this by helping users quickly:
- View nearby campus parking areas
- Check available parking spaces
- See walking distance
- Open directions to a selected car park
- Save favourite parking areas
- Use safety and device-related features
Displays nearby parking areas with:
- Car park name
- Campus zone
- Available spaces
- Walking distance
- Availability status
Shows detailed information for a selected car park.
Includes:
- Speak Info
- Open Directions
- Save Favourite
- Send Reminder Notification
Uses Expo Location to request GPS coordinates.
If browser GPS is unavailable, the app uses a safe La Trobe University demo location fallback so the GPS feature can still be demonstrated clearly.
Allows users to save preferred parking areas.
The app also prevents duplicate favourites from being added.
Demonstrates mobile device capability integration.
Includes:
- Battery level
- Accelerometer support/fallback
- Safety reminder
- Voice safety guidance
Includes user preference and future integration features.
Includes:
- Light/dark mode
- Firebase integration plan
- AdMob placeholder
Main technologies used in this project:
- React Native
- Expo SDK 55
- Expo Router
- TypeScript
- Expo Location
- Expo Battery
- Expo Sensors
- Expo Notifications
- Expo SQLite
- Firebase package structure
- Jest
- EAS Build
- Firebase Test Lab
parkmate-mobile-app
├── __tests__
│ └── parkingUtils.test.ts
├── assets
├── scripts
├── src
│ ├── app
│ │ ├── _layout.tsx
│ │ └── index.tsx
│ ├── data
│ │ └── parkingData.ts
│ ├── services
│ │ ├── deviceService.ts
│ │ ├── firebaseService.ts
│ │ └── localStorageService.ts
│ ├── theme
│ │ └── theme.ts
│ └── utils
│ └── parkingUtils.ts
├── app.json
├── eas.json
├── jest.config.js
├── package.json
├── package-lock.json
└── tsconfig.json
Main app screen and user interface.
Controls:
- App screens
- Bottom tab navigation
- Selected parking state
- Favourites
- GPS
- Notifications
- Speech
- Device features
- Theme switching
Expo Router layout file.
It controls the app layout and hides the default header.
Stores the parking sample data.
Includes:
- Car park names
- Zones
- Distances
- Available spaces
- Total spaces
- Notes
- Latitude and longitude
Stores reusable parking logic.
Includes:
- Availability status
- Availability colour
- Percentage calculation
- Duplicate favourite checking
This file is tested using Jest.
Stores device helper functions.
Includes:
- Opening map directions
- Showing alerts
- Speech/text-to-speech support
Provides the planned Firebase service structure.
This file shows where future Firebase features such as Authentication, Firestore, and Test Lab integration would belong.
Provides the planned SQLite/local storage structure.
This would be used to save favourites persistently in a full production version.
Stores light and dark mode theme colours.
This keeps theme styling separate from the main app logic.
Jest test file for the parking utility logic.
npm installnpm startnpm run webnpm testJest was used to test the app’s parking utility functions.
The tests cover:
- Full parking status when no spaces are available
- High availability status
- Availability percentage calculation
- Duplicate favourite prevention
- Saving a new favourite
npm testTest Suites: 1 passed
Tests: 5 passed
Manual testing was completed for the main user features.
Tested areas:
- Home screen
- Parking Details screen
- Map and GPS screen
- Favourites screen
- Safety screen
- Settings screen
- Dark mode
- Notification fallback
- Open Directions feature
The project was configured for Expo EAS Build.
An Android internal distribution APK build was created using:
eas build -p android --profile previewThe preview profile in eas.json is configured to generate an APK.
Status: Finished
Platform: Android
Build Type: APK
Distribution: Internal
SDK Version: 55.0.0
Firebase Test Lab was used to run a Robo test on the Android APK build.
Device: Pixel 5
API Level: 30
Orientation: Portrait
Result: Passed
The Firebase crawl graph showed that the automated test explored multiple app screens and interactions.
Focused on:
- Creating Expo React Native project
- Building main app screens
- Adding bottom tab navigation
- Passing selected parking data between screens
Focused on:
- Firebase service structure
- SQLite/local storage service structure
- Parking utility functions
- Jest test setup
- Test execution
Focused on:
- Moving parking data into a separate file
- Moving theme colours into a separate file
- Moving device helper logic into a service file
- Improving GPS fallback support
- Adding Open Directions support
Focused on:
- Removing unused Expo starter files
- Removing unused developer-tool files
- Improving project clarity
- Reducing code smell
- Making the codebase easier to explain
This is a prototype, so some features are prepared structurally but not fully connected to a production backend yet.
Current limitations:
- Parking data is sample/demo data, not live campus data
- Firebase Authentication and Firestore are planned but not fully implemented
- SQLite persistence is structured but not fully connected to the UI
- Web testing has limitations for GPS and accelerometer features
- AdMob is represented as a placeholder only
Future improvements could include:
- Adding Firebase Authentication for student accounts
- Persisting favourites using SQLite
- Expanding Firebase Test Lab testing to more devices
- Creating a production mobile release build
Muqtada Al-Abbooda
CSE3MAD Mobile Application Development