Skip to content

Latikeshh/BlockChain_For_Student_Record_System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ BlockChain Student Verification System

Node.js React MongoDB Express.js JWT Auth SHA-256 Encryption License MIT

Secure blockchain-based student profile verification system | MERN Stack | Cryptographic Encryption | Educational Data Management | Student Records Verification

A production-ready blockchain-inspired student data management platform combining MERN stack (MongoDB, Express, React, Node.js) with SHA-256 encryption for immutable student record storage and verification workflows.

πŸ”‘ Keywords

blockchain student-verification MERN-stack React Node.js MongoDB Express JWT-authentication SHA-256-encryption educational-system data-integrity student-records teacher-dashboard form-validation file-upload REST-API full-stack academic-management


πŸ“‹ Table of Contents

  1. Problem Statement
  2. Overview
  3. Features & Functionality
  4. Technologies & Stack
  5. Architecture
  6. Installation
  7. Usage
  8. API Endpoints
  9. Project Structure
  10. Security Features
  11. Key Workflows
  12. GitHub Topics & Search Tags
  13. Use Cases
  14. Performance Characteristics
  15. Testing & Quality Assurance
  16. Deployment Guide
  17. Troubleshooting
  18. Future Enhancements
  19. Additional Resources
  20. Contributors
  21. License
  22. Support & Contact
  23. Advantages & Disadvantages

❓ Problem Statement

Challenge: Educational institutions need secure, tamper-proof student record management with transparent verification workflows.

Solution: This system provides:

  • βœ… Immutable Records: Blockchain-style encrypted storage prevents unauthorized modifications
  • βœ… Dual Verification: Teachers review and approve student profiles with detailed feedback
  • βœ… Change Request System: Students can request modifications before final verification
  • βœ… Real-time Tracking: Both students and teachers get instant verification status updates
  • βœ… Audit Trail: Complete history of all requests, approvals, and rejections
  • βœ… Encrypted Data: SHA-256 encryption ensures sensitive student data remains secure

🎯 Overview

This full-stack application implements a blockchain-inspired approach to storing student academic records:

  • πŸ” Encrypted Storage: Student profile data encrypted with SHA-256 before storage
  • ⛓️ Blockchain Blocks: Each record stored as immutable cryptographic blocks
  • πŸ”’ Profile Lock: Once verified, records become permanent and unmodifiable
  • πŸ‘οΈ Teacher Review: Comprehensive verification workflow with section-by-section review
  • πŸ“‹ Change Requests: Students can request profile updates before initial lock
  • πŸ“Š Real-time Analytics: Dashboard with verification statistics and charts
  • πŸ”‘ JWT Authentication: Secure token-based access control
  • πŸ“± Responsive UI: Professional, mobile-friendly interface

The system ensures data integrity, prevents unauthorized modifications, and provides a transparent audit trail of all student records.


✨ Features & Functionality

πŸ‘¨β€πŸŽ“ Student Portal Features

  • Complete Profile Management

    • Multi-section form (Basic Info, Contact, Guardian Details, Academic)
    • Photo upload with validation
    • Client-side and server-side form validation
    • Profile lock mechanism after submission
  • Real-time Verification Status

    • Check verification approval status instantly
    • View verification reason and feedback
    • Track profile submission history
  • Change Request System

    • Submit change requests with categories (Basic Info, Contact, Guardian, Academic, Other)
    • View request history with statuses (Pending, Approved, Rejected)
    • Optional notes and feedback from administrators
    • Track all modification attempts
  • Password Reset

    • Forgot password functionality
    • Email-based password reset
    • Secure token-based verification
  • Teacher Request System

    • Request teachers to add/modify information
    • Track request status

πŸ‘¨β€πŸ« Teacher/Admin Dashboard

Note: the front‑end includes a stubbed administrator login (email admin@gmail.com/admin1). It stores a special token (admin-token) locally; the backend middleware now treats this value as a valid admin credential so the admin panel can load without a real JWT.

  • Pending Students Management

    • View all pending verification students
    • Modal-based information display with all student fields
    • Section review checkboxes (enforced verification flow)
    • Dual-confirmation warning before final approval
    • Request changes with targeted feedback (teacher can pick specific sections; student may edit those fields before final verification)
  • Student Verification List

    • Complete list of verified students
    • Search and filter functionality
    • Enrollment and status tracking
  • Change Requests Review

    • Review student change request submissions
    • Approve or reject with detailed feedback
    • Track modification request history
  • Analytics Dashboard

    • Real-time statistics cards (Total, Verified, Pending)
    • Graphical verification overview with stacked bar chart
    • Student count analytics
    • Trend monitoring
  • Password Reset Requests Management

    • View student password reset requests
    • Approve or reject password changes
    • Security feature for account recovery

πŸ›‘οΈ Admin Panel Features

  • Dashboard

    • Overview statistics
    • Quick access to all sections
  • Student Management

    • View all students (verified and pending)
    • View verified students
    • View pending students
    • Search and filter functionality
  • Teacher Management

    • Add new teachers
    • Edit teacher information
    • Delete teachers
    • View all teachers
  • Password Reset Requests

    • View all password reset requests
    • Approve or reject requests
    • Track request history
  • Settings

    • Admin settings configuration

πŸ›  Technologies & Stack

Backend Technologies

  • Node.js v14+: JavaScript runtime
  • Express.js: RESTful API framework
  • MongoDB: NoSQL database
  • Mongoose: ODM (Object Data Modeling)
  • JWT: JSON Web Token authentication
  • bcryptjs: Password hashing
  • crypto: Node.js encryption module (SHA-256)
  • Multer: File upload middleware
  • dotenv: Environment configuration
  • cors: Cross-origin resource sharing

Frontend Technologies

  • React 18: Modern UI library
  • React Router v6: Client-side routing
  • React Bootstrap 5: UI component library
  • Hooks: useState, useEffect, useContext
  • CSS3: Gradient backgrounds, grid layouts, animations
  • CSS Variables: Themeable styling
  • Custom Dialog: Modal/notification component

Development Tools

  • Git: Version control
  • npm: Package management
  • ESLint: Code quality (optional)
  • Postman: API testing (optional)

πŸ— Architecture

System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     React Frontend                       β”‚
β”‚         (Students, Teachers, Admin Panels)               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚ HTTP/REST API
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Express.js Backend                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Auth Routes  β”‚ Student APIs β”‚ Teacher APIs β”‚ Admin APIs β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚              β”‚              β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    MongoDB Database     β”‚ JWT Auth β”‚ Encryption Utils  β”‚
β”‚  (Students, Profiles,   β”‚ Middlewareβ”‚ (Crypto Module) β”‚
β”‚   Requests, Verification)β”‚          β”‚                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow

  1. Account creation – when a teacher (or admin) creates a student record the system only stores basic credentials in the students collection. An example document might look like:

    {
      "_id": "642f6a...",
      "name": "Niket",
      "enroll": "12345678901",
      "password": "$2b$10$yVuX...",
      "verify": false,
      "isDeleted": false,
      "createdAt": "2026-02-28T14:14:30.028Z",
      "updatedAt": "2026-02-28T14:14:30.028Z",
      "__v": 0
    }

    This record is purely for authentication and verification status. Profile fields such as address, marks, etc. are not stored here.

    At this point there is no blockchain data involved; the student may later log in and complete the full profile.

  2. Student fills profile form – when the student submits the profile, the backend stores the raw values in a temporary studentforms collection (plain Mongo document). This allows teachers to review the full profile in clear text before approving it. Only after a teacher verifies the record does the server encrypt the data and transfer it into the studentprofiles collection (our blockchain store).

    Plain form documents (before verification) look like:

    {
      "_id": "642f8c...",
      "studentId": "642f6a...",
      "name": "Niket",
      "enroll": "12345678901",
      "branch": "Computer",
      "year": "2nd Year",
      "dob": "2004-05-01",
      "gender": "Male",
      "phone": "9876543210",
      "email": "nik@gmail.com",
      "address": "...",
      "fatherName": "...",
      "motherName": "...",
      "parentPhone": "...",
      "sem1": "80",
      "sem2": "82",
      "sem3": "79",
      "sem4": "85",
      "sem5": "90",
      "sem6": "",
      "photo": "abc123.jpg",
      "status": "pending",
      "createdAt": "2026-02-28T15:00:00Z",
      "updatedAt": "2026-02-28T15:00:00Z",
      "__v": 0
    }

    Example block document created on verification:

    {
      "_id": "69a97f5691116f83ca3502ed"
      },
      "previousHash": {
        "$oid": "69a97d0091116f83ca3502bf"
      },
      "hash": "6dafde63fbcc73c7ce22478d619360a00787f1b11b14283c60fd9337...",
      "createdAt": {
        "$date": "2026-03-05T13:04:22.936Z"
      },
      "updatedAt": {
        "$date": "2026-03-05T13:04:22.936Z"
      }
    }

    Each block contains:

    • _id: Unique ObjectId for this block (generated by MongoDB)
    • previousHash: ObjectId of the previous block (creating the blockchain chain)
    • hash: SHA-256 encrypted JSON string containing all student profile data
    • createdAt/updatedAt: Timestamps

    The blockchain works as follows:

    1. First block has previousHash as null (genesis block)
    2. Each subsequent block stores the _id of the previous block in previousHash
    3. This creates an immutable chain - if any block is modified, the chain breaks
    4. The hash field contains the encrypted student data

    At this stage the student’s profile is locked (isProfileLocked toggled when the response returns) and the only place the profile data lives is inside the encrypted hash field. Teacher verification is a separate step that does not move or duplicate this block – it only updates the verify flag on the original students document.

  3. Teacher review & verification – teachers load pending students via /student/pending, view the decrypted profile (pulled from the blockchain block), and choose to verify or reject. Verifying simply sets verify: true on the original students document – the encrypted block remains unchanged. The system therefore keeps a clear separation between the normal credential record and the immutable blockchain record.

  4. Post‑verification – once verified a student’s dashboard and teacher panel reflect the verify flag, and subsequent requests (e.g. admin queries) can filter on that field. All future profile data is still referenced by the original block number; no data is β€œmoved” between collections, but the verification status ties the two together.

Student Workflow

  1. Login β†’ Navigate to Student Dashboard
  2. Complete Profile β†’ Fill all fields from 4 sections + Upload photo
  3. Submit Profile β†’ Profile saved and locked on blockchain
  4. Teacher Verification β†’ Teacher views and marks record verified

πŸ“¦ Installation

Prerequisites

  • Node.js v14 or higher
  • npm v6 or higher
  • MongoDB running locally or cloud connection

Backend Setup

cd BackEnd/

# Install dependencies
npm install

# Create .env file
# Add: MONGO_URI=<your_mongodb_uri>
#      JWT_SECRET=<your_jwt_secret>
#      PORT=8000

# Start backend server
node app.js
# Server runs on http://localhost:8000

Frontend Setup

cd FrontEnd/

# Install dependencies
npm install

# Start React development server
npm start
# App runs on http://localhost:3000

πŸš€ Usage

Student Workflow

  1. Login β†’ Navigate to Student Dashboard
  2. Complete Profile β†’ Fill all fields from 4 sections + Upload photo
  3. Submit Profile β†’ Profile saved and locked on blockchain
  4. Check Status β†’ Student β†’ Verified Status page
  5. Request Changes β†’ Teacher picks one or more form sections (basic, contact, guardian, academic) and optionally adds a note; student can then update their profile before verification
  6. Track History β†’ View all requests with approval/rejection status
  7. Forgot Password β†’ Use forgot password to reset credentials
  8. Teacher Request β†’ Request teachers to add/modify information

Teacher Workflow

  1. Login β†’ Navigate to Teacher Dashboard
  2. View Analytics β†’ See summary cards + verification chart
  3. Review Pending β†’ Go to Pending Students β†’ Click View
  4. Examine Fields β†’ Check each section using review checkboxes
  5. Verify or Request Changes:
    • Verify: All checkboxes β†’ Dual confirmation β†’ Student verified
    • Request Changes: Teacher selects the offending sections (basic/contact/guardian/academic) β†’ Add an optional note β†’ Send feedback; rejected students regain edit access
  6. View Verified Students β†’ Complete list of verified records
  7. Manage Requests β†’ Review/approve/reject student change requests
  8. Password Reset Requests β†’ Review and process student password reset requests

Admin Workflow

  1. Login β†’ Navigate to Admin Dashboard (use admin@gmail.com / admin1)
  2. View Dashboard β†’ Overview statistics and quick actions
  3. Manage Students β†’ View all, verified, or pending students
  4. Manage Teachers β†’ Add, edit, or delete teachers
  5. Password Reset Requests β†’ Review and process password reset requests
  6. Settings β†’ Configure admin settings

πŸ”Œ API Endpoints

Authentication

POST   /student/signup              - Student registration
POST   /student/login               - Student login
POST   /teacher/login               - Teacher login
POST   /student/forgot-password     - Request password reset (student)
POST   /student/reset-password      - Reset password with token (student)
POST   /teacher/forgot-password     - Request password reset (teacher)
POST   /teacher/reset-password      - Reset password with token (teacher)

Student Profile

POST   /student/save                - Create/save profile (encrypted)
GET    /student/me                  - Get own profile with verify status
GET    /student/view/:studentId     - Get student profile by ID (decrypted)
DELETE /student/delete              - Delete profile
POST   /student/form                - Submit student form for review
GET    /student/form                - Get student form data
PUT    /student/form/:id             - Update student form

Student Verification

GET    /student/pending             - Get pending students (teacher only)
PUT    /student/verify/:id          - Verify student (teacher only)
PUT    /student/unverify/:id        - Unverify student (admin only)
PUT    /student/reject/:id          - Send change request feedback
GET    /student/verified            - Get verified students
GET    /student/verified/count      - Count verified students
GET    /student/pending/count       - Count pending students

Change Requests

POST   /student/request             - Submit change request
GET    /student/request/me           - Get own requests
GET    /student/request/all          - Get all requests (teacher)
PUT    /student/request/:id          - Approve/reject request (teacher)

Teacher Requests (Student requesting teacher info changes)

POST   /student/teacher-request     - Submit teacher request
GET    /student/teacher-request/me  - Get own teacher requests
GET    /student/teacher-request/all - Get all teacher requests (admin)
PUT    /student/teacher-request/:id - Approve/reject teacher request (admin)

Contact

POST   /contact                     - Submit contact form
GET    /contact                     - Get all contacts (admin)
DELETE /contact/:id                 - Delete contact (admin)

Admin

POST   /teacher/add                 - Add new teacher
GET    /teacher/all                 - Get all teachers
PUT    /teacher/:id                 - Update teacher
DELETE /teacher/:id                 - Delete teacher
GET    /student/password-reset-requests      - Get password reset requests
PUT    /student/password-reset-requests/:id  - Approve/reject password reset

πŸ“ Project Structure

BlockChain_For_Student_Record_System-main/
β”‚
β”œβ”€β”€ BackEnd/
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   └── db.js                      - MongoDB connection
β”‚   β”œβ”€β”€ controller/
β”‚   β”‚   β”œβ”€β”€ BlockController.js         - Blockchain operations
β”‚   β”‚   β”œβ”€β”€ contactController.js       - Contact form handling
β”‚   β”‚   β”œβ”€β”€ passwordResetController.js - Student password reset
β”‚   β”‚   β”œβ”€β”€ requestController.js       - Change request handling
β”‚   β”‚   β”œβ”€β”€ studentFormController.js   - Student form CRUD
β”‚   β”‚   β”œβ”€β”€ StudentLoginController.js  - Student authentication
β”‚   β”‚   β”œβ”€β”€ studentProfileController.js - Profile management
β”‚   β”‚   β”œβ”€β”€ TeacherLoginController.js - Teacher authentication
β”‚   β”‚   └── teacherPasswordResetController.js - Teacher password reset
β”‚   β”‚   └── teacherRequestController.js - Teacher request handling
β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”œβ”€β”€ auth.js                    - JWT verification
β”‚   β”‚   └── upload.js                  - Photo upload config
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ BlockModel.js              - Blockchain blocks
β”‚   β”‚   β”œβ”€β”€ ContactModel.js           - Contact messages
β”‚   β”‚   β”œβ”€β”€ RequestModel.js           - Change requests
β”‚   β”‚   β”œβ”€β”€ StudentFormModel.js        - Student forms
β”‚   β”‚   β”œβ”€β”€ StudentModel.js           - Student credentials
β”‚   β”‚   β”œβ”€β”€ StudentProfileModel.js    - Encrypted profiles
β”‚   β”‚   β”œβ”€β”€ TeacherModel.js           - Teacher accounts
β”‚   β”‚   └── TeacherRequestModel.js    - Teacher requests
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ BlockRoutes.js            - Blockchain routes
β”‚   β”‚   β”œβ”€β”€ contactRoutes.js          - Contact routes
β”‚   β”‚   β”œβ”€β”€ formRoutes.js             - Student form routes
β”‚   β”‚   β”œβ”€β”€ passwordResetRoutes.js   - Student password reset
β”‚   β”‚   β”œβ”€β”€ requestRoutes.js         - Request routes
β”‚   β”‚   β”œβ”€β”€ StudentLoginRoute.js      - Student auth routes
β”‚   β”‚   β”œβ”€β”€ studentProfileRoutes.js   - Profile routes
β”‚   β”‚   β”œβ”€β”€ TeacherLoginRoute.js      - Teacher auth routes
β”‚   β”‚   β”œβ”€β”€ teacherPasswordResetRoutes.js - Teacher password reset
β”‚   β”‚   └── teacherRequestRoutes.js  - Teacher request routes
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”œβ”€β”€ blockEncryption.js        - SHA-256 encryption
β”‚   β”‚   β”œβ”€β”€ encrypt.js                - Encryption utilities
β”‚   β”‚   └── teacherPermissions.js    - Teacher permissions
β”‚   β”œβ”€β”€ uploads/                      - Uploaded images
β”‚   β”œβ”€β”€ app.js                        - Express server setup
β”‚   └── package.json
β”‚
β”œβ”€β”€ FrontEnd/
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   └── index.html
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ Pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ About.js              - About page
β”‚   β”‚   β”‚   β”œβ”€β”€ Contact.js            - Contact page
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.js              - Home page
β”‚   β”‚   β”‚   β”œβ”€β”€ ResetPassword.js     - Password reset page
β”‚   β”‚   β”‚   β”œβ”€β”€ Admin/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AddTeacher.js           - Add teacher form
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminAllStudents.js     - All students list
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminDashboard.js      - Admin dashboard
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminLayout.js         - Admin layout
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminPasswordResetRequests.js - Password reset requests
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminPendingStudents.js - Pending students
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminSettings.js      - Admin settings
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminSidebar.js       - Admin navigation
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AdminVerifiedStudents.js - Verified students
β”‚   β”‚   β”‚   β”‚   └── ManageTeachers.js     - Teacher management
β”‚   β”‚   β”‚   β”œβ”€β”€ Student/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AddStudent.js         - Student profile form
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ForgotPassword.js     - Password recovery
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StudentDashboard.js  - Student dashboard
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StudentLogin.js      - Student login
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StudentProfile.js    - View profile
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StudentRequest.js    - Change request form
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StudentSearch.js     - Search students
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StudentSidebar.js    - Student navigation
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StudentStatus.js     - Verification status
β”‚   β”‚   β”‚   β”‚   └── StudentTeacherRequest.js - Teacher request form
β”‚   β”‚   β”‚   └── Teacher/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ PasswordResetRequests.js - Student password resets
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ PendingStudents.js   - Pending verification
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeacherDashboard.js  - Teacher dashboard
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeacherForgotPassword.js - Password recovery
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeacherLogin.js       - Teacher login
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeacherLayout.js     - Teacher layout
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeacherManageRequests.js - Manage requests
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeacherRequests.js   - View requests
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeacherSidebar.js    - Teacher navigation
β”‚   β”‚   β”‚   β”‚   └── VerifiedStudents.js  - Verified students list
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ CustomDialog.js         - Modal component
β”‚   β”‚   β”‚   β”œβ”€β”€ EditTeacherDialog.js   - Edit teacher modal
β”‚   β”‚   β”‚   └── StudentInfoDialog.js    - Student info modal
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   └── validation.js           - Form validation
β”‚   β”‚   β”œβ”€β”€ App.js                      - Route definitions
β”‚   β”‚   β”œβ”€β”€ Footer.js                   - Footer component
β”‚   β”‚   β”œβ”€β”€ Navbar.js                   - Navigation bar
β”‚   β”‚   β”œβ”€β”€ index.js                    - Entry point
β”‚   β”‚   └── Variables.css               - CSS variables
β”‚   └── package.json
β”‚
└── README.md

πŸ”’ Security Features

Encryption

  • Algorithm: SHA-256-ECB
  • When Applied: On profile save, before storing in database
  • Decryption: Only when viewing (real-time decryption)
  • Key Storage: Environment variable (should use secure vault in production)

Authentication

  • Method: JWT Bearer tokens
  • Expiration: Configurable (default 7 days)
  • Storage: localStorage (frontend)
  • Validation: Protected routes via middleware

Profile Lock

  • Once a student profile is saved to the blockchain block, it becomes immutable
  • Prevents tampering with verified records
  • Students must use change requests for modifications

Data Validation

  • Server-side validation on all inputs
  • Photo upload restrictions (image type + size)
  • Form validation (all fields required before submit)
  • Email and phone format validation

πŸ“Š Key Workflows

Verification Flow

Student Submits Profile
         ↓
Profile Encrypted & Locked
         ↓
Teacher Views β†’ Reviews All Sections
         ↓
   β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”
   ↓           ↓
VERIFY    REQUEST CHANGES
   ↓           ↓
VERIFIED  Student Revises
         (if not locked)

Change Request Flow

Student Submits Request
    (before lock)
         ↓
Teacher Reviews & Selects
 areas needing change
         ↓
   β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”
   ↓           ↓
APPROVE    REJECT
   ↓           ↓
Student  History
Updates  Tracking

🀝 Contributors

  • Latikesh Marathe
  • Durgesh Upasani

πŸ“„ License

This project is part of an academic blockchain initiative. For usage and distribution, please contact the project maintainers.


πŸ“§ Support & Contact

For issues, feature requests, or questions:

  1. Check existing documentation
  2. Review API endpoint specifications
  3. Consult project contributors

βš–οΈ Advantages & Disadvantages

This section outlines the key benefits and trade-offs of the blockchain-inspired student verification system:

βœ… Advantages

  • Immutable Records: Once verified, student profiles cannot be altered, ensuring data integrity.
  • Enhanced Security: SHA-256 encryption and JWT-based authentication protect sensitive information.
  • Transparent Workflow: Change requests and verification feedback create a clear audit trail.
  • Role-Based Access: Students and teachers have distinct, secure interfaces.
  • Real-Time Analytics: Dashboards provide immediate insights into verification status and trends.
  • Scalable MERN Stack: The architecture supports easy deployment and future expansion.

⚠️ Disadvantages

  • Complex Setup: Requires configuration of backend, frontend, and database; may be challenging for beginners.
  • Learning Curve: Understanding blockchain concepts and encryption may take time for new developers.
  • Performance Overhead: Encryption/decryption on each profile access can add latency.
  • Dependent on MongoDB: Tightly coupled with MongoDB, limiting flexibility in database choice.
  • Limited Offline Support: The system relies on network connectivity for verification and updates.

πŸŽ“ Academic Purpose

This system was developed to demonstrate:

  • Blockchain principles applied to real-world data management
  • Cryptographic security in educational systems
  • RESTful API design patterns
  • Full-stack development practices (MERN)
  • User authentication and authorization
  • Data integrity and immutability concepts

πŸ” GitHub Topics & Search Tags

For discoverability, this repo is tagged with: blockchain student-verification MERN full-stack educational-system react nodejs mongodb express jwt-auth encryption data-integrity REST-API form-validation dashboard academic-records


πŸ’‘ Use Cases

Educational Institutions

  • Secure student record management and verification
  • Transparent academic credential tracking
  • Fraud prevention for credential submission

Student Record Systems

  • Government educational databases
  • Private school management systems
  • Higher education enrollment systems
  • Alumni verification platforms

Blockchain Education

  • Teaching blockchain fundamentals with practical examples
  • Demonstrating immutable data storage
  • Learning cryptographic concepts

⚑ Performance Characteristics

  • Frontend: React 18 single-page app, instant UI updates
  • Backend: Express.js with async/await
  • Database: MongoDB document-based queries
  • Encryption: SHA-256 on profile save/retrieve (minimal overhead)
  • API Response Time: <200ms for typical queries
  • Scalability: Ready for deployment on cloud platforms (Heroku, Railway, Vercel)

πŸ§ͺ Testing & Quality Assurance

Manual Testing Covered

  • Student registration and profile submission
  • Teacher verification workflow with dual confirmation
  • Change request submission and approval
  • Profile encryption/decryption
  • JWT authentication and protected routes
  • File upload and validation

API Testing

Use Postman or similar tools to test endpoints:

  1. Create student account β†’ Login β†’ Get token
  2. Submit encrypted profile β†’ Retrieve decrypted
  3. Verify student as teacher β†’ Check status in student app
  4. Submit change request β†’ Approve/reject as teacher

πŸš€ Deployment Guide

Deploy Backend (Node.js)

  1. Push code to GitHub
  2. Connect to Railway.app or Heroku
  3. Set environment variables: MONGO_URI, JWT_SECRET, PORT
  4. Deploy with npm start

Deploy Frontend (React)

  1. Build optimized production bundle: npm run build
  2. Deploy to Vercel, Netlify, or GitHub Pages
  3. Update API base URL to production backend
  4. Deploy and verify routes work correctly

πŸ› Troubleshooting

Common Issues

"Cannot find module" errors

  • Solution: Run npm install in both BackEnd and BlockChain directories

MongoDB connection failed

  • Solution: Check MONGO_URI in .env file, verify MongoDB is running

Profile shows encrypted on frontend

  • Solution: Ensure backend decryption endpoint is called, verify JWT token is valid

Image upload fails

  • Solution: Check file size limits in multer config (middleware/upload.js), verify destination folder exists

Verification status not updating

  • Solution: Refresh page or clear localStorage, verify teacher endpoint returned success

πŸ“ˆ Future Enhancements

Potential features for next iterations:

  • Email notifications on profile verification/rejection
  • SMS alerts for important status changes
  • Advanced audit logging dashboard
  • Two-factor authentication (2FA)
  • Profile versioning and change history
  • Bulk student import from CSV
  • Admin settings panel with role management
  • Analytics export to PDF/Excel
  • Native mobile app (React Native)
  • Blockchain integration (crypto verification)

πŸ“š Additional Resources

Learning Materials

Tools & Services


⭐ Key Features Comparison

Feature This System Traditional DB Blockchain
Immutability βœ… Profile lock ❌ Modifiable βœ… Ledger-based
Encryption βœ… SHA-256 ❌ Optional βœ… Cryptographic
Verification βœ… Dual approval βœ… Single ⚠️ Complex
Speed βœ… Fast βœ… Very fast ❌ Slower
Scalability βœ… Cloud-ready βœ… Scalable ⚠️ Limited
Audit Trail βœ… Complete ⚠️ Configurable βœ… Automatic

πŸ“ž Contact & Support

Project Maintainers

  • Latikesh Marathe
  • Durgesh Upasani

Report Issues

  • Create GitHub issue with detailed description
  • Include error messages and steps to reproduce
  • Provide environment details (OS, Node version, etc.)

Security Concerns

  • Do not post security vulnerabilities publicly
  • Contact maintainers privately with details
  • Follow responsible disclosure practices

πŸ“ Version History

Version Date Changes
1.0 Current Initial release with core features
0.9 Previous Beta with pending features

🎯 Roadmap

Q1 2026: Core features βœ… Q2 2026: Advanced security & 2FA Q3 2026: Mobile app & notifications Q4 2026: Further blockchain integration


πŸ“– Documentation

For more detailed information:

  • Review API endpoints section above
  • Check individual component comments
  • Examine middleware for auth flow
  • View utils/blockEncryption.js for encryption details

πŸ™ Acknowledgments

Built with inspiration from:

  • Blockchain technology principles
  • MERN stack best practices
  • Educational system requirements
  • Modern web security standards

Last Updated: 2024 Status: Production Ready βœ… Support: Community-driven

About

#Blockchain for Student Record System

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors