A comprehensive web-based faculty feedback management system designed for VSB Engineering College. This system allows students to provide feedback on faculty performance, while administrators and HODs can manage mappings, view reports, and analyze feedback data.
- Secure Login: Authentication using college registration number
- Feedback Submission: Rate faculty across 10 standardized parameters
- Visual Feedback: Color-coded rating indicators (Green/Yellow/Red)
- One-Time Submission: Prevents duplicate feedback entries
- User-Friendly Interface: Clean, responsive design with intuitive navigation
- Dashboard: Comprehensive admin panel for system management
- Staff-Subject Mapping:
- Manual mapping entry
- Bulk Excel upload (.xlsx/.xls)
- Download sample templates
- View and delete existing mappings
- Bulk Operations:
- Add multiple staff members at once
- Add multiple subjects simultaneously
- Automatic duplicate detection
- Student Management:
- Bulk student uploads via Excel
- View and manage student records
- Department and semester assignment
- Report Generation: Generate comprehensive feedback reports
- Data Export: Export data in various formats
- Department Reports: View department-specific feedback analysis
- Staff Performance: Monitor faculty performance metrics
- Non-Submission Reports: Track students who haven't submitted feedback
- Statistical Analysis: View average ratings and trends
- Backend: Python Flask (ASGI with Uvicorn)
- Database: SQLite 3
- Frontend: HTML5, CSS3, JavaScript
- Styling: Bootstrap 4, Font Awesome
- Excel Processing: openpyxl, pandas
- Encryption: Cryptography library
- Logging: Rich logging with colored output
Feedback-System/
βββ app/
β βββ models/ # Database models
β βββ services/ # Business logic services
β βββ utils/ # Helper utilities
βββ routes/
β βββ admin_routes.py # Admin endpoints
β βββ hod_routes.py # HOD endpoints
β βββ student_routes.py # Student endpoints (not integrated)
βββ templates/ # HTML templates
βββ static/ # CSS, JS, images
βββ data/
β βββ feedback.db # SQLite database
βββ uploads/ # Uploaded Excel files
βββ logs/ # Application logs
βββ backup_csv/ # CSV backups (legacy)
βββ app.py # Main application file
βββ config.py # Configuration settings
βββ utils.py # Utility functions
βββ report_generator.py # Report generation logic
βββ report_non_submission.py # Non-submission tracking
βββ start_server.py # Auto-start server script
βββ requirements.txt # Python dependencies
βββ .env.example # Environment variables template
- Python 3.8 or higher
- pip (Python package manager)
- Git (optional, for cloning)
git clone https://github.com/your-repo/Feedback-System.git
cd Feedback-Systempip install -r requirements.txtRequired packages:
- Flask
- uvicorn
- asgiref
- matplotlib
- openpyxl
- pandas
- cryptography
- rich
-
Copy
.env.exampleto.env:cp .env.example .env
-
Edit
.envfile with your settings:FLASK_SECRET_KEY=your_secret_key_change_this ADMIN_PASSWORD=your_admin_password HOD_USERNAME=your_hod_username HOD_PASSWORD=your_hod_password ENCRYPTION_SECRET_KEY=your_encryption_key PORT=5000
The database will be automatically created on first run. The system uses SQLite with the following tables:
students- Student informationdepartments- Department listsemesters- Semester liststaffs- Staff/faculty listsubjects- Subject listadmin_mappings- Staff-subject mappingsfeedback_ratings- Feedback datasubmitted_feedback- Submission tracking
python start_server.pyThis will:
- Automatically detect your local IP address
- Find an available port (tries 5000, 8080, 8000, 3000, 5001)
- Open your default browser
- Display access URLs for local and network access
python app.pyThen access the application at:
- Local:
http://localhost:5000 - Network:
http://YOUR_IP:5000
uvicorn app:asgi_app --host 0.0.0.0 --port 5000-
Access the System
- Navigate to the homepage:
http://your-server:5000 - Click on "Student Feedback"
- Navigate to the homepage:
-
Login
- Enter your registration number
- System validates and loads your profile
-
Submit Feedback
- View list of faculty members assigned to your department/semester
- Rate each faculty on 10 parameters (scale: 1-10)
- Submit feedback (one-time only)
-
Login
- Navigate to:
http://your-server:5000/admin_login - Enter admin password (default:
vsbec)
- Navigate to:
-
Manage Staff-Subject Mappings
- Manual Entry: Add individual mappings
- Excel Upload:
- Download sample template
- Fill in: department, semester, staff, subject
- Upload file (replace or append mode)
- View/Delete: Filter and remove mappings
-
Bulk Operations
- Navigate to "Bulk Add Staff/Subjects"
- Enter multiple names (one per line)
- System automatically handles duplicates
-
Student Management
- Upload student data via Excel
- View all registered students
- Manage student records
-
Generate Reports
- Select department and semester
- Generate comprehensive feedback reports
- Download or view online
-
Login
- Navigate to:
http://your-server:5000/hod_login - Enter HOD credentials
- Navigate to:
-
View Reports
- Department-specific feedback analysis
- Staff performance metrics
- Non-submission tracking
- Statistical summaries
Edit config.py to customize the 10 feedback questions:
FEEDBACK_QUESTIONS = [
"How is the faculty's approach?",
"How has the faculty prepared for the classes?",
# ... add your questions
]Database path is set in config.py:
DATABASE_PATH = 'data/feedback.db'Configure file upload limits in config.py:
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'xlsx', 'xls'}
MAX_FILE_SIZE = 10 * 1024 * 1024 # 10MB-
Run the server:
python start_server.py
-
Find your IP address:
- Windows:
ipconfig - Linux/Mac:
ifconfigorip addr
- Windows:
-
Share the URL with users on the same network:
http://YOUR_IP:5000
-
Install Gunicorn (Linux/Mac):
pip install gunicorn gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:asgi_app --bind 0.0.0.0:5000
-
Or use Waitress (Windows-compatible):
pip install waitress waitress-serve --port=5000 app:app
-
Install Nginx
-
Configure Nginx (
/etc/nginx/sites-available/feedback):server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
-
Enable site:
sudo ln -s /etc/nginx/sites-available/feedback /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
Create Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "start_server.py"]Build and run:
docker build -t feedback-system .
docker run -p 5000:5000 feedback-system-
Create
Procfile:web: python start_server.py -
Deploy:
heroku create your-app-name git push heroku main
- Use EC2/VM instance
- Install Python and dependencies
- Configure security groups/firewall
- Run with systemd or supervisor
-
Change Default Passwords
ADMIN_PASSWORD=strong_password_here HOD_PASSWORD=strong_password_here
-
Use Strong Secret Keys
import secrets print(secrets.token_hex(32))
-
Enable HTTPS in production
- Use Let's Encrypt for free SSL certificates
- Configure Nginx with SSL
-
File Permissions
chmod 600 .env chmod 700 data/
-
Database Backups
cp data/feedback.db backups/feedback_$(date +%Y%m%d).db -
Input Validation
- All user inputs are validated
- SQL injection protection via parameterized queries
- XSS protection in templates
-
Rate Limiting (recommended for production)
pip install Flask-Limiter
CREATE TABLE students (
id INTEGER PRIMARY KEY,
registerno TEXT UNIQUE,
department TEXT,
semester TEXT
)CREATE TABLE admin_mappings (
id INTEGER PRIMARY KEY,
department TEXT,
semester TEXT,
staff TEXT,
subject TEXT
)CREATE TABLE feedback_ratings (
id INTEGER PRIMARY KEY,
registerno TEXT,
department TEXT,
semester TEXT,
staff TEXT,
subject TEXT,
q1-q10 REAL,
average REAL,
timestamp DATETIME
)CREATE TABLE submitted_feedback (
id INTEGER PRIMARY KEY,
registerno TEXT UNIQUE,
submission_date DATETIME
)Issue: Port already in use
# Find process using the port
netstat -ano | findstr :5000 # Windows
lsof -i :5000 # Linux/Mac
# Kill the process or use a different portIssue: Database locked
- Close all connections to the database
- Check if another process is accessing the DB
- Restart the application
Issue: Excel upload fails
- Ensure file has required columns
- Check file size (max 10MB)
- Verify file format (.xlsx or .xls)
Issue: Students can't login
- Verify student exists in database
- Check registration number format
- Ensure database is accessible
Issue: Permission denied errors
# Fix permissions
chmod 755 .
chmod 777 uploads/
chmod 777 logs/
chmod 777 data/GET /- HomepagePOST /- Student loginGET /feedback- Feedback formPOST /feedback- Submit feedback
GET /admin_login- Admin login pagePOST /admin_login- Process admin loginGET /admin_dashboard- Admin dashboardGET /admin- Staff-subject mappingPOST /admin/mappings/upload- Upload Excel mappingsGET /admin/mappings/view- View mappingsPOST /admin/mappings/delete- Delete mappingGET /admin/bulk-add- Bulk add pagePOST /admin/bulk-add- Process bulk addGET /admin_students- Student management
GET /hod_login- HOD login pagePOST /hod_login- Process HOD loginGET /hod_dashboard- HOD dashboardGET /hod/reports- Feedback reports
| department | semester | staff | subject |
|---|---|---|---|
| Computer Science - A | 2 | Dr. John Doe | Data Structures |
| Computer Science - A | 2 | Prof. Jane Smith | Operating Systems |
| registerno | department | semester |
|---|---|---|
| 23CS001 | Computer Science - A | 2 |
| 23CS002 | Computer Science - A | 2 |
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Created and Maintained by GenrecAI
- Website: Genrec.AI
For issues, questions, or suggestions:
- Open an issue on GitHub
- Contact: [Your support email]
- Migrated from CSV to SQLite database
- Added Excel upload functionality
- Implemented bulk operations
- Enhanced security features
- Improved UI/UX
- Initial release with CSV storage
- Basic feedback collection
- Admin and HOD portals
VSB Engineering College | Faculty Feedback System