Project Overview
Axiom is a production-grade web application that replaces manual attendance calculations with an intelligent, real-time simulation engine. Students can simulate future attendance decisions, check ISE exam schedules, and receive smart notifications about their academic standing — all through a premium dark-mode interface.
The system consists of two layers:
| Layer | Technology | Purpose |
|---|---|---|
| Java Backend Core | OOP-based Java with Swing GUI | Original attendance logic engine — the foundation of all calculations |
| Web Application | Vite + Vanilla JS + CSS3 | Live-deployed SPA translating Java OOP into a globally accessible browser experience |
OOP Concepts — FEL205 Syllabus Mapping
Module 1 — Introduction to OOP
| OOP Concept | Implementation in Axiom |
|---|---|
| Class & Object | AttendanceLogic class; objects hold subject attendance state per instance |
| Encapsulation | Private fields attended, total accessed only via public methods |
| Abstraction | AttendanceLogic abstracts raw math — GUI calls calculatePercentage() without knowing the formula |
| Inheritance | AttendanceGUI extends JFrame — inherits entire Window framework |
| Polymorphism | calculate() behaves differently for leave buffer vs recovery calculations |
| Message Passing | ActionListener.actionPerformed() — button object sends message to logic layer |
Module 2 — Class, Object, Packages & I/O
// Encapsulation — private fields with public methods
private int attended;
private int total;
public double calculatePercentage() {
return (attended / (double) total) * 100;
}
Additional patterns: this keyword in constructors, static mark bracket constants, private/public/protected access modifiers throughout.
Module 3 — Arrays, Strings & Vectors
// All 13 subjects stored in an array of objects
SubjectData[] subjects = new SubjectData[13];
subjects[0] = new SubjectData("AM-II", 39, 35);
// String manipulation for notification messages
String msg = String.format("Attend %d more classes to reach 75%%", recovery);
Module 4 — Inheritance, Polymorphism & Abstraction
// Inheritance from JFrame
public class AttendanceGUI extends JFrame {
public AttendanceGUI() {
super("Axiom — Attendance Dashboard");
setLayout(new GridBagLayout());
}
}
// Method Overriding — ActionListener interface
calculateBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
performCalculation(); // polymorphic dispatch
}
});
Module 5 — Exception Handling
try {
int attended = Integer.parseInt(attendedField.getText());
int total = Integer.parseInt(totalField.getText());
if (total == 0) throw new ArithmeticException("Total cannot be zero");
if (attended > total) throw new IllegalArgumentException("Attended > Total");
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, "Please enter valid numbers.");
} catch (ArithmeticException | IllegalArgumentException e) {
JOptionPane.showMessageDialog(this, e.getMessage());
}
Module 6 — GUI Programming in Java (Swing)
| Component | Used For |
|---|---|
JFrame | Main application window |
JPanel | Subject card containers |
JLabel | Subject names, percentage display |
JTextField | Attended / Total class inputs |
JButton | Calculate trigger with ActionListener |
JScrollPane | Scrollable multi-subject dashboard |
GridBagLayout | Responsive card-based layout |
Font, Color | Dark mode UI styling equivalent |
Core Formulae
Internal Marks Bracket System
| Attendance % | Internal Marks | Status |
|---|---|---|
| ≥ 95% | 5 / 5 | Maximum |
| ≥ 90% | 4 / 5 | Excellent |
| ≥ 85% | 3 / 5 | Good |
| ≥ 80% | 2 / 5 | Average |
| ≥ 75% | 1 / 5 | Minimum Safe |
| < 75% | 0 / 5 ⚠️ | Red Alert |
Key Features & Uniqueness
144Hz Liquid Glassmorphism Intro
CSS @keyframes + backdrop-filter blobs swirl at hardware-accelerated frame rates. Zoom locks onto the "i" in Axiom using precise DOM coordinate math.
Secure Multi-User Authentication
PRN-based login with real-time username recognition. Dynamic "Welcome Sharvin" heading animates with blur-to-focus spring easing the instant credentials are recognized.
Simulation Engine
[ + Attend ] and [ − Bunk ] buttons simulate future classes and instantly recalculate percentage, marks, and leave buffer without touching historical data.
Smart Notification System
Toast alerts fire on login with iOS audio for RED ALERT (<75%), MANDATORY (0 buffer), and UPGRADE POTENTIAL (within 2% of bracket jump) states.
ISE Exam Calendar
Live countdown cards with red/amber urgency glow for upcoming Internal Exams. Reminder toasts fire automatically on login if exam is within 3 days.
Global Deployment
Deployed on Vercel's global CDN — accessible worldwide from any browser with zero installation. Production build completed in 248ms via Vite 8.
Viva Q&A Preparation
AttendanceGUI extends JFrame demonstrate?AttendanceGUI inherits all properties and methods of JFrame — such as setTitle(), setSize(), setVisible() — without re-implementing them. This is single inheritance in Java.attended and total fields in AttendanceLogic are declared private. External classes access them only through public methods like getPercentage(), protecting internal state integrity — the core principle of encapsulation.ActionListener interface's actionPerformed() method is overridden for each button (Calculate, Bunk, Attend). Same method signature — different runtime behaviour depending on which button fired. This is runtime polymorphism via method overriding.currentTotal and currentAttended state — analogous to Java instance variables. Clicking Bunk/Attend mutates private state and triggers a re-render, exactly like a Java setter mutating encapsulated fields.addEventListener('click', handler) is functionally identical to Java's addActionListener(new ActionListener(){...}). Both register a callback invoked when a user interaction fires — this is the Observer / Event-Driven programming pattern, directly from Module 6.ISE Exam Schedule
| Subject | Type | Date | Status |
|---|---|---|---|
| EG | ISE | 08-Apr-2026 | ✅ Completed |
| DSD | ISE | 09-Apr-2026 | ✅ Completed |
| AC | ISE-I | 09-Apr-2026 | ✅ Completed |
| AC | PPT | 16-Apr-2026 | 🔴 Urgent |
| AM-II | ISE-II | 17-Apr-2026 | 🔴 Urgent |
Team
Sharvin Mhatre · 125BT041016
Architect & Lead DeveloperConceptualized the entire project and built the full web application — SPA routing, 144Hz liquid animations, secure PRN-based authentication, real-time simulation engine, smart notification system, ISE calendar, Web Audio API integration, and Vercel deployment.
Sharvani Jorwekar · 125BT041007
Feature ContributorProvided real SIES ERP attendance data, contributed feature requirements and real-world use-case scenarios that shaped the leave simulation and notification alert systems.
Kashvi Kurkute
Implementation PlannerContributed to the project roadmap, implementation planning, and the structural design of the attendance calculation logic flow and module architecture.
Summary
Axiom successfully demonstrates all six modules of the FEL205 OOP syllabus through a dual-layer implementation.
| Layer | Key OOP Concepts Demonstrated |
|---|---|
| Java (Swing) | Classes, Objects, Encapsulation, Inheritance (JFrame), Polymorphism (ActionListener), Exception Handling, GUI with AWT/Swing |
| Web App (JS) | Module pattern (Encapsulation), Closures (State), Event-driven programming (Observer), DOM abstraction, Deployment engineering |