Alma Connect is a full-stack alumni association platform designed to bridge the gap between students, alumni, and institutions. Built as part of the Smart India Hackathon (SIH), it provides a centralized hub for networking, mentorship, event management, fundraising, and AI-powered career guidance.
- Features
- Tech Stack
- Project Structure
- Prerequisites
- Installation & Setup
- Environment Variables
- Running the Application
- API Endpoints
- User Roles
- Screenshots
- Contributing
- License
- User registration with role selection (Student / Alumni / Admin)
- Secure login with JWT-based authentication
- Role-based access control (RBAC) via middleware
- Password hashing with bcrypt
- Detailed profiles with education, skills, experience, and current job
- AI-powered resume parsing — upload a PDF resume and auto-populate profile fields using OpenAI
- Follow / unfollow system to build your network
- User directory for browsing all registered members
- Socket.IO-powered instant messaging between users
- Private chat rooms with message persistence in MongoDB
- Users list sidebar to select and start conversations
- Peer-to-peer video calls via WebRTC signaling through Socket.IO
- Join video rooms and connect with other users in real time
- Create and browse events (Hackathons, Seminars, TED Talks, Workshops)
- RSVP / attend events
- Event detail pages with attendee lists
- Create fundraising campaigns (Student Aid, University, Event)
- Donate to campaigns with Razorpay payment integration
- Track campaign progress with target and current amount
- Donation confirmation and receipt tracking
- Personalized career roadmaps generated using OpenAI GPT
- Input your education, skills, interests, and career goals
- Get actionable advice: diagnosis, roadmap, project ideas, networking actions, and resources
- Fallback advice when API is unavailable
- Conversational chatbot powered by Google Gemini 2.5 Flash
- Context-aware responses scoped to the Alma Connect platform
- Role-specific guidance for students, alumni, and admins
- Privacy-conscious — never stores sensitive user data
- In-app notification system for event updates and platform activity
- Mark notifications as read
- View platform-wide statistics (total users, events, fundraises)
- User directory management
| Layer | Technology |
|---|---|
| Frontend | React 19, React Router v6, Tailwind CSS, Bootstrap 5, Framer Motion, Lucide Icons |
| Backend | Node.js, Express 5, Socket.IO |
| Database | MongoDB with Mongoose ODM |
| Auth | JSON Web Tokens (JWT), bcryptjs |
| AI/ML | OpenAI GPT (career guidance & resume parsing), Google Gemini (chatbot) |
| Payments | Razorpay |
| Real-time | Socket.IO (chat & video signaling) |
| File Upload | Multer, pdf-parse |
alumni-sih-master/
├── api/ # Backend (Express.js server)
│ ├── config/
│ │ └── db.js # MongoDB connection setup
│ ├── controllers/
│ │ ├── authController.js # Register & login logic
│ │ ├── alumniController.js # Profile, resume upload, follow/unfollow
│ │ ├── eventController.js # Event CRUD operations
│ │ ├── chatController.js # Chat message retrieval
│ │ ├── chatbot.controller.js # Gemini AI chatbot
│ │ ├── donationController.js # Campaign & Razorpay donation
│ │ ├── guidanceController.js # AI career guidance (OpenAI)
│ │ ├── notificationController.js
│ │ └── adminController.js # Admin dashboard stats
│ ├── middleware/
│ │ ├── authMiddleware.js # JWT verification
│ │ └── adminMiddleware.js # Admin role check
│ ├── models/
│ │ ├── User.js # User schema (student/alumni/admin)
│ │ ├── Event.js # Event schema
│ │ ├── Message.js # Chat message schema
│ │ ├── Donation.js # Individual donation records
│ │ ├── DonationCampaign.js # Fundraising campaign schema
│ │ ├── Notification.js # Notification schema
│ │ └── Admin.js # Admin stats schema
│ ├── routes/ # Express route definitions
│ ├── server.js # Entry point — Express + Socket.IO
│ ├── package.json
│ └── nodemon.json
│
├── client/ # Frontend (React app)
│ ├── public/
│ ├── src/
│ │ ├── components/
│ │ │ ├── AdminDashboard.js # Admin analytics panel
│ │ │ ├── AlumniChatbot.js # Gemini-powered chatbot widget
│ │ │ ├── Chat.js # Real-time chat interface
│ │ │ ├── VideoCall.js # WebRTC video calling
│ │ │ ├── UsersList.js # User directory sidebar
│ │ │ ├── ResumeUpload.js # PDF resume upload & parse
│ │ │ ├── Navigation.js # Navbar component
│ │ │ ├── FundRequestManager.js
│ │ │ ├── FloatingChatWidget.js
│ │ │ └── ui/ # Reusable UI components
│ │ ├── pages/
│ │ │ ├── Landing.js # Public landing page
│ │ │ ├── Home.js # Authenticated home page
│ │ │ ├── Login.js # Login form
│ │ │ ├── Register.js # Registration form
│ │ │ ├── Profile.js # User profile editor
│ │ │ ├── UserProfile.js # View other user's profile
│ │ │ ├── Events.js # Event listing page
│ │ │ ├── EventDetails.js # Single event details
│ │ │ ├── Fundraising.js # Donation campaigns page
│ │ │ ├── Guidance.js # AI career guidance page
│ │ │ ├── Notifications.js # Notifications page
│ │ │ ├── Learnmore.js # About / learn more page
│ │ │ └── Dashboard.js # Dashboard page
│ │ ├── assets/ # Images, videos
│ │ ├── styles/ # CSS stylesheets
│ │ ├── hooks/ # Custom React hooks
│ │ ├── lib/ # Utility libraries
│ │ ├── utils/ # Helper functions
│ │ └── App.js # Root component with routing
│ ├── package.json
│ ├── tailwind.config.js
│ └── postcss.config.js
│
└── .gitignore
Make sure you have the following installed on your system:
| Software | Version | Download Link |
|---|---|---|
| Node.js | v18 or later | nodejs.org |
| npm | v9 or later | Comes with Node.js |
| MongoDB | v6 or later | mongodb.com |
| Git | Latest | git-scm.com |
After Cloning Run this command ..
cd alumni-sih/alumni-sih-mastercd api
npm installcd ../client
npm installMake sure MongoDB is running locally on mongodb://localhost:27017. The app will automatically create the alumni-sih-db database.
Option A — Run MongoDB locally:
mongodOption B — Use MongoDB Atlas (cloud):
Update the MONGO_URI in your .env file with your Atlas connection string.
Create a .env file inside the api/ directory:
cd api
touch .env # or create manually on WindowsAdd the following variables:
# Server
PORT=3000
# Database
MONGO_URI= MongoDB Connection String
# Authentication
JWT_SECRET=your_jwt_secret_here
# OpenAI (for resume parsing & career guidance)
OPENAI_API_KEY=your_openai_api_key_here
# Razorpay (for donation payments) — optional
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secretcd api
npm run dev # Uses nodemon for auto-reload
# OR
npm start # Production modeThe API server starts at http://localhost:3000.
Open a new terminal:
cd client
npm startThe React app starts at http://localhost:3001 (or the next available port).
You can run both servers simultaneously in separate terminals:
| Terminal 1 (Backend) | Terminal 2 (Frontend) |
|---|---|
cd api && npm run dev |
cd client && npm start |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| POST | /api/auth/register |
Register a new user | ❌ |
| POST | /api/auth/login |
Login & get JWT token | ❌ |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/alumni/users |
List all users | ✅ |
| GET | /api/alumni/:id |
Get user profile by ID | ✅ |
| PUT | /api/alumni/me |
Update current user's profile | ✅ |
| POST | /api/alumni/upload-resume |
Upload & parse resume (PDF) | ✅ |
| POST | /api/alumni/parse-resume |
Parse resume without saving | ❌ |
| POST | /api/alumni/follow/:id |
Toggle follow/unfollow a user | ✅ |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/events |
List all events | ✅ |
| POST | /api/events |
Create a new event | ✅ |
| GET | /api/events/:id |
Get event details | ✅ |
| POST | /api/events/:id/attend |
RSVP to an event | ✅ |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/donation/campaigns |
List all campaigns | ✅ |
| POST | /api/donation/campaigns |
Create a new campaign | ✅ |
| GET | /api/donation/campaigns/:id |
Get campaign details | ✅ |
| POST | /api/donation/campaigns/:id/donate |
Initiate a donation | ✅ |
| POST | /api/donation/confirm |
Confirm payment | ✅ |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| POST | /api/guidance |
Get AI-generated career guidance | ✅ |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| POST | /api/chatbot |
Chat with the AI assistant | ❌ |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/notification |
Get user notifications | ✅ |
| PUT | /api/notification/:id |
Mark as read | ✅ |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/dashboard/stats |
Get platform statistics | ✅ (Admin) |
| Role | Capabilities |
|---|---|
| Student | View profiles, chat, video call, attend events, donate, get career guidance, use chatbot |
| Alumni | All student features + create events, create campaigns, mentor students |
| Admin | User directory management, view platform stats, moderate content |
Contributions are welcome! Here's how to get involved:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Please make sure to:
- Follow existing code style and conventions
- Update documentation for any new features
- Test your changes before submitting
- Built for Smart India Hackathon (SIH) 2025
- Powered by OpenAI and Google Gemini
- Payment processing by Razorpay
- Real-time communication via Socket.IO
Made with ❤️ by Team Alma Connect