A Flutter Android app that checks links and file hashes with multi-engine VirusTotal and uses Gemini to turn results into a plain report with risk level and advice.

CyberShield is a mobile app that helps users check whether files and web links are safe before dealing with them, carried out by a team of students with technical assistance from Techno Enjaz. The app sends the link, or the file's SHA-256 digital fingerprint, to VirusTotal, which aggregates the verdicts of dozens of anti-malware engines, then passes the raw technical result to Google Gemini to turn it into a simplified security report that explains the risk level and its reason and gives preventive advice.
The app was built with Flutter for Android, with a serverless backend on Cloudflare Workers and the Hono framework, a Cloudflare D1 database, Cloudflare KV caching, and JWT authentication. The documented outcome is a working prototype that scans links and files and presents a report non-specialists can understand, with a scan history and account management; the book does not include quantitative measurements of detection accuracy or response time.
| Item | Details |
|---|---|
| Project type | AI-assisted cybersecurity mobile app |
| Field | Cybersecurity, URL and file scanning, generative AI |
| Project status | Working prototype on Android with a cloud backend |
| Techno Enjaz role | Technical support and assistance to the students during project development |
| Core technologies | Flutter, Riverpod, GoRouter, Dio, Cloudflare Workers, Hono, Cloudflare D1, Cloudflare KV, VirusTotal API, Google Gemini API, JWT |
| Outputs | Simplified security report (risk level, summary, preventive advice), VirusTotal result details, scan history, usage statistics |
Smartphones have become the main platform for everyday transactions, which makes them a direct target for phishing and malware that usually arrive through a link or a file. The project identifies three gaps in existing solutions:
CyberShield addresses these gaps with a hybrid architecture: multi-engine scanning through a cloud service instead of a single local engine, sending a file's fingerprint instead of the file itself to reduce data usage, and an AI agent that turns the result into plain language.
The project was carried out academically by the students, with technical assistance and support from Techno Enjaz during development. It is presented among the office's work as an example of its support for cybersecurity apps that combine cloud scanning services with language models in mobile applications.
A scan request follows a sequential path from user input to the displayed report:
VirusTotal and Gemini are contacted only from the backend, never directly from the app, which protects the API keys and keeps data exchange organized.
The system follows a multi-layer architecture that separates the interface from business logic and external services:
| Layer | Role |
|---|---|
| User layer | Receives user input and displays results, with no processing logic |
| Application layer (Flutter) | Manages the interface, sends requests, receives responses, and displays reports |
| Backend layer (Cloudflare Workers + Hono) | User verification, scan data management, database access, and coordination with external services |
| External services layer | VirusTotal API for scanning and Google Gemini API for the simplified report |
| Component | Function in the project |
|---|---|
| Cloudflare Workers | Serverless runtime on the edge network for handling requests |
| Hono | Building REST APIs, routing, and applying middleware |
| Middleware | Intercepting requests, verifying the JWT, and handling errors |
| Cloudflare D1 | SQLite-based relational database for users, scans, and results |
| Cloudflare KV | Key-value cache to reduce repeated requests to external services |
| JWT | Stateless authentication; the token is attached to the Authorization header of every request |
The database has five related tables centered on the scans table:
| Table | Contents |
|---|---|
| Users | Basic user data and the hashed password; linked to scans in a one-to-many relationship |
| Scans | Each scan: type, target value, status, and date |
| VT_Results | Engine counts per verdict, the original report link, and the raw JSON response |
| AI_Analyses | Risk level, simplified summary, preventive guidance, and report date |
| File_Metadata | File name, size, type, and hash, without storing the file itself |
| Screen | Function |
|---|---|
| Home | Overall device status, file and link scan options, and recent scans |
| Link scan | URL input with options such as HTTPS-only scanning and language selection |
| Scan result | Link status, security summary, preventive advice, VirusTotal details, and the option to open the link once it is confirmed safe |
| Scan history | All previous scans with search, filtering, and the status of each scan (safe or malicious) |
| Profile | User data and statistics such as the number of links and files scanned and threats detected |
| Settings | Profile editing, notifications, privacy and security, scan-provider API keys, app language, and sign-out |
The system design also defines an administrator role limited to managing user accounts and monitoring API usage, without involvement in the scans themselves.
The book reports that the app successfully performs file and link scans and presents the results clearly, while keeping a scan history and managing accounts and settings in an easy-to-use interface. The main achievements include:
The book contains no quantitative measurements of detection rate, false alarms, response time, or battery usage. A response time of no more than 3 seconds for repeated queries was set as a target in the project scope, not a measured result. The accuracy figures that appear in the book belong to earlier studies reviewed in the background chapter and are not results of this app.
According to the directions set out in the project, CyberShield could be extended by:
The app stores account data, the history of scanned links, and file metadata, and it sends links and file hashes to external services. Any real-world use therefore needs a clear policy on what is sent to VirusTotal and Gemini, how long scan history is retained, and who can access it.
If you are working on an AI-powered security tool for scanning files and links and need technical help developing the idea or building a prototype, you can contact the Techno Enjaz office to discuss your project's requirements and the appropriate scope of support.
An Android cybersecurity app built by a team of students with technical assistance from Techno Enjaz that checks links and files before users deal with them. It uses VirusTotal for multi-engine scanning and Google Gemini to turn the technical result into a simplified report with a risk level and preventive advice.
The app generates a SHA-256 hash of the file and sends it through the backend to VirusTotal. If the service already knows the hash, its report is retrieved directly without uploading the actual file, which reduces data usage and limits what is sent. Links are submitted as they are for analysis.
The mobile app is built with Flutter using Riverpod, GoRouter, Dio, and Flutter Secure Storage. The backend runs on Cloudflare Workers with the Hono framework, a Cloudflare D1 database, Cloudflare KV caching, and JWT authentication, and it integrates the VirusTotal API and the Google Gemini API.
The app shows the status of the link or file, a simplified security summary with a risk level, and preventive advice generated by Gemini, with the option to view the VirusTotal engine details. Each scan is saved in a searchable, filterable history, and usage statistics appear on the profile screen.
The app runs on Android only, is limited to static analysis based on VirusTotal results without dynamic analysis or real-time protection, and requires an internet connection. The book contains no quantitative measurements of detection accuracy or response time; the 3-second figure for repeated queries is a target in the project scope, not a measured result.
Reach out to Techno Enjaz engineering team to discuss technical feasibility, prototype hardware, and development scope.