Back to projects

QRShield

A mobile app that checks where a QR code leads before you open it.

Context
Personal project
Period
2026
Role
Whole project
Team
Solo
  • Python
  • FastAPI
  • PostgreSQL
  • PostGIS
  • React Native
  • TypeScript
  • Docker

Why this project

QR codes are everywhere: menus, parking meters, posters. Nobody checks where they lead. A fake QR code stuck on a parking meter is enough to send people to a fake payment page. This scam is called quishing. I wanted a project in cybersecurity that solves a real everyday problem.

How it works

  • The API follows the link to its final address and checks the domain with Google Safe Browsing and VirusTotal.
  • It spots domains that copy real ones like paypa1.com and links that download an .apk or .exe file.
  • The app gives a verdict with the reasons. The user decides to open the link or not.
  • Dangerous codes are reported without any personal data and shown on a map. PostGIS handles the map queries.
QRShield public page with the map of reported QR codes

A choice I made

I first thought about Kotlin Multiplatform because I already know native Android. But I work on Windows and testing the iOS version needs a Mac. With Expo I can test on Android and iPhone and use the same language as the web page.