A comprehensive web-based academic management system built with Streamlit and SQLite for tracking student performance, generating analytics, and managing educational data.
- Overview
- Features
- Tech Stack
- Installation
- Usage Guide
- Project Structure
- Technical Implementation
- Screenshots
- Contributing
- License
- Contact
The Student Performance Tracker is a full-stack web application designed to streamline academic performance management for educational institutions. Built with modern web technologies, it provides real-time analytics, automated grade calculations, and comprehensive reporting capabilities.
- ๐ Real-time Analytics: Live performance dashboards with interactive visualizations
- ๐ฏ Automated Grading: Intelligent grade calculation system (A+ to F)
- ๐ฑ Responsive Design: Cross-platform compatibility with modern UI/UX
- โก SQLite Database: Lightweight, portable database with optimized queries
- ๐ก๏ธ Data Validation: Comprehensive input validation and error handling
- ๐ค Export Capabilities: CSV export for all data types
- Complete CRUD operations with search and filtering
- Class and section-based organization (10A, 10B, 11A, etc.)
- Student profile management with date of birth tracking
- Bulk data export functionality
- Advanced search with multiple criteria
- Dynamic subject creation and organization
- Quick-add functionality for common subjects
- Subject-wise performance tracking
- Unique subject validation to prevent duplicates
- Flexible marks entry with multiple assessment types (Quiz, Assignment, Midterm, Final)
- Real-time percentage calculation and grade assignment
- Assessment date tracking and validation
- Maximum marks customization (default: 100)
- Input validation to prevent invalid data entry
- Individual student report cards with detailed breakdowns
- Class-wise performance analytics with comparative metrics
- Subject-wise performance analysis and trends
- Grade distribution analysis across classes
- Pass/fail rate tracking with visual indicators
- Top performers identification and ranking
- Grade distribution pie charts and bar graphs
- Class performance comparison charts
- Subject performance analysis with range visualization
- Performance trends over time
- Pass/fail analysis with risk assessment
- Top performers leaderboard with ranking
- Database management and monitoring
- Sample data generation for testing
- Data backup and export functionality
- Application settings and preferences
- System statistics and health monitoring
- Streamlit - Modern web app framework for rapid development
- Pandas - Data manipulation and analysis
- Plotly - Interactive data visualizations
- Altair - Statistical visualizations
- Python 3.8+ - Core programming language
- SQLite - Lightweight, serverless database
- SQLAlchemy-style queries - Optimized database operations
- Git - Version control
- GitHub - Code repository and collaboration
- Streamlit Cloud - Cloud deployment platform
- Python 3.8 or higher
- Git (for cloning the repository)
- Clone the Repository
git clone https://github.com/Its-Kratik/student-performance-tracker.git
cd student-performance-tracker- Install Dependencies
pip install -r requirements.txt- Run the Application
streamlit run app.py- Access the Application
- Open your browser and navigate to
http://localhost:8501 - The database will be automatically initialized with sample data
python install.py # For Python 3.13 compatibility- ๐ Dashboard: Overview of system statistics and quick actions
- ๐ฅ Manage Students: Add, edit, delete, and search students
- ๐ Manage Subjects: Create and organize subject curriculum
- ๐ Enter Marks: Input student assessments and grades
- ๐ Report Cards: Generate individual student reports
- ๐ Class Analytics: Analyze class and section performance
- ๐ Visual Reports: Interactive charts and insights
- โ๏ธ Settings: Configure application preferences
- Adding Students: Navigate to "Manage Students" โ "Add New Student"
- Entering Marks: Go to "Enter Marks" โ Select student and subject โ Input scores
- Viewing Analytics: Access "Class Analytics" โ Select class/section โ View insights
- Exporting Data: Use export buttons in any section โ Download CSV files
student-performance-tracker/
โโโ ๐ app.py # Main application entry point
โโโ ๐ pages/ # Streamlit pages
โ โโโ 1_Manage_Students.py # Student management interface
โ โโโ 2_Manage_Subjects.py # Subject management interface
โ โโโ 3_Enter_Update_Marks.py # Marks entry and updating
โ โโโ 4_Student_Report_Card.py # Individual report generation
โ โโโ 5_Class_Analytics.py # Class performance analytics
โ โโโ 6_Visual_Reports.py # Interactive visual dashboards
โ โโโ 7_Settings.py # Application configuration
โโโ ๐ models/ # Data models and business logic
โ โโโ student.py # Student model and operations
โ โโโ subject.py # Subject model and operations
โ โโโ marks.py # Marks model and calculations
โโโ ๐ db/ # Database layer
โ โโโ connection.py # SQLite connection and utilities
โโโ ๐ utils/ # Utility functions
โ โโโ analytics.py # Advanced analytics functions
โโโ ๐ tests/ # Test suite
โ โโโ test_cases.py # Unit and integration tests
โโโ ๐ requirements.txt # Python dependencies
โโโ ๐ install.py # Installation script
โโโ ๐ README.md # Project documentation
โโโ ๐ student_tracker.db # SQLite database (auto-generated)
CREATE TABLE Student (
student_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL CHECK(length(trim(name)) >= 2),
class TEXT NOT NULL CHECK(class IN ('10', '11', '12')),
section TEXT NOT NULL CHECK(section IN ('A', 'B', 'C')),
dob DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)CREATE TABLE Subject (
subject_id INTEGER PRIMARY KEY AUTOINCREMENT,
subject_name TEXT NOT NULL UNIQUE CHECK(length(trim(subject_name)) >= 2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)CREATE TABLE Marks (
mark_id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id INTEGER NOT NULL,
subject_id INTEGER NOT NULL,
marks_obtained INTEGER NOT NULL CHECK(marks_obtained >= 0),
max_marks INTEGER DEFAULT 100 CHECK(max_marks > 0),
assessment_date DATE DEFAULT (date('now')),
assessment_type TEXT DEFAULT 'Assignment'
CHECK(assessment_type IN ('Quiz', 'Assignment', 'Midterm', 'Final', 'Project')),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES Student(student_id) ON DELETE CASCADE,
FOREIGN KEY (subject_id) REFERENCES Subject(subject_id) ON DELETE CASCADE,
CHECK(marks_obtained <= max_marks)
)| Percentage Range | Grade | Description |
|---|---|---|
| 90% - 100% | A+ | Outstanding |
| 80% - 89% | A | Excellent |
| 70% - 79% | B+ | Very Good |
| 60% - 69% | B | Good |
| 50% - 59% | C+ | Above Average |
| 40% - 49% | C | Average |
| Below 40% | F | Fail |
def calculate_percentage(marks_obtained: int, max_marks: int) -> float:
if max_marks == 0:
return 0.0
return round((marks_obtained / max_marks) * 100, 2)def calculate_grade(percentage: float) -> str:
if percentage >= 90: return "A+"
elif percentage >= 80: return "A"
elif percentage >= 70: return "B+"
elif percentage >= 60: return "B"
elif percentage >= 50: return "C+"
elif percentage >= 40: return "C"
else: return "F"- Database Indexing: Optimized queries with proper indexes
- Connection Pooling: Efficient database connection management
- Caching: Streamlit caching for improved performance
- Query Optimization: Optimized SQL queries for large datasets
We welcome contributions to improve the Student Performance Tracker! Here's how you can help:
- Fork the Repository
git fork https://github.com/Its-Kratik/student-performance-tracker.git- Create a Feature Branch
git checkout -b feature/amazing-feature-
Make Your Changes
- Follow Python PEP 8 style guidelines
- Add tests for new functionality
- Update documentation as needed
-
Commit Your Changes
git commit -m "Add amazing feature"- Push to Your Branch
git push origin feature/amazing-feature- Open a Pull Request
- Code Style: Follow PEP 8 conventions
- Testing: Add unit tests for new features
- Documentation: Update README and inline docs
- Commits: Use clear, descriptive commit messages
- ๐ง New Features: Additional analytics, reporting capabilities
- ๐ Bug Fixes: Identify and resolve issues
- ๐ Documentation: Improve guides and examples
- ๐จ UI/UX: Enhance user interface and experience
- โก Performance: Optimize database queries and rendering
Kratik Jain - Full Stack Developer & Data Enthusiast
- ๐ง Email: kratikjain121@gmail.com
- ๐ฑ Phone: +91 7410990404
- ๐ผ LinkedIn: kratik-jain12
- ๐ GitHub: Its-Kratik
- ๐ Live App: Student Performance Tracker
- Streamlit Team for the amazing framework
- SQLite for the reliable database engine
- Pandas for powerful data manipulation
- Plotly for interactive visualizations
- Open Source Community for inspiration and support
- Advanced statistical analysis and predictive modeling
- Comparative benchmarking across institutions
- Performance trend forecasting
- PDF report generation with custom templates
- Email notification system for parents/teachers
- Multi-language support for international use
- Advanced user roles and permissions system
- REST API development for third-party integrations
- Mobile application development
- Cloud storage integration
- Real-time collaboration features
If you find this project helpful, please consider:
- โญ Starring the repository
- ๐ Reporting issues and bugs
- ๐ก Suggesting new features
- ๐ค Contributing to the codebase
- ๐ข Sharing with others
Built with โค๏ธ by Kratik Jain
Empowering education through data-driven insights ๐โจ