NFC Smart Lock App with Dynamic Access Control

Mobile NFC smart lock app enabling secure door access via email authentication, with role-based access control, shareable access, and a lock simulation for testing.

Tags
Mobile App DevelopmentGroup ProjectA-Grade
Tech Stack
Android
Java
PostgreSQL
Firebase
NFC Smart Lock App with Dynamic Access Control

What is this?

A mobile security app developed as a group project for the Mobile Development course at university. The app uses email authentication and NFC to unlock doors based on user authorization. It features a role-based access control system, allowing users to manage and share access with configurable time limits, and includes a lock simulation for testing and demonstration.

Check out the demo to get a quick overview of the project!

About my role

  • Designed and implemented the Android app frontend for intuitive and secure user interactions
  • Collaborated with my teammate on building core features, focusing mainly on the frontend
  • Helped with testing and demo preparation

Technologies I used

  • Frontend: Android (Java)
  • Database: PostgreSQL
  • Authentication: Firebase (email-based authentication and role-based access control)

Features

User features

  • Passwordless sign-in for quick access
  • Create and configure new locks
  • Share lock access with others, with configurable time limits
  • Receive notifications when access is shared
  • Unlock doors using NFC with proper authorization
  • View access logs to track unlock events
  • Edit lock details and manage access permissions

Management features

  • Role-based access control for users
  • Lock CRUD operations

Challenges & how I approached them

1. Learning Android development on the fly

  • This was my first Android project, so I was essentially learning as I developed. I had to quickly get up to speed while making sure we could deliver the app on time.
  • To overcome this, I actively sought help from my teammate and the course TA, breaking down tasks into manageable steps and focusing on completing my parts reliably.
  • Also our project idea was quite ambitious. To demo the NFC lock, we needed to develop a mock app in addition to the main Android app, which added extra workload under a tight deadline. Therefore, my teammate built the demo quickly on iOS using a familiar framework, while I focused on the Android app.

2. Integrating APIs and managing UI state

  • Integrating the backend API into the Android frontend and reflecting accurate UI states was challenging, especially as I was new to Android development.
  • I spent quite some time doing research online to figure out how to properly handle different responses (e.g. locked/unlocked status) and update the UI accordingly, ensuring a smooth user experience.

So, what was the outcome?

  • Earned an A grade for the project
  • Delivered a functional Android app demonstrating an NFC smart lock with role-based access control, and presented it clearly with a working demo

Things I learned

  • Gained hands-on experience with Android (Java) development, particularly API integration and managing UI state based on backend responses
  • Learned passwordless authentication and role-based access control using Firebase for the first time
  • Developed a stronger understanding of native mobile app architecture and development workflows