Skip to content

A decentralized platform where students get their resumes verified on-chain and alumni provide trustworthy referrals based on transparent credentials.

Notifications You must be signed in to change notification settings

Subhadipjana95/NextRef_Alumni-Connect

Repository files navigation

🎓 NextRef - Alumni Connect

NextRef - Blockchain-Powered Alumni Referral Protocol

Revolutionizing university recruitment through decentralized trust and verified credentials

Aptos React TypeScript Vite Move

FeaturesArchitectureGetting StartedSmart ContractTech Stack


📖 Overview

Alumni Connect (NextRef) is a cutting-edge decentralized application that bridges the gap between students, universities, and alumni networks. Built on the Aptos blockchain, this platform leverages the power of blockchain technology to create a transparent, trustless, and efficient referral ecosystem for campus recruitment.

The platform empowers:

  • Students to submit verified resumes and apply to exclusive job opportunities
  • Verifiers (Universities/Institutions) to validate student credentials on-chain
  • Alumni to post job openings and connect with verified talent from their alma mater

All interactions are recorded immutably on the blockchain, ensuring transparency, preventing fraud, and building a decentralized trust network.


✨ Features

🔐 Authentication System

  • JWT-Based Authentication - Secure token-based auth with HTTP-only cookies
  • Role-Based Access Control - Student, Alumni, and Verifier roles
  • Multi-Role Support - Dynamic role-based dashboards
  • Petra Wallet Integration - Optional Web3 wallet connection for blockchain features
  • Secure Password Hashing - Bcrypt encryption for user passwords

📄 Resume Management System

  • PDF Upload - Upload resumes via backend API
  • Cloudinary Storage - Secure cloud storage for documents
  • IPFS Storage - Optional decentralized resume storage via Pinata
  • Hash-Based Verification - Cryptographic proof of document authenticity
  • On-Chain Status - Optional immutable verification records on Aptos
  • QR Code Generation - Quick verification via scannable QR codes
  • ML Resume Analysis - Automatic skill extraction and parsing

💼 Job Referral Marketplace

  • Alumni Job Posting - Create and manage job opportunities
  • Backend API Integration - Full CRUD operations via REST API
  • Smart Application System - Only verified students can apply
  • Applicant Tracking - On-chain and database application records
  • Shortlisting & Referrals - Direct candidate recommendations
  • Edit & Delete Jobs - Full opportunity management for alumni
  • Application Status - Track application lifecycle

🎨 Modern User Experience

  • Responsive Design - Mobile-first, fully responsive UI
  • Dark/Light Mode - Customizable theme with next-themes
  • Smooth Animations - Framer Motion powered interactions
  • Lenis Smooth Scroll - Buttery-smooth scrolling experience
  • Toast Notifications - Real-time transaction feedback with Sonner

🔍 Transparency Features

  • Transaction Explorer Links - Direct links to Aptos Explorer
  • Real-Time Status Updates - Live transaction status monitoring
  • Event Emission - Blockchain events for all critical actions
  • API Documentation - Complete REST API reference guide
  • Integration Guides - Detailed API integration documentation

🤖 ML-Powered Features

  • Resume Parsing - Automatic skill extraction from PDFs
  • Job Recommendations - ML-based job matching algorithm
  • Skill Analysis - Advanced text preprocessing and analysis

🏗 Architecture

┌─────────────────────────────────────────────────────────────┐
│                      Frontend Layer                          │
│  React + TypeScript + Vite + Shadcn/UI + TailwindCSS        │
│  ┌──────────────┐ ┌──────────────┐ ┌──────────────┐        │
│  │   Student    │ │    Alumni    │ │   Verifier   │        │
│  │  Dashboard   │ │  Dashboard   │ │  Dashboard   │        │
│  └──────────────┘ └──────────────┘ └──────────────┘        │
└────────────────────┬────────────────────────────────────────┘
                     │
         ┌───────────┴───────────┐
         │                       │
┌────────▼──────────┐   ┌────────▼──────────┐
│  Wallet Adapter   │   │   IPFS (Pinata)   │
│  (Petra Wallet)   │   │  Resume Storage   │
└────────┬──────────┘   └───────────────────┘
         │
         │
┌────────▼──────────────────────────────────────────┐
│           Backend API Layer (Express + Node.js)   │
│  ┌──────────────────────────────────────────┐    │
│  │      REST API Endpoints                  │    │
│  │  - Authentication (JWT)                  │    │
│  │  - Alumni & Student Profiles             │    │
│  │  - Opportunity Management                │    │
│  │  - Application Tracking                  │    │
│  │  - Resume Upload & Verification          │    │
│  └──────────────────────────────────────────┘    │
│  ┌──────────────────────────────────────────┐    │
│  │      MongoDB Database                    │    │
│  │  - User Collections                      │    │
│  │  - Opportunity & Application Data        │    │
│  └──────────────────────────────────────────┘    │
└───────────────────┬───────────────────────────────┘
                    │
         ┌──────────┴──────────┐
         │                     │
┌────────▼──────────┐  ┌───────▼────────────┐
│ ML Service        │  │ Aptos Blockchain   │
│ (Flask + Python)  │  │    (Devnet)        │
│ - Resume Analysis │  │  ┌──────────────┐  │
│ - Job Matching    │  │  │ Smart        │  │
│ - Recommendations │  │  │ Contract     │  │
└───────────────────┘  │  └──────────────┘  │
                       └────────────────────┘

Key Components

Frontend (/Frontend)

  • Pages: Landing page, role-based dashboards, authentication pages
  • Components: 40+ reusable UI components built with Radix UI
  • Contexts: Wallet connection, theme management, authentication
  • Hooks: Custom React hooks for mobile detection, toast notifications
  • Libraries: Blockchain interaction, IPFS integration, QR code generation
  • Services: API service layer for backend communication

Backend (/Backend)

  • Language: Node.js + Express.js
  • Database: MongoDB with Mongoose ODM
  • Authentication: JWT-based authentication with role-based access control
  • APIs: RESTful endpoints for all application features
  • File Upload: Cloudinary integration for image uploads
  • Middleware: Auth middleware, CORS configuration, file upload handling

API Base URL: http://localhost:4000/api/v1 (development)

Key Endpoints:

  • /api/v1/student/* - Student authentication and profile management
  • /api/v1/alumni/* - Alumni authentication and profile management
  • /api/v1/opportunities/* - Job opportunity CRUD operations
  • /api/v1/applications/* - Application management
  • /api/v1/external-jobs/* - External job postings integration

ML Service (/ML)

  • Language: Python + Flask
  • Features: Resume parsing, job recommendation, skill matching
  • ML Libraries: TensorFlow/Scikit-learn for matching algorithms
  • PDF Processing: PyPDF2 for resume text extraction

Smart Contract (/Frontend/contracts)

  • Language: Move (Aptos native)
  • Module: nextref::nextref
  • Functions: 6 entry functions, 5 view functions
  • Events: Resume submission, verification, job creation, applications

🚀 Getting Started

Prerequisites

  • Node.js (v18+ recommended)
  • npm or bun package manager
  • Petra Wallet browser extension (Install)
  • Aptos CLI (for contract deployment)

Installation

  1. Clone the repository

    git clone https://github.com/Subhadipjana95/NextRef_Alumni-Connect.git
    cd Alumni-Connect
  2. Install dependencies

    Frontend:

    cd Frontend
    npm install
    # or
    bun install

    Backend:

    cd Backend
    npm install

    ML Service:

    cd ML
    pip install -r requirements.txt
  3. Configure environment variables

    Frontend (.env in /Frontend directory)

    # API Configuration
    VITE_API_BASE_URL=http://localhost:4000/api/v1
    
    # Aptos Blockchain Configuration (Optional - only if using blockchain features)
    VITE_APTOS_NETWORK=devnet
    VITE_MODULE_ADDRESS=0xd825ff93605363709e2a2878e997bb5e05e6136b3d9bdab40898e7ed01bbe3fd
    
    # Pinata IPFS Configuration (Optional - only if using IPFS features)
    VITE_PINATA_API_KEY=your_pinata_api_key
    VITE_PINATA_SECRET_KEY=your_pinata_secret_key

    Backend (.env in /Backend directory)

    # Server Configuration
    PORT=4000
    
    # Database Configuration
    DB_URL=mongodb://localhost:27017/alumni-connect
    # OR for MongoDB Atlas:
    # DB_URL=mongodb+srv://username:password@cluster.mongodb.net/alumni-connect
    
    # JWT Authentication
    JWT_SECRET=your_jwt_secret_key_here
    
    # Cloudinary Configuration (for image uploads)
    CLOUDINARY_CLOUD_NAME=your_cloud_name
    CLOUDINARY_API_KEY=your_api_key
    CLOUDINARY_API_SECRET=your_api_secret
  4. Start development servers

    Backend:

    cd Backend
    npm run dev
    # Runs on http://localhost:4000

    Frontend:

    cd Frontend
    npm run dev
    # Runs on http://localhost:5173

    ML Service (Optional):

    cd ML
    python app.py
    # Runs on http://localhost:5000
  5. Access the application

    Frontend: http://localhost:5173
    Backend API: http://localhost:4000/api/v1
    ML Service: http://localhost:5000
    

Petra Wallet Setup

  1. Install the Petra Wallet Extension
  2. Create a new wallet or import existing
  3. Switch network to Aptos Devnet
  4. Get test APT from the Aptos Faucet

� Backend API

API Overview

The Backend API is built with Express.js and MongoDB, providing a robust REST API for all application features.

Base URL: http://localhost:4000/api/v1 (Development)
Production: https://nextref-alumni-connect.onrender.com/api/v1

Authentication

All protected routes require JWT authentication via:

  • Cookie: token
  • Header: Authorization: Bearer <token>
  • Body: token field

API Endpoints

Student Authentication

  • POST /api/v1/student/signup - Student registration
  • POST /api/v1/student/login - Student login

Alumni Authentication

  • POST /api/v1/alumni/signup - Alumni registration
  • POST /api/v1/alumni/login - Alumni login

Opportunity Management

  • POST /api/v1/opportunities/create - Create job opportunity (Alumni)
  • PUT /api/v1/opportunities/:opportunityId - Update opportunity (Alumni - Owner)
  • DELETE /api/v1/opportunities/:opportunityId - Close opportunity (Alumni - Owner)
  • GET /api/v1/opportunities - Get all opportunities (Same college)
  • GET /api/v1/my-opportunities - Get my posted opportunities (Alumni)

Application Management

  • POST /api/v1/applications/apply - Apply for referral (Student)
  • GET /api/v1/applications/my-applications - Get my applications (Student)
  • GET /api/v1/applications/:opportunityId - Get applicants (Alumni - Owner)
  • PUT /api/v1/applications/:applicationId/shortlist - Shortlist candidate (Alumni)
  • PUT /api/v1/applications/:applicationId/refer - Provide referral (Alumni)
  • PUT /api/v1/applications/:applicationId/reject - Reject application (Alumni)

Profile Management

  • GET /api/v1/student/profile - Get student profile
  • PUT /api/v1/student/profile - Update student profile
  • GET /api/v1/alumni/profile - Get alumni profile
  • PUT /api/v1/alumni/profile - Update alumni profile

Resume Management

  • POST /api/v1/student/resume/upload - Upload resume (PDF)
  • GET /api/v1/student/resume - Get resume data

For complete API documentation, see Backend/API_REFERENCE.md


�📜 Smart Contract

Contract Overview

The NextRef smart contract is written in Move and deployed on Aptos Devnet.

Module Address: nextref::nextref

Core Functions

Entry Functions (Transactions)

Function Role Description
initialize Deployer Initialize contract with verifier address
register_alumni Alumni Register as an alumni user
submit_resume Student Submit resume hash to blockchain
verify_resume Verifier Approve/reject student resumes
create_job Alumni Create new job posting
apply_to_job Student Apply to job (requires verification)

View Functions (Read-Only)

Function Description
get_student Retrieve student data and verification status
is_student_verified Check if student is verified
get_job_applicants Get list of applicants for a job
get_verifier Get verifier address
is_alumni Check if address is registered alumni

Events Emitted

  • ResumeSubmitted - When student uploads resume
  • ResumeVerified - When verifier approves/rejects
  • JobCreated - When alumni posts new job
  • JobApplication - When student applies to job

Deployment

# Navigate to contracts directory
cd Frontend/contracts

# Initialize Aptos CLI
aptos init --network devnet

# Fund your account
aptos account fund-with-faucet --account default

# Compile contract
aptos move compile --named-addresses nextref=default

# Deploy to Devnet
aptos move publish --named-addresses nextref=default

# Initialize contract
aptos move run \
  --function-id 'default::nextref::initialize' \
  --args 'address:<VERIFIER_ADDRESS>'

🛠 Tech Stack

Frontend

Technology Purpose Version
React UI Framework 18.3.1
TypeScript Type Safety 5.8.3
Vite Build Tool 5.4.19
TailwindCSS Styling 3.4.17
Shadcn/UI Component Library Latest
Framer Motion Animations 12.23.26
React Router Navigation 6.30.1
Tanstack Query State Management 5.83.0

Backend

Technology Purpose Version
Node.js Runtime Environment Latest
Express.js Web Framework 4.18.2
MongoDB Database Latest
Mongoose ODM 8.0.3
JWT Authentication 9.0.2
Bcrypt Password Hashing 5.1.1
Cloudinary Image Storage 1.41.0
Axios HTTP Client 1.13.2

ML Service

Technology Purpose
Python Programming Language
Flask Web Framework
PyPDF2 PDF Processing
Scikit-learn ML Algorithms
Pandas Data Processing
NumPy Numerical Computing

Blockchain & Web3

Technology Purpose
Aptos SDK Blockchain interaction
Wallet Adapter Petra wallet integration
Move Language Smart contract development

Storage & Utilities

Technology Purpose
IPFS (Pinata) Decentralized file storage
MongoDB Primary database
Cloudinary Image CDN
html5-qrcode QR code scanning
qrcode QR code generation
date-fns Date utilities
zod Schema validation

UI Components

  • Radix UI - 30+ accessible primitive components
  • Lucide React - Beautiful icon library
  • Sonner - Toast notifications
  • Recharts - Data visualization
  • Lenis - Smooth scrolling

📁 Project Structure

Alumni Connect/
├── Frontend/                  # React + TypeScript frontend
│   ├── contracts/              # Move smart contracts
│   │   ├── sources/
│   │   │   └── chainrefer.move # Main contract
│   │   ├── build/              # Compiled bytecode
│   │   └── Move.toml           # Contract config
│   │
│   ├── src/
│   │   ├── Auth/              # Authentication module
│   │   │   ├── api.ts         # Auth API calls
│   │   │   ├── config.ts      # API endpoints config
│   │   │   ├── AuthContext.tsx
│   │   │   ├── hooks.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   │
│   │   ├── components/         # React components
│   │   │   ├── alumni/        # Alumni dashboard
│   │   │   ├── student/       # Student dashboard
│   │   │   ├── verifier/      # Verifier dashboard
│   │   │   ├── ui/            # Shadcn UI components
│   │   │   ├── Home/          # Landing page sections
│   │   │   ├── Navbar.tsx
│   │   │   ├── Footer.tsx
│   │   │   ├── WalletButton.tsx
│   │   │   └── QRScanner.tsx
│   │   │
│   │   ├── contexts/          # React contexts
│   │   │   ├── WalletContext.tsx
│   │   │   └── ThemeContext.tsx
│   │   │
│   │   ├── lib/               # Utility libraries
│   │   │   ├── aptos.ts       # Blockchain functions
│   │   │   ├── ipfs.ts        # IPFS integration
│   │   │   ├── qrcode.ts      # QR utilities
│   │   │   ├── storage.ts     # Local storage
│   │   │   ├── blockchain.ts  # Transaction helpers
│   │   │   └── types.ts       # TypeScript types
│   │   │
│   │   ├── services/          # API services
│   │   │   └── opportunities.ts # Opportunity API calls
│   │   │
│   │   ├── pages/             # Route pages
│   │   │   ├── Index.tsx      # Main app page
│   │   │   ├── Home.tsx       # Landing page
│   │   │   └── About.tsx      # About page
│   │   │
│   │   ├── App.tsx            # App component
│   │   └── main.tsx           # Entry point
│   │
│   ├── public/                # Static assets
│   ├── package.json           # Dependencies
│   ├── vite.config.ts         # Vite configuration
│   ├── tailwind.config.ts     # Tailwind config
│   └── .env                   # Environment variables
│
├── Backend/                   # Node.js + Express backend
│   ├── src/
│   │   ├── config/
│   │   │   ├── database.js    # MongoDB connection
│   │   │   └── cloudinary.js  # Cloudinary config
│   │   │
│   │   ├── controllers/       # Route controllers
│   │   │   ├── AlumniAuth.js
│   │   │   ├── AlumniProfile.js
│   │   │   ├── StudentAuth.js
│   │   │   ├── StudentProfile.js
│   │   │   ├── StudentResume.js
│   │   │   ├── OpportunityController.js
│   │   │   ├── ApplicationController.js
│   │   │   └── ExternalJobController.js
│   │   │
│   │   ├── middlewares/       # Express middlewares
│   │   │   └── auth.js        # JWT authentication
│   │   │
│   │   ├── models/            # Mongoose models
│   │   │   ├── AlumniModel.js
│   │   │   ├── StudentModel.js
│   │   │   ├── CollegeModel.js
│   │   │   ├── OpportunityModel.js
│   │   │   └── ApplicationModel.js
│   │   │
│   │   ├── routes/            # API routes
│   │   │   ├── AlumniAuthRoutes.js
│   │   │   ├── AlumniProfileRoutes.js
│   │   │   ├── StudentAuthRoutes.js
│   │   │   ├── StudentProfileRoutes.js
│   │   │   ├── StudentResumeRoutes.js
│   │   │   ├── OpportunityRoutes.js
│   │   │   ├── ApplicationRoutes.js
│   │   │   └── ExternalJobRoutes.js
│   │   │
│   │   ├── utils/             # Utility functions
│   │   │   ├── imageUploader.js
│   │   │   ├── tokenGenerator.js
│   │   │   └── getStringFromPdf.js
│   │   │
│   │   └── index.js           # Server entry point
│   │
│   ├── package.json           # Dependencies
│   ├── .env                   # Environment variables
│   └── API_REFERENCE.md       # API documentation
│
├── ML/                        # Python ML service
│   ├── app.py                 # Flask application
│   ├── recommend.py           # Job recommendation engine
│   ├── preprocessing.py       # Text preprocessing
│   ├── pdf_utils.py           # PDF parsing utilities
│   ├── requirements.txt       # Python dependencies
│   ├── notebooks/
│   │   └── job-recommendation.ipynb
│   └── uploads/               # Resume upload directory
│
├── README.md                  # This file
├── OPPORTUNITY_API_INTEGRATION.md
├── COMPLETE_INTEGRATION_SUMMARY.md
└── API_CONNECTION_MAP.md

🎯 Use Cases

1. Student Journey

  1. Connect Petra wallet
  2. Select "Student" role
  3. Fill profile details and upload resume (PDF)
  4. Resume is uploaded to IPFS, hash stored on-chain
  5. Wait for university verifier to approve
  6. Browse and apply to jobs posted by alumni
  7. Generate QR code for quick verification

2. Verifier Journey

  1. Connect wallet with verifier privileges
  2. Review pending resume submissions
  3. Verify student credentials off-chain
  4. Approve or reject resumes on-chain
  5. Track verification history

3. Alumni Journey

  1. Connect wallet and register as alumni
  2. Create job postings with details
  3. Job metadata stored on IPFS
  4. View applicants for posted jobs
  5. Shortlist and refer candidates
  6. Track application pipeline

🔒 Security Features

  • Wallet Signature - All transactions require user approval
  • Role-Based Access - Smart contract enforces role permissions
  • Hash Verification - Documents verified via cryptographic hashes
  • Immutable Records - On-chain data cannot be altered
  • IPFS Storage - Decentralized file storage prevents censorship
  • No Private Data - Only hashes and metadata stored on-chain

🚀 Deployment

Frontend Deployment (Vercel)

cd Frontend
npm run build
# Deploy to Vercel
vercel --prod

Backend Deployment (Render/Railway)

  1. Environment Variables: Set all required env vars in your hosting platform
  2. Build Command: npm install
  3. Start Command: npm start
  4. Port: Uses process.env.PORT or 4000

Current Production URL: https://nextref-alumni-connect.onrender.com

Database (MongoDB Atlas)

  1. Create a cluster on MongoDB Atlas
  2. Get connection string
  3. Add to DB_URL in backend .env

Smart Contract Deployment

See Smart Contract Deployment section above for Move contract deployment.


🌐 Network Information


🚧 Roadmap

Phase 1 - Core Features ✅

  • Backend API with Express + MongoDB
  • Frontend with React + TypeScript
  • Authentication system (JWT)
  • Opportunity management (CRUD)
  • Application tracking system
  • ML-based job recommendations
  • Blockchain integration (Aptos)
  • IPFS resume storage

Phase 2 - Enhancements 🚀

  • Real-time notifications (WebSocket)
  • Advanced analytics dashboard
  • Email notification system
  • Multi-file resume uploads
  • Video interview integration
  • Calendar integration for interviews
  • Automated interview scheduling

Phase 3 - Expansion 🌟

  • Multi-chain support (Ethereum, Polygon)
  • Enhanced AI-powered resume matching
  • Reputation scoring system
  • Direct messaging between alumni and students
  • Mobile app (React Native)
  • Integration with LinkedIn/GitHub
  • Referral reward tokens
  • Company partnerships module

🤝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License. See LICENSE file for details.


🙏 Acknowledgments

  • Aptos Labs - For the high-performance blockchain platform
  • Petra Wallet - For seamless Web3 integration
  • Pinata - For IPFS infrastructure
  • Shadcn - For beautiful UI components
  • Vercel - For hosting and deployment

📞 Support

For questions, issues, or feature requests:

📚 Additional Documentation


👥 Team

Built with ❤️ by Team COSMO BLOCKS

Empowering the future of decentralized recruitment


⭐ Star this repository if you found it helpful!

About

A decentralized platform where students get their resumes verified on-chain and alumni provide trustworthy referrals based on transparent credentials.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •