Skip to content

divy-arun-mav/CertChain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

A Blockchain-Powered Platform for Secure Certificate Issuance & Verification

license last-commit repo-top-language repo-language-count


πŸ”— Table of Contents


πŸ“ Overview

CertChain is a decentralized certificate management platform that leverages blockchain technology to ensure secure, transparent, and tamper-proof issuance and verification of digital certificates, hackathon badges, and educational achievements. It seamlessly integrates a Node.js backend, a modern React/TypeScript client, and a suite of Solidity smart contracts to automate and secure the entire certification process.


πŸ‘Ύ Features

  • Decentralized Verification: Utilize blockchain to ensure every certificate is securely issued and verifiable.
  • Smart Contract Automation: Automate certificate issuance, role assignments, and other critical processes via Solidity smart contracts.
  • Modular Design: Built-in support for courses, hackathons, projects, and study groups.
  • User-Friendly Interface: Responsive client application featuring dashboards for creators, participants, and administrators.
  • Robust Data Models: Comprehensive models for users, courses, enrollments, hackathons, and projects.
  • Integrated Web3: Seamless integration with blockchain networks for real-time interactions.

Project Architecture:

  1. Use Case Diagram:

image

  1. Components Diagram:

image

  1. Sequence Diagram:

image

  1. Activity Diagram:

image

  1. Sequence Diagram :

image

  1. CodeBase Diagram:

image


CertChain Image Gallery

All Courses :

All Courses

All Hackathons :

All Hackathons

All Hackathons and Validation to Create Hackathon :

All hackathons and validation to create hackathon

Auth Login :

Auth Login

Auth Register :

Auth Register

Auth Logout :

Auth Logout

Certificate :

Certificate

Course Details and Enrollment :

Course Details and Enrollment

Course Learning :

Course Learning

Course Test and Cheating Detection :

Course Test and Cheating Detection

Hackathon Details 1 :

Hackathon Details 1

Hackathon Creator Award Prizes :

Hackathon Creator Award Prizes

Leaderboard :

Leaderboard

Participated Hackathons :

Participated Hackathons

All Valid Certificates :

All Valid Certificates

Compiling and Deploying Smart Contract on Edu Chain :

Compiling and Deploying Smart Contract on Edu Chain

Completed Courses :

Completed Courses

Create Hackathon 1 :

Create Hackathon 1

Create Hackathon :

Create Hackathon

Create Project :

Create Project

Creating and Submitting Project for Hackathon :

Creating and Submitting Project for Hackathon

Enrolled Courses :

Enrolled Courses

Hackathon Dashboard for Creator and Project Details 1 :

Hackathon Dashboard for Creator and Project Details 1

Hackathon Dashboard for Creator :

Hackathon Dashboard for Creator

Hackathon Details 2 :

Hackathon Details 2

Interacting with Smart Contract Through App 2 :

Interacting with Smart Contract Through App 2

Interacting with Smart Contract Through App 3 :

Interacting with Smart Contract Through App 3

Interacting with Smart Contract Through App 4 :

Interacting with Smart Contract Through App 4

Interacting with Smart Contract Through App 5 :

Interacting with Smart Contract Through App 5

Interacting with Smart Contract Through App :

Interacting with Smart Contract Through App

My Created Hackathon :

My Created Hackathon

Project Details :

Project Details

Project Images 2 :

Project Images 2

Project Images :

Project Images

Real Like Readme and Rich Text Editor :

Real Like Readme and Rich Text Editor

Smart Contract Details Deployment on Edu Chain :

Smart Contract Details Deployment on Edu Chain

Smart Contract Factory, Generating Code Through AI :

Smart Contract Factory, Generating Code Through AI

Submitting Project :

Submitting Project

User Achievements :

User Achievements


πŸ“ Project Structure

└── CertChain/
    β”œβ”€β”€ README.md
    β”œβ”€β”€ backend
    β”‚   β”œβ”€β”€ .gitignore
    β”‚   β”œβ”€β”€ app.js
    β”‚   β”œβ”€β”€ courses2.json
    β”‚   β”œβ”€β”€ middleware
    β”‚   β”‚   └── authMiddleware.js
    β”‚   β”œβ”€β”€ models
    β”‚   β”‚   β”œβ”€β”€ Course.js
    β”‚   β”‚   β”œβ”€β”€ Enrollment.js
    β”‚   β”‚   β”œβ”€β”€ Hackathon.js
    β”‚   β”‚   β”œβ”€β”€ Projects.js
    β”‚   β”‚   └── User.js
    β”‚   β”œβ”€β”€ package-lock.json
    β”‚   β”œβ”€β”€ package.json
    β”‚   β”œβ”€β”€ routes
    β”‚   β”‚   β”œβ”€β”€ authRoutes.js
    β”‚   β”‚   β”œβ”€β”€ courseRoutes.js
    β”‚   β”‚   β”œβ”€β”€ enrollmentRoutes.js
    β”‚   β”‚   β”œβ”€β”€ hackathonRoutes.js
    β”‚   β”‚   β”œβ”€β”€ leaderboardRoutes.js
    β”‚   β”‚   β”œβ”€β”€ pointRoutes.js
    β”‚   β”‚   └── projectRoutes.js
    β”‚   └── web3
    β”‚       β”œβ”€β”€ abi.json
    β”‚       └── assignRole.js
    β”œβ”€β”€ client
    β”‚   β”œβ”€β”€ .gitignore
    β”‚   β”œβ”€β”€ components.json
    β”‚   β”œβ”€β”€ eslint.config.js
    β”‚   β”œβ”€β”€ index.html
    β”‚   β”œβ”€β”€ package-lock.json
    β”‚   β”œβ”€β”€ package.json
    β”‚   β”œβ”€β”€ public
    β”‚   β”‚   β”œβ”€β”€ Elite.png
    β”‚   β”‚   β”œβ”€β”€ Legend.png
    β”‚   β”‚   β”œβ”€β”€ Master.png
    β”‚   β”‚   β”œβ”€β”€ Pro.png
    β”‚   β”‚   β”œβ”€β”€ Rookie.png
    β”‚   β”‚   β”œβ”€β”€ game-ranks.png
    β”‚   β”‚   β”œβ”€β”€ login-bg.gif
    β”‚   β”‚   β”œβ”€β”€ logo.jpg
    β”‚   β”‚   β”œβ”€β”€ logo.png
    β”‚   β”‚   β”œβ”€β”€ sign.jpg
    β”‚   β”‚   └── vite.svg
    β”‚   β”œβ”€β”€ src
    β”‚   β”‚   β”œβ”€β”€ App.tsx
    β”‚   β”‚   β”œβ”€β”€ Pages
    β”‚   β”‚   β”‚   β”œβ”€β”€ Acheivements.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Auth.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ AwardPrizes.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Cerificate.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Certificates.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ CompletedCourses.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ CourseDetails.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ CourseLearning.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Courses.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ CreatedHacks.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ CreatorDashboard.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ EditHackathon.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Editor.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ EnrolledCourses.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ HackathonCreator.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ HackathonDetails.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ HackathonParticipant.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Hackathons.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Home.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ LeaderBoard.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ MyProject.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ ParticipatedHackathons.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ ProjectDashboard.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ SolidityGen.tsx
    β”‚   β”‚   β”‚   └── StudentTest.tsx
    β”‚   β”‚   β”œβ”€β”€ assets
    β”‚   β”‚   β”‚   └── react.svg
    β”‚   β”‚   β”œβ”€β”€ components
    β”‚   β”‚   β”‚   β”œβ”€β”€ CertificateCanvas.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ ConnectWallet.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ ImageSlideShow.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ RichTextEditor.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ SolidityEditor.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ theme-provider.tsx
    β”‚   β”‚   β”‚   └── ui
    β”‚   β”‚   β”‚       β”œβ”€β”€ accordion.tsx
    β”‚   β”‚   β”‚       β”œβ”€β”€ button.tsx
    β”‚   β”‚   β”‚       β”œβ”€β”€ card.tsx
    β”‚   β”‚   β”‚       β”œβ”€β”€ input.tsx
    β”‚   β”‚   β”‚       β”œβ”€β”€ label.tsx
    β”‚   β”‚   β”‚       β”œβ”€β”€ skeleton.tsx
    β”‚   β”‚   β”‚       β”œβ”€β”€ table.tsx
    β”‚   β”‚   β”‚       └── textarea.tsx
    β”‚   β”‚   β”œβ”€β”€ context
    β”‚   β”‚   β”‚   β”œβ”€β”€ AuthContext.tsx
    β”‚   β”‚   β”‚   └── Web3.tsx
    β”‚   β”‚   β”œβ”€β”€ contracts
    β”‚   β”‚   β”‚   β”œβ”€β”€ EduChainCertifications.sol
    β”‚   β”‚   β”‚   β”‚   └── abi.json
    β”‚   β”‚   β”‚   β”œβ”€β”€ HackathonBadge.sol
    β”‚   β”‚   β”‚   β”‚   └── abi.json
    β”‚   β”‚   β”‚   β”œβ”€β”€ StudyGroup.sol
    β”‚   β”‚   β”‚   β”‚   └── abi.json
    β”‚   β”‚   β”‚   └── StudyTracker.sol
    β”‚   β”‚   β”‚       └── abi.json
    β”‚   β”‚   β”œβ”€β”€ index.css
    β”‚   β”‚   β”œβ”€β”€ lib
    β”‚   β”‚   β”‚   └── utils.ts
    β”‚   β”‚   β”œβ”€β”€ main.tsx
    β”‚   β”‚   β”œβ”€β”€ utils
    β”‚   β”‚   β”‚   β”œβ”€β”€ AnswerExtracter.tsx
    β”‚   β”‚   β”‚   β”œβ”€β”€ ContractUtils.tsx
    β”‚   β”‚   β”‚   └── ImageUploader.tsx
    β”‚   β”‚   └── vite-env.d.ts
    β”‚   β”œβ”€β”€ tailwind.config.js
    β”‚   β”œβ”€β”€ tsconfig.app.json
    β”‚   β”œβ”€β”€ tsconfig.json
    β”‚   β”œβ”€β”€ tsconfig.node.json
    β”‚   └── vite.config.ts
    └── contracts
        β”œβ”€β”€ Certificate.sol
        β”œβ”€β”€ EduChainCertifications.sol
        β”œβ”€β”€ HackathonBadge.sol
        β”œβ”€β”€ SolidityIDELocker.sol
        β”œβ”€β”€ StudyGroup.sol
        └── StudyTracker.sol

πŸ“‚ Project Index

CERTCHAIN/
__root__
README.md Main documentation and project overview.
backend
app.js Main backend server file initializing Express and routing.
package-lock.json Auto-generated dependency lock file for Node.js.
courses2.json Data file containing course information.
package.json Backend project configuration and dependencies.
web3
abi.json ABI file for smart contract interactions.
assignRole.js Script to assign roles via smart contracts.
models
Enrollment.js Model representing user enrollments.
Projects.js Model for managing project data.
Course.js Model for course information and management.
Hackathon.js Model for hackathon events and details.
User.js User model for authentication and profile management.
routes
projectRoutes.js Handles project-related API endpoints.
courseRoutes.js API endpoints for course operations.
enrollmentRoutes.js Endpoints for managing course enrollments.
authRoutes.js Endpoints for user authentication and authorization.
hackathonRoutes.js API endpoints for hackathon management.
leaderboardRoutes.js Handles leaderboard data and ranking endpoints.
pointRoutes.js Endpoints for managing user points and rewards.
middleware
authMiddleware.js Middleware for handling and verifying user authentication.
client
tsconfig.node.json TypeScript configuration for Node-specific settings.
package-lock.json Auto-generated dependency lock file for the client.
tsconfig.json General TypeScript configuration.
tailwind.config.js Configuration for Tailwind CSS.
tsconfig.app.json TypeScript configuration specific to the client application.
package.json Client project configuration and dependency definitions.
vite.config.ts Vite configuration for bundling and development.
index.html Main HTML file serving the client application.
components.json Configuration file for reusable client components.
eslint.config.js ESLint configuration for maintaining code quality.
src
main.tsx Entry point for the React client application.
index.css Global CSS styles for the application.
App.tsx Main React component managing routing and layout.
vite-env.d.ts Type definitions for Vite-specific modules.
lib
utils.ts Utility functions used across the client.
components
CertificateCanvas.tsx Component for rendering digital certificates.
ConnectWallet.tsx Enables users to connect their blockchain wallets.
ImageSlideShow.tsx Component for displaying an image slideshow.
Navbar.tsx Responsive navigation bar for the client.
RichTextEditor.tsx Rich text editor component for content creation.
SolidityEditor.tsx Editor tailored for writing Solidity smart contracts.
theme-provider.tsx Provides theming and styling context to the client.
ui
accordion.tsx UI accordion component for expandable content.
label.tsx Standard label component for form fields.
input.tsx Reusable input component for forms.
textarea.tsx Text area component for multi-line input.
button.tsx Customizable button component.
table.tsx Component for displaying tabular data.
skeleton.tsx Skeleton loader component for improved UX during data fetches.
card.tsx Card component for grouping related content.
context
Web3.tsx Context provider for blockchain/web3 interactions.
AuthContext.tsx Context provider for managing user authentication state.
Pages
Acheivements.tsx Displays user achievements and milestones.
Auth.tsx Authentication page for user sign-in and registration.
AwardPrizes.tsx Page for managing and awarding prizes.
Cerificate.tsx View page for individual certificate details.
Certificates.tsx Page listing all issued certificates.
CompletedCourses.tsx Displays courses successfully completed by the user.
CourseDetails.tsx Detailed view for individual course content.
CourseLearning.tsx Interactive learning page for courses.
Courses.tsx Listing page for all available courses.
CreatedHacks.tsx Overview of hackathons or projects created by the user.
CreatorDashboard.tsx Dashboard for content creators to manage their work.
EditHackathon.tsx Page to edit existing hackathon details.
Editor.tsx General-purpose editor for content modifications.
EnrolledCourses.tsx Lists courses the user is currently enrolled in.
HackathonCreator.tsx Page for creating new hackathon events.
HackathonDetails.tsx Detailed view of a selected hackathon event.
HackathonParticipant.tsx Page for participants in hackathons.
Home.tsx The landing page of the application.
LeaderBoard.tsx Displays user rankings and leaderboard information.
MyProject.tsx Overview of projects associated with the user.
ParticipatedHackathons.tsx Lists hackathons the user has participated in.
Hackathons.tsx Displays all available hackathon events.
AwardPrizes.tsx Manage and display prize awards for events.
Courses.tsx General listing of courses available to users.
CreatorDashboard.tsx Dashboard for creators to monitor and manage their contributions.
EnrolledCourses.tsx Displays courses in which the user is enrolled.
ProjectDashboard.tsx Dashboard for managing and tracking project progress.
utils
AnswerExtracter.tsx Utility to extract and process answers from user inputs.
ImageUploader.tsx Handles image uploading and storage.
ContractUtils.tsx Utility functions for interacting with blockchain smart contracts.
contracts
EduChainCertifications.sol
abi.json ABI for the EduChainCertifications smart contract.
StudyGroup.sol
abi.json ABI for the StudyGroup smart contract.
StudyTracker.sol
abi.json ABI for the StudyTracker smart contract.
HackathonBadge.sol
abi.json ABI for the HackathonBadge smart contract.
contracts
EduChainCertifications.sol Smart contract for managing educational certifications.
StudyGroup.sol Smart contract for managing study groups.
StudyTracker.sol Smart contract for tracking study progress.
HackathonBadge.sol Smart contract for issuing hackathon badges.
SolidityIDELocker.sol Smart contract for locking Solidity code within an IDE.
Certificate.sol Smart contract for certificate issuance and verification.

πŸš€ Getting Started

β˜‘οΈ Prerequisites

Ensure your environment meets the following requirements before getting started:

  • Programming Language: TypeScript & JavaScript (Node.js)
  • Package Manager: npm
  • Blockchain Node/Provider: Access to an Ethereum-compatible network (local or remote)

βš™οΈ Installation

Build from source:

  1. Clone the CertChain repository:

    ❯ git clone https://github.com/divy-arun-mav/CertChain
  2. Navigate to the project directory:

    ❯ cd CertChain
  3. Install backend and client dependencies:

    For the backend:

    ❯ cd backend
    ❯ npm install

    For the client:

    ❯ cd ../client
    ❯ npm install

πŸ€– Usage

To run the CertChain application:

  • Backend:
    From the backend folder, start the server:

    ❯ npm start
  • Client:
    From the client folder, launch the client application:

    ❯ npm start

Open your browser and navigate to the indicated local URL (typically http://localhost:3000).

πŸ§ͺ Testing

To run tests for the application, execute the following from the relevant folder (backend/client):

❯ npm test

πŸ“Œ Project Roadmap

  • Task 1: Complete the core blockchain integration and certificate issuance feature.
  • Task 2: Implement advanced verification and audit trails.
  • Task 3: Integrate additional blockchain networks and expand mobile support.

πŸ”° Contributing

Contributing Guidelines
  1. Fork the Repository: Start by forking the project to your GitHub account.
  2. Clone Locally: Clone the forked repository using:
    git clone https://github.com/divy-arun-mav/CertChain
  3. Create a New Branch: Always work on a new branch:
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test locally.
  5. Commit Your Changes: Commit with clear, descriptive messages:
    git commit -m 'Implemented new feature x.'
  6. Push to GitHub: Push your changes:
    git push origin new-feature-x
  7. Submit a Pull Request: Create a pull request against the main repository with a detailed description.
  8. Review: Your changes will be reviewed and merged upon approval.
Contributor Graph


πŸ™Œ Acknowledgments

  • Thanks to all the contributors and open-source projects that inspired and supported the development of CertChain.
  • Special appreciation goes to the communities behind blockchain, Node.js, React, and TypeScript for their continuous innovation and support.

About

CertChain is blockchain based secure education platform that leverages students certificates credibility by using blockchain and cryptography. It also uses AI for assessing the skills of the student and automatically issues and revokes certificates to them.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors