Skip to content

mujju-212/AcademicAnalyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Academic Analyzer Banner

πŸŽ“ Academic Analyzer

Cloud-Native Academic Performance Management System

Azure MySQL Java Python Flask License

πŸš€ Live Demo β€’ πŸ“₯ Download Desktop App β€’ πŸ“– Documentation β€’ πŸ› Report Bug


πŸ“‹ Table of Contents


🌟 Overview

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.

Why Academic Analyzer?

βœ… 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


πŸŽ₯ Video Demo

πŸ“Ή Complete System Walkthrough

Watch the full demonstration of Academic Analyzer, covering all features from login to result portal deployment.

Academic Analyzer Demo

▢️ Watch on YouTube

Duration: ~12 minutes | Topics: Login, Dashboard, Student Management, Marks Entry, Analytics, Result Launcher, Portal


🎯 Key Features

Features Overview

πŸ“š Academic Management

  • 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

πŸ“Š Marking & Grading System

Grading System

  • 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

πŸš€ Result Launcher

  • 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

πŸ“ˆ Analytics & Reports

  • 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

🌐 Web Portal

Result Portal

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

πŸ—οΈ Architecture

System Architecture

System Components

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

User Flow

User Journey

  1. Authentication - Login/Register with OTP verification via MailerSend
  2. Section Creation - Configure subjects and exam components
  3. Student Management - Add students in batch mode
  4. Mark Entry - Component-based mark entry with auto-scaling
  5. Result Calculation - Weighted total computation with CGPA
  6. Result Launch - Selective publishing with email distribution
  7. Portal Access - Students view results online

πŸ’» Technology Stack

Tech Stack

Desktop Application

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

Web Portal

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

Cloud & Services

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

πŸ“Έ Screenshots

Desktop Application

Dashboard Interface Modern dashboard with glassmorphic design and real-time statistics

Component Marking Component-based marking system with weighted calculations

Key Interfaces

πŸ“Š 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

πŸš€ Getting Started

Prerequisites

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)

Quick Start

Option 1: Download Windows Installer (Recommended)

  1. Download the latest release from Releases
  2. Run AcademicAnalyzer-1.0.0.exe
  3. Follow installation wizard
  4. Launch from Start Menu or Desktop shortcut

Option 2: Build from Source

# 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

πŸ“₯ Installation

Desktop Application Setup

  1. Download Installer

    • Get AcademicAnalyzer-1.0.0.exe from Releases
    • Size: ~149 MB (includes JRE)
  2. Install Application

    • Double-click the installer
    • Choose installation directory
    • Create desktop shortcut (recommended)
    • Add to Start Menu
  3. First Launch

    • Application will validate database connection
    • If .env is missing, configure database manually
    • Create an account or login

Database Configuration

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.net

Place this file in the application installation directory.


πŸ“– Usage Guide

1. Create Section

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%

2. Add Students

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

3. Enter Marks

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

4. Launch Results

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

5. View Results (Students)

Web Portal: https://academicanalyzer-portal.azurewebsites.net/results

  • Enter roll number
  • Select section
  • View detailed results
  • Download PDF copy

πŸ—„οΈ Database Schema

Database Schema

Core Tables (17 Total)

Authentication

  • users - User accounts and credentials
  • registration_otps - OTP verification for registration
  • password_reset_otps - OTP for password reset

Academic Structure

  • sections - Academic sections/classes
  • students - 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 definitions
  • component_groups - Component grouping logic
  • marking_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)

Key Relationships

  • 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


πŸš€ Deployment

Deployment Pipeline

Desktop Application Deployment

# 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)

Web Portal Deployment (Azure)

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"

Azure MySQL Setup

# 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.sql

πŸ“š Documentation

Comprehensive documentation is available in the /docs folder:

User Guides

Technical Documentation

Component Docs

Quick Links


πŸ› οΈ Development

Project Structure

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)

Build Commands

# 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.py

Environment Variables

Required 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_url

🀝 Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow Java code conventions
  • Add JavaDoc comments for public methods
  • Test thoroughly before submitting
  • Update documentation for new features
  • Ensure backward compatibility

πŸ› Bug Reports & Feature Requests

Found a bug or have a feature request?

Please include:

  • Detailed description
  • Steps to reproduce (for bugs)
  • Expected vs actual behavior
  • Screenshots if applicable
  • System information

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘₯ Authors

Mujutaba M N - Solo Developer & Architect

GitHub Email

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

πŸ™ Acknowledgments

  • 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

πŸ“ž Support

Need help? Reach out:


πŸ“Š Project Stats

GitHub repo size GitHub language count GitHub top language GitHub last commit


⭐ Star this repository if you find it helpful!

Made with ❀️ for Educational Institutions

Back to Top ↑

About

A comprehensive Student Management System with powerful academic analysis capabilities. Built with Java Swing, featuring flexible marking schemes, advanced analytics, and modern neumorphic UI design.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors