Mobile Application Development — e-Portfolio

Mobile programming, rooted in purpose

A209895 · Tan Zu Bin · Information Technology, Class 2IT2 · Universiti Kebangsaan Malaysia

This e-portfolio documents my journey through mobile application development — from foundational lab exercises to NatureLens, a capstone project built to grow community awareness for SDG 15: Life on Land.

Field Exercises

Lab activities

Each lab below builds toward a capability that later comes together inside NatureLens — from Jetpack Compose layouts to state management, theming, navigation architecture, and local persistence with Room.

No. 01 Unit — Jetpack Compose Basics

Basic Layout with Jetpack Compose

Explored the fundamentals of Jetpack Compose by building basic UI layouts using composable functions — learning how to structure screens declaratively, which became the foundation for all subsequent lab work and the NatureLens interface.

Reflection

This lab introduced me to Jetpack Compose's declarative approach to UI, which felt very different from traditional XML layouts. By the end I was comfortable building basic layouts with Row, Column, and Box — a solid foundation that made all the later labs much smoother to work through.

No. 02 Unit — Interaction & State

Interaction, state & TextField

Learned how to handle user interaction in Compose — managing state with remember and mutableStateOf, responding to button clicks, and capturing user input through TextField components.

Reflection

Understanding state management in Compose was a turning point — once I grasped how recomposition works with mutableStateOf, building interactive UIs became intuitive. Working with TextField taught me the importance of controlled inputs and how state hoisting keeps components reusable.

No. 03 Unit — Material Design

Material Design & theming

Applied Material Design 3 theming to the app — customising colour schemes, typography, and shapes to create a consistent and polished visual identity that carries through every screen.

Reflection

This lab showed me how much difference a well-defined theme makes — colours, typography, and shapes working together give the app a professional feel. Learning to use MaterialTheme in Compose made it easy to maintain design consistency across all screens of NatureLens.

No. 04 Unit — Navigation & Architecture

Navigation, ViewModel & data class

Implemented multi-screen navigation with the Navigation component, managed UI state using ViewModel, and structured app data with Kotlin data classes — establishing clean architecture patterns for NatureLens.

Reflection

This lab taught me the importance of separating concerns — ViewModel keeps the UI logic alive across configuration changes, while data classes provide a clean contract for the data flowing through the app. Navigation Compose made multi-screen flows straightforward and type-safe, which directly shaped NatureLens's screen architecture.

No. 05 Unit — Local Persistence

Room database

Implemented local data persistence using Room — defining entities, DAOs, and a database instance to store and retrieve data offline, providing NatureLens with reliable local caching for plant discoveries.

Reflection

Room brought together annotations, DAOs, and coroutines in a way that made local persistence feel structured rather than messy. Understanding how Room abstracts SQLite gave me confidence to build offline-first features — essential for NatureLens when users are out in nature without reliable connectivity.

Capstone Projects

Projects

"Point. Snap. Learn." — a mobile app for plant recognition and environmental awareness.

Project 1 — NatureLens (Refinement)

The first project iteration refines and integrates all concepts learned from Lab 01 through Lab 04 — Jetpack Compose layouts, state management, Material Design theming, navigation with ViewModel — into a cohesive mobile application for plant recognition.

The purpose

NatureLens aims to increase community awareness about plants by making plant learning easier, more interactive, and more engaging — turning a short walk outdoors into a small act of environmental education, combining all foundational lab skills into one polished product.

Core features

  • Detect — snap a photo of any plant to identify it and get useful information instantly.
  • Collect — save discovered plants into a personal digital collection.
  • Share — post plant discoveries to a community feed to build collective awareness.
  • Earn titles — unlock titles based on the number of plants detected, encouraging continued exploration.
Reflection

Building NatureLens taught me that one simple camera interaction — point, snap, learn — can carry an entire educational and environmental purpose. Balancing the gamification features with the core goal of raising awareness for SDG 15 was the biggest design challenge, and the most rewarding part of this project.

Project 2 — NatureLens (Extended)

The second iteration of NatureLens expands upon the original with hardware sensor integration, cloud backend services, and network API calls — continuing the mission of making SDG 15 accessible through mobile technology.

What's new

This version implements hardware sensor usage (camera), Firebase for authentication and cloud data storage, and Retrofit for API communication — enabling real-time plant identification powered by external services.

Reflection

Iterating on a project I had already built was a different kind of challenge — it required critical evaluation of my own earlier work and a willingness to refactor rather than just add on top. The result is a more mature, user-centred application.

Journal Entry

Reflections on SDG 15

Why SDG 15?

SDG 15: Life on Land is important because plants and natural ecosystems play a vital role in supporting life, but many people neglect them due to a lack of awareness and knowledge. Tan Zu Bin — SDG Statement

Lessons learned

Through developing NatureLens, I learned how mobile applications can be used not only for convenience but also for education and awareness. This project helped me understand how technology, camera features, and user engagement can support environmental goals such as SDG 15. I also learned the importance of designing an app that is useful, interactive, and meaningful to its users.

Toolkit

Skills & tools

The technologies and tools I've drawn on while building lab exercises, NatureLens, and the rest of my projects.

Languages & Frameworks

  • Kotlin
  • Android Studio

Platforms & Tools

  • Android Studio
  • Firebase
  • Git & GitHub

AI-Assisted Development

  • Claude
  • Gemini
  • Kiro

Spoken Languages

  • Mandarin
  • English
  • Bahasa Malaysia