Revolutionizing university recruitment through decentralized trust and verified credentials
Features • Architecture • Getting Started • Smart Contract • Tech Stack
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.
- 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
- 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
- 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
- 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
- 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
- Resume Parsing - Automatic skill extraction from PDFs
- Job Recommendations - ML-based job matching algorithm
- Skill Analysis - Advanced text preprocessing and analysis
┌─────────────────────────────────────────────────────────────┐
│ 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 │ │
└───────────────────┘ │ └──────────────┘ │
└────────────────────┘
- 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
- 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
- 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
- Language: Move (Aptos native)
- Module:
nextref::nextref - Functions: 6 entry functions, 5 view functions
- Events: Resume submission, verification, job creation, applications
- Node.js (v18+ recommended)
- npm or bun package manager
- Petra Wallet browser extension (Install)
- Aptos CLI (for contract deployment)
-
Clone the repository
git clone https://github.com/Subhadipjana95/NextRef_Alumni-Connect.git cd Alumni-Connect -
Install dependencies
Frontend:
cd Frontend npm install # or bun install
Backend:
cd Backend npm installML Service:
cd ML pip install -r requirements.txt -
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
-
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
-
Access the application
Frontend: http://localhost:5173 Backend API: http://localhost:4000/api/v1 ML Service: http://localhost:5000
- Install the Petra Wallet Extension
- Create a new wallet or import existing
- Switch network to Aptos Devnet
- Get test APT from the Aptos Faucet
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
All protected routes require JWT authentication via:
- Cookie:
token - Header:
Authorization: Bearer <token> - Body:
tokenfield
POST /api/v1/student/signup- Student registrationPOST /api/v1/student/login- Student login
POST /api/v1/alumni/signup- Alumni registrationPOST /api/v1/alumni/login- Alumni login
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)
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)
GET /api/v1/student/profile- Get student profilePUT /api/v1/student/profile- Update student profileGET /api/v1/alumni/profile- Get alumni profilePUT /api/v1/alumni/profile- Update alumni profile
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
The NextRef smart contract is written in Move and deployed on Aptos Devnet.
Module Address: nextref::nextref
| 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) |
| 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 |
ResumeSubmitted- When student uploads resumeResumeVerified- When verifier approves/rejectsJobCreated- When alumni posts new jobJobApplication- When student applies to job
# 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>'| 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 |
| 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 |
| Technology | Purpose |
|---|---|
| Python | Programming Language |
| Flask | Web Framework |
| PyPDF2 | PDF Processing |
| Scikit-learn | ML Algorithms |
| Pandas | Data Processing |
| NumPy | Numerical Computing |
| Technology | Purpose |
|---|---|
| Aptos SDK | Blockchain interaction |
| Wallet Adapter | Petra wallet integration |
| Move Language | Smart contract development |
| 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 |
- Radix UI - 30+ accessible primitive components
- Lucide React - Beautiful icon library
- Sonner - Toast notifications
- Recharts - Data visualization
- Lenis - Smooth scrolling
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
- Connect Petra wallet
- Select "Student" role
- Fill profile details and upload resume (PDF)
- Resume is uploaded to IPFS, hash stored on-chain
- Wait for university verifier to approve
- Browse and apply to jobs posted by alumni
- Generate QR code for quick verification
- Connect wallet with verifier privileges
- Review pending resume submissions
- Verify student credentials off-chain
- Approve or reject resumes on-chain
- Track verification history
- Connect wallet and register as alumni
- Create job postings with details
- Job metadata stored on IPFS
- View applicants for posted jobs
- Shortlist and refer candidates
- Track application pipeline
- 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
cd Frontend
npm run build
# Deploy to Vercel
vercel --prod- Environment Variables: Set all required env vars in your hosting platform
- Build Command:
npm install - Start Command:
npm start - Port: Uses
process.env.PORTor4000
Current Production URL: https://nextref-alumni-connect.onrender.com
- Create a cluster on MongoDB Atlas
- Get connection string
- Add to
DB_URLin backend.env
See Smart Contract Deployment section above for Move contract deployment.
- Blockchain: Aptos Devnet
- Explorer: https://explorer.aptoslabs.com/
- Faucet: https://aptoslabs.com/faucet
- Wallet: Petra Wallet (petra.app)
- Backend API: https://nextref-alumni-connect.onrender.com/api/v1
- Frontend: https://next-ref-alumni-connect.vercel.app
- 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
- Real-time notifications (WebSocket)
- Advanced analytics dashboard
- Email notification system
- Multi-file resume uploads
- Video interview integration
- Calendar integration for interviews
- Automated interview scheduling
- 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
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License. See LICENSE file for details.
- 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
For questions, issues, or feature requests:
- GitHub Issues: Create an issue
- Discussions: Join discussions
- Backend API Reference - Complete API endpoint documentation
- Opportunity API Integration - Detailed integration guide
- Complete Integration Summary - Full feature integration status
- API Connection Map - Backend-Frontend connection overview
- Wallet Integration Guide - Web3 wallet setup guide