- Overview
- Video Demo
- Key Features
- Architecture
- Technology Stack
- Screenshots
- Getting Started
- Installation
- Usage Guide
- Database Schema
- Deployment
- Documentation
- Contributing
- License
Academic Analyzer is a comprehensive, cloud-native academic performance management system designed for educational institutions. Built with modern technologies and deployed on Azure cloud infrastructure, it provides a complete solution for managing students, sections, marking schemes, exam configurations, and result distribution.
β
Cloud-Native Architecture - Fully deployed on Azure with MySQL Flexible Server
β
Component-Based Marking - Flexible weighted grading system with custom weightages
β
Scaled Calculations - Automatic mark scaling with configurable max marks per component
β
Multi-Exam Support - Handle multiple exam types (Internal, MSE, ESE, Assignments)
β
Result Launcher - Selective result publishing with email automation
β
Web Portal - Students can view results online via responsive Flask web app
β
Desktop Application - Native Windows application with modern FlatLaf UI
β
Email Automation - Integrated MailerSend for notifications and OTP verification
β
Export Capabilities - PDF & Excel export with institutional branding
Watch the full demonstration of Academic Analyzer, covering all features from login to result portal deployment.
Duration: ~12 minutes | Topics: Login, Dashboard, Student Management, Marks Entry, Analytics, Result Launcher, Portal
- Section Management - Create and manage academic sections with custom configurations
- Student Records - Batch student entry with roll number validation
- Subject Configuration - Define subjects with credits, max marks, and passing criteria
- Exam Types - Configure multiple exam components with individual weightages
- Component-Based Marking - Theory, Practical, Internal, Assignments with custom weights
- Scaled Grading Formula -
Subject Total = Ξ£[(marks/max_marks) Γ weightage] - Color-Coded Validation - Real-time visual feedback (Red/White/Green)
- Bulk Operations - Import/Export marks via Excel templates
- Auto-Calculation - Instant weighted total computation
- Component Selection - Choose specific exam components to include
- Student Filtering - Select individual students or entire sections
- Visibility Control - Configure what students can see (marks, rank, statistics)
- Email Distribution - Automated email delivery with professional templates
- Result History - Track all launched results with timestamps
- Section Analysis - Grade distribution, subject-wise performance
- Student Performance - Individual progress tracking with CGPA calculation
- Grade Scaling - A+ to F grade assignment based on percentage
- Ranking System - Automated student ranking with class statistics
Live Portal: https://academicanalyzer-portal.azurewebsites.net/results
- Responsive Design - Mobile-friendly interface
- Secure Access - Roll number verification
- Result Viewing - Clean, organized result display
- PDF Download - Download results as PDF
Desktop Application (Java Swing)
- Modern FlatLaf dark theme UI
- Offline-capable with cloud sync
- Windows native installer (.exe)
- Resource-efficient (84MB package)
Result Portal (Flask)
- Python 3.11 web application
- Deployed on Azure App Service (Linux)
- MySQL connection with environment variables
- Professional email templates
Cloud Infrastructure (Azure)
- Azure MySQL Flexible Server - Southeast Asia region
- Azure App Service - Linux container (B1 tier)
- MailerSend Integration - Email automation service
- Application Insights - Monitoring and diagnostics
- Authentication - Login/Register with OTP verification via MailerSend
- Section Creation - Configure subjects and exam components
- Student Management - Add students in batch mode
- Mark Entry - Component-based mark entry with auto-scaling
- Result Calculation - Weighted total computation with CGPA
- Result Launch - Selective publishing with email distribution
- Portal Access - Students view results online
| Technology | Version | Purpose |
|---|---|---|
| Java | 21 | Core application language |
| Swing | Built-in | GUI framework |
| FlatLaf | 3.6 | Modern look and feel |
| MySQL Connector | 8.2.0 | Database connectivity |
| iText PDF | 5.5.13.3 | PDF generation |
| Apache POI | 5.2.3 | Excel import/export |
| JFreeChart | 1.5.4 | Data visualization |
| jpackage | Built-in | Native installer creation |
| Technology | Version | Purpose |
|---|---|---|
| Python | 3.11 | Backend language |
| Flask | 3.0 | Web framework |
| mysql-connector-python | Latest | Database driver |
| ReportLab | 4.0.7 | PDF generation |
| Gunicorn | Latest | Production WSGI server |
| Service | Configuration | Purpose |
|---|---|---|
| Azure MySQL Flexible Server | Standard_B1ms, 20GB | Database hosting |
| Azure App Service | Linux, Python 3.11, B1 | Web app hosting |
| MailerSend | API integration | Email automation |
| Azure Southeast Asia | Primary region | Low latency for region |
Modern dashboard with glassmorphic design and real-time statistics
Component-based marking system with weighted calculations
π Dashboard
- Real-time student count and section statistics
- Recent activity feed
- Quick action buttons
- Grade distribution charts
βοΈ Mark Entry
- Component-wise mark entry (Theory, Practical, Internal, Assignment)
- Auto-scaled calculation display
- Color-coded validation feedback
- Bulk import from Excel templates
π Result Launcher
- Visual component selection cards
- Student filtering options
- Visibility configuration
- Email distribution with custom messages
π Section Analyzer
- Grade distribution visualization
- Subject-wise performance breakdown
- Top performers ranking
- Pass/fail statistics
For Desktop Application:
- Windows 10/11 (64-bit)
- No Java installation required (JRE bundled)
- 200 MB free disk space
For Development:
- JDK 21 or higher
- Maven 3.6+
- MySQL 8.0+ (or Azure MySQL)
- Python 3.11+ (for portal development)
- Download the latest release from Releases
- Run
AcademicAnalyzer-1.0.0.exe - Follow installation wizard
- Launch from Start Menu or Desktop shortcut
# Clone repository
git clone https://github.com/yourusername/AcademicAnalyzer.git
cd AcademicAnalyzer
# Configure database
# Edit .env file with your Azure MySQL credentials
# Compile and build
javac -encoding UTF-8 -d bin -cp "lib/*" -sourcepath src src/Main.java
# Run directly
java -cp "bin;lib/*" Main
# Or build installer
./build-installer.ps1-
Download Installer
- Get
AcademicAnalyzer-1.0.0.exefrom Releases - Size: ~149 MB (includes JRE)
- Get
-
Install Application
- Double-click the installer
- Choose installation directory
- Create desktop shortcut (recommended)
- Add to Start Menu
-
First Launch
- Application will validate database connection
- If
.envis missing, configure database manually - Create an account or login
The application uses Azure MySQL Flexible Server by default. The .env file should be included with the installation, but you can create it manually:
# Database Configuration
DB_HOST=academicanalyzer-db-sea.mysql.database.azure.com
DB_PORT=3306
DB_NAME=academic_analyzer
DB_USERNAME=your_username
DB_PASSWORD=your_password
# MailerSend Configuration
MAILERSEND_API_KEY=your_api_key
MAILERSEND_FROM_EMAIL=noreply@yourdomain.com
MAILERSEND_FROM_NAME=Academic Analyzer
# Portal Configuration
RESULT_PORTAL_URL=https://academicanalyzer-portal.azurewebsites.netPlace this file in the application installation directory.
Dashboard β Add Section β Configure subjects and exam types
- Enter section name (e.g., "A ISE", "B CSE")
- Set academic year and semester
- Add subjects with credits
- Configure exam components:
- Theory (40% weightage, 40 max marks)
- Practical (30% weightage, 30 max marks)
- Internal (20% weightage, 20 max marks)
- Assignment (10% weightage, 10 max marks)
- Ensure weightages sum to 100%
Dashboard β Add Student β Select section β Batch entry
- Select target section
- Enter student details (name, roll number)
- Email and phone are optional
- Add multiple students before saving
- Validate for duplicate roll numbers
Dashboard β Mark Entry β Select section & subject
- Choose section and subject
- Enter marks for each component
- System auto-calculates weighted total
- Color indicators:
- π’ Green - Above average
- βͺ White - Average
- π΄ Red - Below passing marks
- Export to Excel or import from template
Dashboard β Result Launcher β Configure & Launch
- Select exam components to include
- Choose target students
- Configure visibility:
- β Show component marks
- β Show subject details
- β¬ Show rank
- β Show class statistics
- β Allow PDF download
- Enter custom message (optional)
- Send emails automatically
Web Portal: https://academicanalyzer-portal.azurewebsites.net/results
- Enter roll number
- Select section
- View detailed results
- Download PDF copy
Authentication
users- User accounts and credentialsregistration_otps- OTP verification for registrationpassword_reset_otps- OTP for password reset
Academic Structure
sections- Academic sections/classesstudents- Student records (182 records)subjects- Subject definitions (32 subjects)section_subjects- Section-subject mapping with marks config
Exam Configuration
exam_types- Exam component definitions (66 types)subject_exam_types- Junction table for subject-exam mapping
Marking System
marking_schemes- Marking scheme definitionscomponent_groups- Component grouping logicmarking_components- Individual components (89 components)
Marks Storage
marks- Student marks (230 entries)entered_exam_marks- Component-wise marks (1443 entries)student_component_marks- Scaled marks calculation
Result Management
launched_results- Published results (10 launches)launched_student_results- Individual result data (JSON)
- Students belong to Sections (1:N)
- Sections have Subjects (N:M via section_subjects)
- Subjects have Exam Types (N:M via subject_exam_types)
- Students have Marks per Subject per Exam Type
- Results are launched for specific Components and Students
Full Schema: See schema_current_2026-01-18.sql
# Clean build
Remove-Item -Recurse -Force bin, dist
# Compile
javac -encoding UTF-8 -d bin -cp "lib/*" -sourcepath src src/Main.java
# Build installer
./build-installer.ps1
# Output: AcademicAnalyzer-1.0.0.exe (~149 MB)cd result-portal
# Deploy to Azure App Service
az webapp up \
--name academicanalyzer-portal \
--resource-group AcademicAnalyzer-RG \
--runtime "PYTHON:3.11" \
--sku B1
# Configure environment variables
az webapp config appsettings set \
--name academicanalyzer-portal \
--resource-group AcademicAnalyzer-RG \
--settings \
DB_HOST="academicanalyzer-db-sea.mysql.database.azure.com" \
DB_NAME="academic_analyzer" \
DB_USERNAME="your_username" \
DB_PASSWORD="your_password"# Create MySQL Flexible Server
az mysql flexible-server create \
--name academicanalyzer-db-sea \
--resource-group AcademicAnalyzer-RG \
--location southeastasia \
--sku-name Standard_B1ms \
--tier Burstable \
--storage-size 20 \
--version 8.0.21
# Import database
mysql -h academicanalyzer-db-sea.mysql.database.azure.com \
-u admin_user \
academic_analyzer < docs/database/schema_current_2026-01-18.sqlComprehensive documentation is available in the /docs folder:
- Exam Types Configuration - Complete guide for exam setup
- Marks Calculation - Detailed calculation formulas
- Documentation Validation - Feature verification
- Architecture - Complete system architecture
- Database Schema - Database design and relationships
- Email System - Email integration details
- Azure Migration - Cloud deployment guide
- Index - Documentation overview
- Setup Guide - Installation instructions
- Requirements - System requirements
AcademicAnalyzer/
βββ src/ # Java source code
β βββ Main.java # Application entry point
β βββ com/sms/
β βββ analyzer/ # Performance analysis
β βββ dashboard/ # Main UI
β βββ dao/ # Data access layer
β βββ database/ # DB connection
β βββ login/ # Authentication
β βββ marking/ # Marking system
β βββ resultlauncher/ # Result publishing
β βββ util/ # Utilities
β βββ viewtool/ # View & export
βββ resources/ # Images and assets
βββ lib/ # JAR dependencies
βββ docs/ # Documentation
βββ result-portal/ # Flask web app
β βββ app.py # Flask application
β βββ templates/ # HTML templates
β βββ static/ # CSS, JS, images
βββ build-installer.ps1 # Windows installer builder
βββ .env # Configuration (not in repo)
# Compile only
javac -encoding UTF-8 -d bin -cp "lib/*" -sourcepath src src/Main.java
# Run application
java -cp "bin;lib/*" Main
# Build installer
./build-installer.ps1
# Run Flask portal locally
cd result-portal
python app.pyRequired in .env file:
DB_HOST=your_database_host
DB_PORT=3306
DB_NAME=academic_analyzer
DB_USERNAME=your_username
DB_PASSWORD=your_password
MAILERSEND_API_KEY=your_mailersend_key
MAILERSEND_FROM_EMAIL=noreply@yourdomain.com
RESULT_PORTAL_URL=your_portal_urlContributions are welcome! Please follow these guidelines:
- 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
- Follow Java code conventions
- Add JavaDoc comments for public methods
- Test thoroughly before submitting
- Update documentation for new features
- Ensure backward compatibility
Found a bug or have a feature request?
- Bug Reports: Open an issue
- Feature Requests: Open an issue
Please include:
- Detailed description
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Screenshots if applicable
- System information
This project is licensed under the MIT License - see the LICENSE file for details.
Mujutaba M N - Solo Developer & Architect
Sole developer responsible for:
- ποΈ System Architecture & Design
- π» Full Stack Development (Java + Python)
- π¨ UI/UX Design & Implementation
- ποΈ Database Design & Optimization
- βοΈ Azure Cloud Deployment
- π§ Email Integration & Automation
- π Analytics & Reporting System
- π Web Portal Development
- FlatLaf - Modern Swing look and feel
- Azure - Cloud infrastructure
- MailerSend - Email automation service
- Apache POI - Excel processing
- iText - PDF generation
- JFreeChart - Data visualization
- Flask - Python web framework
Need help? Reach out:
- π§ Email: mujju718263@gmail.com
- π Web Portal: academicanalyzer-portal.azurewebsites.net
- π Documentation: docs/INDEX.md
- π¬ Issues: GitHub Issues
Made with β€οΈ for Educational Institutions









