QuishGuard – QR Code Scam Detection App | Cyber Security Final Year Project with Source Code
Back to ProjectSet aside about 30 minutes the first time. Most of that is downloads, not work.
flutter doctor and fix whatever it complains about. Android licenses usually need accepting with flutter doctor --android-licenses.Unzip the project, open a terminal, and move into the backend directory.
cd backend
This keeps the project's packages separate from everything else on your machine.
python -m venv .venv
Then activate it. On Windows: .venv\Scripts\activate. On macOS or Linux: source .venv/bin/activate. You'll know it worked because (.venv) appears at the start of your terminal line. If it doesn't appear, the activation failed and everything after this will install to the wrong place.
pip install -r requirements.txt
This pulls in Django 5, DRF, Celery, the analyzer libraries, and everything else. Takes two or three minutes on decent internet.
Copy the example file: cp .env.example .env (on Windows use copy .env.example .env).
Open .env in any text editor. The only mandatory value is SECRET_KEY — type any long random string of characters, it doesn't need to be anything official. If you have the Groq and Safe Browsing keys, paste them in the matching lines. Leave the rest as-is.
python manage.py migrate
This builds the SQLite database along with the risk rule table, the blacklist table, and everything else. No separate database server to install.
python manage.py createsuperuser
Pick a username and password you'll remember. You'll need this to open the moderation queue and edit risk rules at /admin/.
python manage.py runserver
Leave this terminal running. Open http://127.0.0.1:8000/admin/ in your browser and log in. If you see the Django admin dashboard with the risk rules listed, the backend is done.
Open a second terminal, don't close the backend one.
cd mobileflutter pub get
Open lib/core/network/dio_client.dart. You'll find a base URL set to http://10.0.2.2:8000/api/v1/.
http://192.168.1.7:8000/api/v1/. Find your IP with ipconfig on Windows or ifconfig on macOS.http://localhost:8000/api/v1/.If you changed the IP, also add it to ALLOWED_HOSTS in the Django settings file, and restart the backend server.
flutter run
First build takes a while. Gradle downloads half the internet. Second run onwards it's fast.
Nine times out of ten this is the base URL in dio_client.dart. Second most likely: you started the backend with runserver without a host, so it's only listening on localhost. For a physical device, run it as python manage.py runserver 0.0.0.0:8000 so it accepts connections from your phone. Also check your laptop's firewall isn't blocking port 8000 — Windows Defender does this silently.
Your .env file either doesn't exist or the key line is blank. Django refuses to start without it. Go back to Step 4.
Permission wasn't granted. Uninstall the app from the device and reinstall — the permission prompt only appears on first launch, so if you tapped "Deny" once you're stuck until reinstall. Emulators also need their camera set to "Webcam0" in the AVD settings, otherwise there's genuinely nothing to show.
Run flutter clean, then flutter pub get again. If it still fails, check flutter --version — anything below 3.10 will complain about the Dart SDK constraint.
/admin/ and shows risk rules.If step 3 gives you a verdict, you're finished. Everything else is just extra confirmation.
Our team is here to assist you with installation and setup.