A comprehensive web application for the Innovation and Incubation Cell of National Institute of Technology, Durgapur. This platform serves as the central hub for innovation activities, events, team management, and student engagement within the institution.
- π Features
- π οΈ Technology Stack
- π Project Structure
- β‘ Quick Start
- π§ Installation
- π§ Environment Configuration
- π Authentication System
- π₯ User Management
- π¨ Features Overview
- π± API Documentation
- π Deployment
- π€ Contributing
- π License
- Modern User Interface - React 19 with responsive design
- Authentication System - JWT-based secure authentication
- Role-Based Access Control - Admin, User, and Guest roles
- Event Management - Create, manage, and showcase events
- Team Management - Display team members with dynamic data
- Innovation Hub - Submit and manage innovation ideas
- Image Gallery - Azure Blob Storage integration
- Newsletter System - Email subscription and management
- Search Functionality - Global search across all content
- Mobile Responsive - Optimized for all device sizes
- JWT Token Authentication
- Password Hashing (bcrypt)
- Protected Routes
- CORS Configuration
- Environment Variable Security
- Input Validation
- Modern Glass-morphism Design
- Smooth Animations (Framer Motion)
- Loading Skeletons
- Toast Notifications
- Modal System
- Responsive Grid Layouts
- Dark/Light Theme Support
| Technology | Version | Purpose |
|---|---|---|
| React | 19.0.0 | Core Framework |
| Vite | 6.2.0 | Build Tool |
| React Router | 7.3.0 | Navigation |
| Redux Toolkit | 2.8.2 | State Management |
| SCSS | Latest | Styling |
| Framer Motion | 12.5.0 | Animations |
| Material-UI | 6.4.7 | Component Library |
| React Hook Form | 7.56.3 | Form Management |
| Technology | Version | Purpose |
|---|---|---|
| Node.js | Latest | Runtime Environment |
| Express.js | 5.1.0 | Web Framework |
| MongoDB | 8.14.2 | Database |
| Mongoose | 8.14.2 | ODM |
| JWT | 9.0.2 | Authentication |
| bcryptjs | 3.0.2 | Password Hashing |
- Azure Blob Storage - Image/File Storage
- MongoDB Atlas - Database Hosting (Optional)
- Vercel - Frontend Deployment
- Render/Railway - Backend Deployment
IICNITDGP/
βββ π client/ # Frontend React Application
β βββ π public/ # Static Assets
β β βββ π assets/ # Images, Icons
β β βββ π data/ # JSON Data Files
β βββ π src/
β β βββ π components/ # Reusable Components
β β βββ π pages/ # Page Components
β β βββ π layouts/ # Layout Components
β β βββ π services/ # API Services
β β βββ π store/ # Redux Store
β β βββ π routes/ # Route Configuration
β β βββ π config/ # Configuration Files
β βββ package.json
β βββ vite.config.js
βββ π server/ # Backend Node.js Application
β βββ π Controller/ # Route Controllers
β βββ π model/ # MongoDB Models
β βββ π Routes/ # API Routes
β βββ π middleware/ # Custom Middleware
β βββ π config/ # Database Configuration
β βββ π utils/ # Utility Functions
β βββ package.json
β βββ index.js # Server Entry Point
βββ π README.md
βββ π ENVIRONMENT_SETUP.md # Environment Configuration
βββ π AUTH_README.md # Authentication Guide
βββ π AZURE_SETUP.md # Azure Configuration
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (Local or Atlas)
- Git
git clone https://github.com/sandipto729/IICNITDGP.git
cd IICNITDGP# Install backend dependencies
cd server
npm install
# Install frontend dependencies
cd ../client
npm install# Server environment
cd server
cp .env.example .env
# Edit .env with your configuration
# Client environment
cd ../client
cp .env.example .env
# Edit .env with your configuration# Terminal 1 - Backend Server
cd server
npm run dev
# Terminal 2 - Frontend Development Server
cd client
npm run dev- Frontend: http://localhost:5173
- Backend: http://localhost:8000
- API Docs: http://localhost:8000/api
# Check Node.js version
node --version # Should be v18+
# Check npm version
npm --version # Should be v8+
# Check Git
git --versionOption A: Local MongoDB
# Install MongoDB locally
# Start MongoDB service
mongod --dbpath /path/to/your/dataOption B: MongoDB Atlas
# Create account at https://cloud.mongodb.com
# Create cluster and get connection string
# Update MONGO_URI in .env file# Create Azure Storage Account
# Get connection string and container name
# Update Azure configuration in .env# Database
MONGO_URI=mongodb://localhost:27017/iic-nitdgp
# JWT Configuration
JWT_ACCESS_SECRET=your-super-secret-access-token-key
JWT_REFRESH_SECRET=your-super-secret-refresh-token-key
JWT_ACCESS_EXPIRES_IN=15m
JWT_REFRESH_EXPIRES_IN=7d
# Server Configuration
PORT=8000
NODE_ENV=development
FRONTEND_URL=http://localhost:5173
# Azure Blob Storage (Optional)
AZURE_STORAGE_CONNECTION_STRING=your-azure-connection-string
AZURE_CONTAINER_NAME=your-container-name# API Configuration
VITE_API_BASE_URL=http://localhost:8000/api
# Azure Configuration (Optional)
VITE_AZURE_STORAGE_ACCOUNT=your-storage-account
VITE_AZURE_CONTAINER=your-container-name- Admin: Full system access, user management, content management
- User: Profile management, event participation, innovation submissions
- Guest: Public content viewing
- Registration: Email verification and profile creation
- Login: JWT token generation
- Protected Routes: Token validation middleware
- Refresh Tokens: Automatic token renewal
- Logout: Token invalidation
POST /api/auth/register # User Registration
POST /api/auth/login # User Login
POST /api/auth/refresh # Token Refresh
POST /api/auth/logout # User Logout
GET /api/auth/profile # Get User Profile
PUT /api/auth/profile # Update Profile{
name: String,
email: String (unique),
password: String (hashed),
role: Enum ['admin', 'user'],
designation: String,
type: String,
extra: {
linkedin: String,
github: String
},
isActive: Boolean,
createdAt: Date,
updatedAt: Date
}- User Management: View, edit, activate/deactivate users
- Content Management: Manage events, innovations, gallery
- Analytics: User statistics and engagement metrics
- System Settings: Configuration and maintenance
- Event Creation: Rich text editor, image upload, scheduling
- Event Categories: Workshops, seminars, competitions
- Registration System: User registration with form validation
- Event Display: Upcoming and past events with filtering
- Modal System: Detailed event view with responsive design
- Idea Submission: Submit innovative project ideas
- Admin Review: Admin panel for reviewing submissions
- Status Tracking: Track submission status and feedback
- Gallery Integration: Showcase successful innovations
- Azure Integration: Cloud-based image storage
- Upload Management: Admin-controlled image uploads
- Responsive Grid: Masonry layout with lightbox viewing
- Image Optimization: Automatic compression and resizing
- Subscription Management: Email collection and validation
- Admin Dashboard: Subscriber management
- Email Templates: Customizable newsletter templates
- Global Search: Search across events, innovations, team members
- Filter Options: Date, category, status filtering
- Real-time Results: Instant search with debouncing
# Register new user
POST /api/auth/register
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com",
"password": "securePassword123"
}
# Login user
POST /api/auth/login
Content-Type: application/json
{
"email": "john@example.com",
"password": "securePassword123"
}# Get all events
GET /api/events
# Get single event
GET /api/events/:id
# Create event (Admin only)
POST /api/events
Authorization: Bearer <token>
# Update event (Admin only)
PUT /api/events/:id
Authorization: Bearer <token>
# Delete event (Admin only)
DELETE /api/events/:id
Authorization: Bearer <token># Get all users (Admin only)
GET /api/users
Authorization: Bearer <admin-token>
# Update user role (Admin only)
PUT /api/users/:id/role
Authorization: Bearer <admin-token>
# Activate/Deactivate user (Admin only)
PUT /api/users/:id/status
Authorization: Bearer <admin-token># Build for production
npm run build
# Deploy to Vercel
npx vercel --prod
# Environment Variables in Vercel
VITE_API_BASE_URL=https://your-backend-domain.com/api# Deployment Configuration
PORT=8000
NODE_ENV=production
MONGO_URI=mongodb+srv://...
FRONTEND_URL=https://your-frontend-domain.com
# Build Script
npm start# MongoDB Atlas Setup
1. Create cluster
2. Configure network access
3. Create database user
4. Update connection string- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
- ESLint configuration for code quality
- Prettier for code formatting
- Conventional Commits for commit messages
- Component-based architecture
- SCSS Modules for styling
# Run frontend tests
cd client
npm run test
# Run backend tests
cd server
npm run test
# Run E2E tests
npm run test:e2eThis project is licensed under the MIT License. See the LICENSE file for details.
- NIT Durgapur - For providing the platform and support
- Innovation and Incubation Cell - For the vision and requirements
- Open Source Community - For the amazing tools and libraries
- Contributors - For their valuable contributions
For support and queries:
- Email: iic@nitdgp.ac.in
- GitHub Issues: Create an Issue
- Documentation: Check the
/docsfolder for detailed guides
Made with β€οΈ by the IIC NIT Durgapur Team
NIT Durgapur β’ GitHub Repository β’ Live Demo