A comprehensive web application for managing alumni connections, built with React frontend and Node.js backend, powered by Microsoft Azure SQL Database.
- Secure Password Hashing with bcrypt (12 salt rounds)
- Azure Active Directory Authentication for database access
- JWT-based session management
- Role-based access control (Admin/Alumni)
- User Registration with document verification
- Profile Management with real-time updates
- Admin Approval System for new registrations
- Email Notifications for approval/decline status
- Strict Phone Number Validation (exactly 10 digits)
- Real-time Input Validation with visual feedback
- Email Format Validation
- Password Strength Requirements
- Event Creation & Management
- Calendar Integration
- Automated Email Notifications to all approved alumni
- Event Details & RSVP System
- Automated Welcome Emails
- Event Notification System
- Password Reset Functionality
- Admin Approval Notifications
- React 18 with Vite
- CSS3 with modern styling
- Responsive Design for all devices
- Form Validation with real-time feedback
- Node.js with Express.js
- Microsoft Azure SQL Database
- Azure Active Directory Authentication
- bcrypt for password hashing
- Multer for file uploads
- Nodemailer for email services
- Azure SQL Database with AAD authentication
- Automatic Table Creation on startup
- Optimized Queries with parameterized statements
- Node.js (v16 or higher)
- Azure CLI (for authentication)
- Azure SQL Database instance
- Gmail App Password (for email services)
- Clone the repository
git clone <repository-url>
cd SIH-2025--Alumni-Management-System-main- Backend Setup
cd backend
npm install- Frontend Setup
cd ../frontend
npm install- Environment Configuration
# Backend .env file
AZURE_SQL_SERVER=your-server.database.windows.net
AZURE_SQL_DATABASE=your-database-name
AZURE_AD_USERNAME=your-email@yourdomain.com
AZURE_AD_PASSWORD=your-azure-password
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-gmail-app-password
FRONTEND_URL=http://localhost:3000
PORT=5000- Azure Authentication
# Login to Azure (for database access)
az login- Start the Application
# Terminal 1 - Backend
cd backend
npm start
# Terminal 2 - Frontend
cd frontend
npm run dev- Create Azure SQL Database in Azure Portal
- Set up Azure AD Admin for your SQL server
- Add your user to the database:
CREATE USER [your-email@yourdomain.com] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [your-email@yourdomain.com];
ALTER ROLE db_datawriter ADD MEMBER [your-email@yourdomain.com];
ALTER ROLE db_ddladmin ADD MEMBER [your-email@yourdomain.com];- Enable 2-Factor Authentication on your Gmail account
- Generate App Password:
- Go to Google Account Settings
- Security β 2-Step Verification β App passwords
- Generate password for "Mail"
- Use the app password in your
.envfile
CREATE TABLE alumni (
id INT IDENTITY(1,1) PRIMARY KEY,
name NVARCHAR(255) NOT NULL,
email NVARCHAR(255) UNIQUE NOT NULL,
password NVARCHAR(255) NOT NULL, -- Hashed with bcrypt
phone NVARCHAR(50),
degree NVARCHAR(255),
graduation_year INT,
department NVARCHAR(255),
address NVARCHAR(500),
city NVARCHAR(100),
state NVARCHAR(100),
country NVARCHAR(100),
linkedin NVARCHAR(500),
github NVARCHAR(500),
document_path NVARCHAR(500),
document_original_name NVARCHAR(255),
status NVARCHAR(50) DEFAULT 'pending',
created_at DATETIME2 DEFAULT GETDATE()
);CREATE TABLE events (
id INT IDENTITY(1,1) PRIMARY KEY,
event_name NVARCHAR(255) NOT NULL,
event_description NVARCHAR(MAX) NOT NULL,
event_venue NVARCHAR(500) NOT NULL,
event_date DATE NOT NULL,
event_time TIME,
created_by NVARCHAR(255) DEFAULT 'admin',
created_at DATETIME2 DEFAULT GETDATE(),
updated_at DATETIME2 DEFAULT GETDATE()
);- bcrypt Hashing with 12 salt rounds
- No plain text passwords stored in database
- Secure password comparison during login
- Phone Number: Exactly 10 digits, numeric only
- Email: RFC-compliant email validation
- Password: Minimum 6 characters
- File Upload: Restricted file types and sizes
- Azure AD Integration for database access
- Session Management with secure tokens
- Role-based Access Control
POST /api/register- User registrationPOST /api/login- User loginPOST /api/forgot-password- Password reset
GET /api/alumni- Get alumni by emailPUT /api/alumni/:id- Update alumni profileGET /api/admin/pending- Get pending registrationsPOST /api/admin/:id/approve- Approve alumniPOST /api/admin/:id/decline- Decline alumni
GET /api/events- Get all eventsPOST /api/events- Create new eventPUT /api/events/:id- Update eventDELETE /api/events/:id- Delete eventGET /api/events/date/:date- Get events by date
- Real-time validation with visual feedback
- File upload for document verification
- Phone number formatting (10 digits only)
- Password strength indicator
- Pending approvals management
- Event creation and management
- User statistics and analytics
- Email notification system
- Profile management with real-time updates
- Event calendar integration
- Document upload functionality
- Contact information management
- Deploy Backend to Azure App Service
- Deploy Frontend to Azure Static Web Apps
- Configure Environment Variables in Azure
- Set up Managed Identity for database access
# Production Environment
AZURE_SQL_SERVER=your-production-server.database.windows.net
AZURE_SQL_DATABASE=alumni_production
EMAIL_USER=production-email@yourdomain.com
EMAIL_PASS=production-app-password
FRONTEND_URL=https://your-frontend-url.com
PORT=8080cd backend
npm testcd frontend
npm test- Registration Flow: Test with valid/invalid data
- Phone Validation: Try different phone number formats
- Password Security: Verify hashing in database
- Email Notifications: Test approval/decline emails
- Event Management: Create and manage events
- Database Indexing on frequently queried columns
- Connection Pooling for Azure SQL Database
- File Upload Optimization with size limits
- Email Queue Management for bulk notifications
- Caching Strategy for frequently accessed data
-
Database Connection Failed
- Verify Azure AD authentication
- Check firewall rules
- Ensure user has proper permissions
-
Email Not Sending
- Verify Gmail app password
- Check email configuration
- Test email connection endpoint
-
Phone Validation Not Working
- Clear browser cache
- Check JavaScript console for errors
- Verify form validation logic
GET /api/quick-debug- System statusGET /api/test-email- Email configuration testPOST /api/debug-event-notifications- Event notification test
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Backend Development: Node.js, Express.js, Azure SQL
- Frontend Development: React, CSS3, Responsive Design
- Database Design: Azure SQL Database, AAD Authentication
- Security Implementation: bcrypt, Input Validation, Role-based Access
For support and questions:
- Create an issue in the repository
- Check the troubleshooting section
- Review the Azure setup documentation
Built with β€οΈ for Alumni Management and Networking