1οΈβ£ Project Overview
2οΈβ£ VS Code & Android Studio Setup
3οΈβ£ Frontend: Flutter & Dart Configuration
4οΈβ£ Android & iOS Setup
5οΈβ£ Pubspec.yaml Dependencies
6οΈβ£ Major Screens & UI Implementations
7οΈβ£ Blockchain & SHA-256 Hashing
8οΈβ£ Blockchain Technologies
9οΈβ£ Immutable Data & Blockchain Verification
π Firebase Backend Setup
1οΈβ£1οΈβ£ CSV-based User Registration
1οΈβ£2οΈβ£ Firebase Authentication & Storage
1οΈβ£3οΈβ£ Complete App Workflow
1οΈβ£4οΈβ£ Verification Process & Tamper-Proof Certification
1οΈβ£5οΈβ£ Facial Recognition for Student Authentication
1οΈβ£6οΈβ£ User Roles & Permissions
1οΈβ£7οΈβ£ Project Structure Breakdown
1οΈβ£8οΈβ£ Git Cloning & Usage
1οΈβ£9οΈβ£ Deployment Guide
2οΈβ£0οΈβ£ Screenshots & Video Demo
2οΈβ£1οΈβ£ Contact Details
2οΈβ£2οΈβ£ Conference Presentation Details
2οΈβ£3οΈβ£ Future Enhancements
CertifySecure is an innovative application that provides a tamper-proof certification system for students, ensuring security and authenticity through blockchain technology, facial recognition, and Firebase authentication.
β
π Blockchain-Powered Certificate Storage: Immutable certificate hashes stored on Ethereum blockchain.
β
π€ Facial Recognition for Secure Login: Flask-based biometric authentication for added security.
β
βοΈ Secure File Storage on Firebase: Ensures original certificates are safely stored in the cloud.
β
π Real-Time Verification for Recruiters: Instant validation of certificate authenticity.
β
π Multi-Platform Support: Runs seamlessly on Android, iOS, Web, and Desktop.
β
π CSV-Based Bulk Registration: Enables fast mass user onboarding.
πΉ Essential Plugins:
π Flutter & Dart β For Flutter app development.
π Solidity β For smart contract development.
πΉ Recommended Settings: (Modify settings.json
to ensure a smooth dev experience.)
{
"editor.formatOnSave": true,
"dart.previewFlutterUiGuides": true,
"dart.openDevTools": "flutter"
}
πΉ Required Plugins:
π Flutter & Dart SDKs β Enable Flutter development.
πΉ Device Setup:
π Enable Developer Mode & USB Debugging: On a physical Android device, enable USB debugging via Developer Options.
π Set Up Emulator: Open AVD Manager β Create a virtual device β Choose appropriate API level & specs.
Follow the official Flutter installation guide based on your OS.
Before starting, verify your setup:
flutter doctor
flutter pub get
flutter run
β
Blazing-Fast Performance: Compiles to native code for smooth execution.
β
Productivity Boost: Hot reload for instant UI updates.
β
Cross-Platform Support: Single codebase for Android, iOS, Web, and Desktop.
- π οΈ Configure
android/app/build.gradle
: Set up signing keys, version codes, and required permissions. - π Enable MultiDex: If needed, enable MultiDex for compatibility with numerous dependencies.
- π» Run
pod install
in theios/
directory to install CocoaPods dependencies. - π Configure Xcode with
GoogleService-Info.plist
for Firebase integration. - π± Ensure devices/emulators are connected and properly configured before running the app.
firebase_core
,firebase_auth
β Handles Firebase initialization & user authentication.
crypto
,encrypt
,pointycastle
β Provides SHA-256 hashing & AES encryption functionalities.
web3dart
,walletconnect_dart
β Enables Ethereum blockchain interactions & wallet connections.
google_mlkit_face_detection
,camera
β Manages face detection & image capture.
dio
,http
,file_picker
β Handles API requests & file uploads.
animate_do
,cupertino_icons
β Enhances animations & iconography.
- Description: Initial welcome screen displaying app branding & user role selection.
- Files:
splash_screen.dart
,role_selection_screen.dart
- Description: Dedicated login interfaces for students, teachers, and recruiters.
- Files:
login.dart
,face_recognition_screen.dart
,teacher_login.dart
,company_login.dart
- Description: Displays certificate statuses, upload options, and student profile details.
- Files:
student_dashboard.dart
,home_screen.dart
,profile_screen.dart
- Description: Enables students to upload & view their certificates with verification status.
- Files:
upload_certificate_screen.dart
,view_certificates_screen.dart
- Description: Allows teachers to verify certificates and manage pending verifications.
- Files:
teacher_dashboard.dart
,teacher_home_screen.dart
,teacher_profile_screen.dart
,pending_certificate_screen.dart
- Description: Enables recruiters to scan QR codes and verify certificates.
- Files: Located under the
company/
folder.
Certificates are hashed to generate a unique SHA-256 fingerprint.
import 'dart:io';
import 'package:crypto/crypto.dart';
import 'dart:convert';
class CertificateHasher {
static Future<String> generateHash(File certificate) async {
final bytes = await certificate.readAsBytes();
final hash = sha256.convert(bytes);
return hash.toString();
}
}
The certificate hash is stored on the Ethereum blockchain for authenticity verification.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract CertificateRegistry {
struct Certificate {
string studentId;
string hash;
uint256 timestamp;
}
mapping(string => Certificate) private certificates;
function storeCertificateHash(string memory studentId, string memory hash) public {
certificates[studentId] = Certificate(studentId, hash, block.timestamp);
}
function getCertificateHash(string memory studentId) public view returns (string memory) {
return certificates[studentId].hash;
}
}
Handles communication with the Ethereum blockchain via web3dart
.
import 'package:web3dart/web3dart.dart';
import 'package:http/http.dart';
class BlockchainService {
final String rpcUrl = "https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID";
late Web3Client client;
BlockchainService() {
client = Web3Client(rpcUrl, Client());
}
Future<String> getCertificateHash(String studentId) async {
// Call smart contract function
final result = await client.call(
contract: myContract,
function: getHashFunction,
params: [studentId],
);
return result.first.toString();
}
}
π οΈ Remix IDE:
- π Purpose: A browser-based IDE for developing, deploying, and testing smart contracts written in Solidity.
- π§ Usage: Utilized for writing and deploying the
certificate_registry.sol
smart contract.
π¦ MetaMask:
- π Purpose: A browser extension and mobile app that enables users to interact with the Ethereum blockchain securely.
- π Usage: Manages Ethereum accounts and facilitates transaction signing.
π Sepolia Test Network:
- βοΈ Purpose: A test network for Ethereum, allowing developers to test smart contracts without using real Ether.
- π¬ Usage: Provides a safe environment for smart contract deployment and testing.
π Infura:
- π‘ Purpose: Offers scalable Ethereum infrastructure and APIs.
- β‘ Usage: Connects the app to the Ethereum network for seamless blockchain interactions.
π» Solidity:
- π Purpose: A programming language used to write Ethereum smart contracts.
- π¨ Usage: Develops the smart contract responsible for storing certificate hashes.
π Immutable Data:
- Once a certificate hash is stored on the blockchain, it cannot be modified or deleted, ensuring data integrity and security.
β Verification Process:
- Step 1: Teachers verify certificates by generating a fresh SHA-256 hash of the uploaded document.
- Step 2: The generated hash is compared against the hash stored on the blockchain.
- Step 3: If the hashes match, the certificate is verified; otherwise, tampering is detected.
π₯ Firestore Database:
- π Purpose: Stores user data, certificate metadata, and verification statuses.
- π Collections:
users
,certificates
βοΈ Firebase Storage:
- ποΈ Purpose: Securely stores original certificate files.
π Firebase Authentication:
- π Purpose: Manages user sign-up, login, and authentication through various methods.
π« Firebase App Check:
- π‘οΈ Purpose: Ensures only verified app instances can access backend resources, enhancing security.
π Bulk Registration:
- Users can be onboarded in bulk using a CSV file, streamlining the registration process.
π οΈ Automation Script:
- π Script: The
import_users.js
file infirebase-admin-server/
reads the CSV, validates data, and registers users in Firebase Authentication and Firestore.
π Example CSV Format:
type,email,uid,password,role,name,imagePath,department,branch,course,year,semester
student,[email protected],UID123,pass123,student,Student Name,/path/to/image.jpg,CSE,Computer Science,BTECH,3,6
teacher,[email protected],UID456,pass456,teacher,Teacher Name,,,,,,
company,[email protected],UID789,pass789,company,Company HR,,,,,,
π Registration Process: 1οΈβ£ Read CSV File: Extract user details from the uploaded CSV. 2οΈβ£ Validate Data: Ensure all required fields are present and correctly formatted. 3οΈβ£ Register Users: Add users to Firebase Authentication and Firestore.
π Firebase Authentication:
- β Supports: Email/Password, Google Sign-In, and biometric login (facial recognition).
- π Security Rules: Ensure only authorized users can access or modify data.
ποΈ Firestore Database:
- π Purpose: Stores user profiles, certificate data, and verification logs securely.
βοΈ Firebase Storage:
- π Purpose: Provides secure storage for original certificate files, preventing unauthorized access.
π« Firebase App Check:
- π Purpose: Ensures only verified app instances can interact with backend resources, minimizing security risks.
- Process: Students register and log in using Firebase Authentication.
- Security: Facial recognition ensures secure authentication and prevents impersonation.
- Process: Students upload certificates.
- Hashing: A SHA-256 hash is generated for each certificate file.
- Process: The certificate hash is stored immutably on the Ethereum blockchain via a smart contract.
- Process: Teachers review and verify certificates.
- Update: Verified certificates are recorded in Firestore for easy access.
- Immutable Data: Blockchain ensures that once stored, data cannot be modified.
- Tampering Detection: Any alteration in a certificate results in a different hash, flagging potential fraud.
- Authenticity Check: Teachers verify certificates before approval.
- Trust: Blockchain-stored hashes provide cryptographic proof of authenticity.
- Implementation: OpenCV-powered Flask microservice.
- Repository: Face Recognition Service Repository
- Enhanced Security: Only verified students can log in and upload certificates.
- Prevention: Eliminates fraudulent login attempts.
Role | Permissions |
---|---|
π Student | Upload certificates, View own records, Request verification |
π©βπ« Teacher | Verify certificates, Approve/Reject uploads, Manage records |
π’ Company | Validate certificate authenticity, Access verification history |
certify_secure_app/
βββ .idea/ # π οΈ IntelliJ & Android Studio settings
βββ .vscode/ # π VS Code workspace settings and recommended extensions
βββ android/ # π€ Android-specific configuration files
β βββ gradle/ # π¨ Gradle build scripts and configurations
β βββ app/ # π± Main Android application code, resources, manifests
β βββ build.gradle # π οΈ Android Gradle configuration file
β βββ other Android config files
βββ assets/ # πΌοΈ Static assets (images, icons, fonts)
β βββ images/ # π· Application images (logos, splash screens, etc.)
βββ build/ # βοΈ Compiled build artifacts (auto-generated)
βββ firebase-admin-server/ # π₯ Firebase Admin SDK scripts for batch operations
β βββ node_modules/ # π¦ Node.js dependencies
β βββ import_users.js # π CSV user import script
β βββ package.json # π Node.js dependency definitions
β βββ package-lock.json # π Locked dependency versions
βββ ios/ # π iOS-specific configuration files (Xcode projects, etc.)
βββ lib/ # π» Flutter application source code
β βββ CertifySecure/ # π― Main application folder
β β βββ contracts/ # π Solidity smart contracts for blockchain integration
β β β βββ certificate_registry.sol # π Smart contract for certificate hashing
β β βββ models/ # ποΈ Data models
β β β βββ certificate_model.dart # π Dart model for certificate data
β β βββ Screen/ # π¨ UI Screens (organized by role/function)
β β β βββ common/ # π Shared UI components
β β β βββ company/ # π’ Screens for recruiter/company users
β β β βββ login/ # π Authentication screens
β β β β βββ face_recognition_screen.dart # π€ Face recognition login
β β β β βββ login.dart # π² Standard login screen
β β β βββ main/ # π Main entry/home screens
β β β βββ student/ # π Student-specific screens
β β β βββ teacher/ # π©βπ« Teacher-specific screens
β β βββ Services/ # π§ Backend services
β β β βββ blockchain_service.dart # βοΈ Blockchain interactions
β β β βββ storage_utils.dart # βοΈ Firebase Storage utility functions
β β βββ utils/ # π οΈ Utility functions
β β βββ Widgets/ # π· Reusable UI components
β βββ main.dart # π App entry point
βββ test/ # π§ͺ Unit & widget tests
βββ .gitignore # π« Files/directories ignored by Git
βββ analysis_options.yaml # π Linting and code analysis rules
βββ pubspec.lock # π Locked dependency versions
βββ pubspec.yaml # π Flutter dependency & asset declarations
βββ README.md # π Project documentation (this file)
git clone https://github.com/your-org/certifysecure.git
cd certify_secure_app
flutter pub get
flutter run
Generate an APK for Android devices:
flutter build apk
Prepare the app for iOS deployment:
flutter build ios
Deploy the web version using Firebase:
firebase deploy
- Use Remix IDE to deploy the smart contract on the Sepolia Test Network.
- Verify contract deployment using Etherscan.
Ensure the deployed contract address is updated in the blockchain service file for accurate interactions.
Create a render.yaml
file for deployment:
services:
- type: web
name: certifysecure-api
env: python
buildCommand: pip install -r requirements.txt
startCommand: python main.py
Deploy using GitHub integration or manual deployment through Render's web dashboard.
- π Project Lead: Sri Nitish Kamisetti
- π§ Email: [email protected]
- π LinkedIn: Profile
- π» GitHub: Profile
CertifySecure: Blockchain-Integrated Student Certificate Validation App with Flutter
- Event: International Conference on Innovative Product Design and Intelligent Manufacturing Systems (ICIPDIMS 2024)
- Organizer: AITAM College
- Date: December 4, 2024
- Mode: Remote Presentation
- Certificate: π Click Here to access the Certificate.
In the education sector, students receive certificates upon completion of their studies. Traditional certificate validation methods require manual verification, which can be tampered with. CertifySecure leverages blockchain technology to ensure certificates remain immutable and verifiable. By integrating facial recognition authentication, the project prevents impersonation while enhancing security. The app is developed using Flutter and Firebase, with Ethereum blockchain storing certificate hashes for tamper-proof verification.
Certificate Verification | Facial Recognition | Secure Authentication | Blockchain | Flutter | Remix IDE | MetaMask
π Click Here to access the slides.
π Click Here to access the slides.
- Planned Implementation: QR code scanning to validate certificates instantly.
- Purpose: Recruiters can scan a QR code linked to a certificate for on-the-spot verification.
- Strengthening authentication methods.
- Exploring AI-powered anomaly detection for fraudulent certificate submissions.