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
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