Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

πŸ›οΈ PRAGMATRIX 2026

Applied Management Carnival β€” Inter-Collegiate Fest

Organized by the Post Graduate Department of Business Administration, Seshadripuram College, Bengaluru


Java Jakarta EE MySQL Tomcat Maven Theme


πŸ“Œ Overview

PRAGMATRIX 2026 is an enterprise-grade, high-performance web application designed to manage, score, track, and broadcast live standings for the inter-collegiate management carnival. The platform caters to two premier flagship quiz events:

  • BizWizX β€” The ultimate business acumen and strategic decision challenge (customizable 4-round tournament).
  • Vortex β€” A curated applied management gauntlet across 4 fixed rounds: KAIROS, TREORAI, ENMA, and GRAND FINALE.

The application provides an Admin Command Center for team onboarding, round management, score submissions, and scorecard generation, along with a secure OTP-based Participant Dashboard delivering real-time live score updates.


πŸ–ΌοΈ Application Screenshots & Interface Showcase

1. 🌐 Public Landing Portal & Live Event Countdown

The public landing page features official institutional branding from Seshadripuram College alongside a live event countdown timer indicating competition launch timing and direct access to participant team login.

01-public-landing-countdown.png


2. πŸ” Admin Portal Access & OTP Authentication

Admin login is protected with secured authentication credentials and passwordless OTP verification cards built with an elegant royal glassmorphic theme.

Admin Portal Entry OTP Authentication Card
02-admin-login-portal.png 03-otp-authentication-modal.png

3. βš™οΈ Admin Command Center & Round Administration

The central administrative hub allows event coordinators to manage active quiz events, onboard new participating teams, configure round criteria, and track round statuses (ACTIVE, FINISHED, or LOCKED).

04-admin-dashboard-round-management.png


4. πŸ‘₯ Team Registry & Management Directory

Admins can view and search all registered teams across events (BizWizX and Vortex), inspect assigned Unique IDs (PMVX001, PMBZ001), trigger automated registration email resends, edit team details, or generate printable scorecards.

05-admin-teams-directory.png


5. πŸ“ Batch Score Entry & Criteria Evaluation Breakdown

Admins submit scores using a structured scoring interface supporting filterable team lists (Scored vs. Unscored), individual judging criteria parameters (e.g., Quality of Candidate Selection, Role-Job Fit, Team Strategy), dynamic score calculation, and score lock capability.

Batch Score Entry Overview Detailed Criteria Evaluation Modal
06-admin-score-entry-grid.png 07-admin-criteria-scoring-breakdown.png

6. πŸ† Real-Time Live Leaderboard & Excel Export

The live leaderboard computes tournament standings in real-time, allowing viewers to switch between BizWizX and Vortex leaderboards. Standings automatically update via AJAX background sync, and admins can export complete results directly into Excel (.xlsx).

08-live-tournament-leaderboard.png


7. πŸ“Š Participant Live Score Dashboard

Participating teams log in using their unique Participant ID and email OTP to track real-time score updates, view round-by-round points, monitor round statuses (FINISHED, IN PROGRESS, NOT ADVANCED), check overall tournament ranking, and download individual printable scorecards.

09-participant-live-dashboard.png


✨ Key Features

πŸ” 1. Admin-Only Team Registration & Onboarding

  • Restricted Access: Self-service public registration is disabled; only authenticated admins can create and manage teams.
  • Participant Identification: Automatically generates sequential, collision-free unique IDs per event:
    • PMBZ001, PMBZ002, ... for BizWizX
    • PMVX001, PMVX002, ... for Vortex
  • Instant Email Notification: Upon team creation, the system immediately dispatches a formal registration confirmation email containing the assigned Participant ID, event schedule, and venue details to the Team Lead's email.
  • Manual Email Dispatch: Admins can resend credentials with a single click from the team registry.

πŸ”‘ 2. OTP-Secured Participant Dashboard

  • Two-Step Passwordless Authentication:
    1. Team enters their unique Participant ID (PMBZxxx / PMVXxxx).
    2. System issues a cryptographically secure (SecureRandom) 6-digit numeric One-Time Password (OTP) sent directly to the registered Team Lead's email.
    3. Team enters the OTP to establish an authenticated session.
  • Security & Rate Limiting:
    • 5-minute OTP expiry window.
    • Maximum 5 wrong attempts before OTP lockout.
    • Anti-spam throttle: max 1 resend per 60 seconds and max 5 OTP requests per 15 minutes.
    • Server-side session tracking in database and HttpSession.

πŸ“Š 3. Real-Time Live Team Dashboard

  • Instant Score Tracking: Logged-in teams view their round-wise status, judging criteria, individual round points, total accumulated points, and current ranking.
  • Seamless Concurrent Updates (No Refresh Needed): Employs asynchronous background AJAX polling (every 10s) to reflect score updates and round status changes made by admins on the fly.
  • Interactive UI: Dynamic "Last updated" status indicators and visual state alerts for active vs. completed rounds.

βš–οΈ 4. Admin Management Hub

  • Multi-Admin Support: Seeded with 10 individual admin accounts (admin1 through admin10) with bcrypt-hashed passwords.
  • Round Administration: Edit round names (for BizWizX) and judging criteria; finish/lock rounds to compute leaderboard points or reopen rounds for audits.
  • Batch Score Entry: Transactional score entry grid with automated input sanitization and duplicate key updates.
  • Live Leaderboard & Printable Scorecards: Instant calculation of standings with dedicated, clean, printable scorecard generation tailored for event archives.

πŸ› οΈ Technology Stack

Layer Technologies / Libraries Purpose
Backend Runtime Java 17 (LTS) Core application logic and execution
Servlet Specification Jakarta Servlet API 5.0 (Jakarta EE 9+) Web controllers, filters, and routing
Presentation Tier Jakarta Server Pages (JSP) 3.0, JSTL 3.0 Server-side templating and views
Database MySQL 8.0+ Relational data persistence & transactional locking
Connection Pooling HikariCP 5.1.0 High-performance, low-latency JDBC pool
Security & Auth jBCrypt 0.4, Java SecureRandom Password hashing & OTP token generation
Mailing Service Jakarta Mail 2.1.3 + Eclipse Angus Mail 2.0.3 Automated SMTP email delivery
JSON Serialization Google Gson 2.10.1 Live score status AJAX endpoints
Styling & Theme Vanilla CSS3 (Custom Royal Design Tokens) Gold, purple, and ivory glassmorphism theme
Build Tool Apache Maven 3.8+ Multi-module dependency management & WAR packaging
Target Server Apache Tomcat 10.1+ / Eclipse Jetty 11+ Servlet container runtime

πŸ”„ System Architecture & Workflows

1. Team Onboarding & Registration Workflow

sequenceDiagram
    autonumber
    actor Admin as πŸ‘¨β€πŸ’Ό Admin
    participant App as πŸ’» PRAGMATRIX Server
    participant DB as πŸ—„οΈ MySQL DB
    participant Mail as πŸ“§ SMTP Server
    actor Lead as πŸŽ“ Team Lead

    Admin->>App: Submits team details (College, Lead Email, Names)
    App->>DB: Transaction: Lock & calculate next ID (PMBZxxx/PMVXxxx)
    App->>DB: INSERT into teams table
    App->>Mail: Trigger Participant ID confirmation email
    Mail-->>Lead: Delivers Participant ID & event guidelines
    App-->>Admin: Displays success state & email delivery status
Loading

2. OTP-Secured Participant Login & Live Updates

sequenceDiagram
    autonumber
    actor Team as πŸ‘₯ Team Member
    participant App as πŸ’» PRAGMATRIX Server
    participant DB as πŸ—„οΈ MySQL DB
    participant Mail as πŸ“§ SMTP Server

    Team->>App: Submits Participant ID (e.g., PMBZ001)
    App->>DB: Validates team existence & checks rate limits
    App->>DB: Generates 6-digit OTP (5-min expiry) & stores in team_login_otps
    App->>Mail: Sends OTP email to registered Lead Email
    Mail-->>Team: Delivers Login OTP
    Team->>App: Submits 6-digit OTP
    App->>DB: Validates OTP code, expiry & attempt count
    App->>DB: Marks OTP as used & creates team_sessions record
    App-->>Team: Grants access to Team Dashboard
    loop Every 10 Seconds (AJAX)
        Team->>App: GET /team/score-status
        App->>DB: Queries completed round scores & leaderboard rank
        App-->>Team: Returns JSON score payload & updates DOM
    end
Loading

πŸ“ Project Directory Structure

PRAGMATRIX/
β”œβ”€β”€ docs/
β”‚   └── screenshots/                     # Application UI interface screenshots
β”‚       β”œβ”€β”€ 01-public-landing-countdown.png
β”‚       β”œβ”€β”€ 02-admin-login-portal.png
β”‚       β”œβ”€β”€ 03-otp-authentication-modal.png
β”‚       β”œβ”€β”€ 04-admin-dashboard-round-management.png
β”‚       β”œβ”€β”€ 05-admin-teams-directory.png
β”‚       β”œβ”€β”€ 06-admin-score-entry-grid.png
β”‚       β”œβ”€β”€ 07-admin-criteria-scoring-breakdown.png
β”‚       β”œβ”€β”€ 08-live-tournament-leaderboard.png
β”‚       └── 09-participant-live-dashboard.png
β”œβ”€β”€ sql/
β”‚   β”œβ”€β”€ schema.sql                       # Full database schema and indexes
β”‚   β”œβ”€β”€ seed.sql                         # Quiz master data & default seed rounds
β”‚   └── migrate_v2.sql                   # Incremental migration (lead_email, OTP & sessions)
β”œβ”€β”€ pragmatrix-common/                   # Shared data access layer and utilities
β”‚   └── src/main/java/com/pragmatrix/
β”‚       β”œβ”€β”€ dao/                         # Data Access Objects (JDBC + PreparedStatements)
β”‚       β”‚   β”œβ”€β”€ AdminDAO.java
β”‚       β”‚   β”œβ”€β”€ OtpDAO.java
β”‚       β”‚   β”œβ”€β”€ QuizDAO.java
β”‚       β”‚   β”œβ”€β”€ RoundDAO.java
β”‚       β”‚   β”œβ”€β”€ ScoreDAO.java
β”‚       β”‚   β”œβ”€β”€ TeamDAO.java
β”‚       β”‚   └── TeamSessionDAO.java
β”‚       β”œβ”€β”€ model/                       # Shared Data Models
β”‚       └── util/                        # Encryption, DB pool & Email services
β”œβ”€β”€ pragmatrix-admin/                    # Admin Command Center application module
β”‚   └── src/main/
β”‚       β”œβ”€β”€ java/com/pragmatrix/admin/   # Admin Controllers, Filters & Servlets
β”‚       └── webapp/                      # Admin JSPs, CSS & Web resources
β”œβ”€β”€ pragmatrix-public/                   # Public Participant portal module
β”‚   └── src/main/
β”‚       β”œβ”€β”€ java/com/pragmatrix/public/  # Participant & Leaderboard Servlets
β”‚       └── webapp/                      # Participant JSPs & Live Leaderboard views
β”œβ”€β”€ pom.xml                              # Root multi-module Maven POM configuration
β”œβ”€β”€ Dockerfile                           # Docker packaging specification
β”œβ”€β”€ DEPLOYMENT.md                        # Deployment & hosting documentation
└── README.md                            # Complete Project Documentation

πŸ—ƒοΈ Database Schema

                           +----------------------+
                           |       quizzes        |
                           +----------------------+
                           | quiz_code (PK)       |
                           | quiz_name            |
                           | id_prefix            |
                           +----------+-----------+
                                      | 1
                                      |
                                      | N
+----------------------+   +----------+-----------+   +----------------------+
|       admins         |   |        teams         |   |        rounds        |
+----------------------+   +----------------------+   +----------------------+
| admin_id (PK)        |   | unique_id (PK)       |   | round_id (PK)        |
| username (UQ)        |   | quiz_code (FK)       |   | quiz_code (FK)       |
| password_hash        |   | college_name         |   | round_number         |
| full_name            |   | lead_email           |   | round_name           |
| created_at           |   | student1_name        |   | judging_criteria     |
+----------+-----------+   | student2_name        |   | is_finished          |
           |               | student3_name        |   | finished_at          |
           |               | registered_at        |   +----------+-----------+
           |               +----+-------------+---+              |
           |                    |             |                  |
           | 1                1 |           1 |                1 |
           |                    |             |                  |
           | N                N |           N |                N |
+----------+--------------------+---+    +----+------------------+---+
|              scores               |    |      team_login_otps      |
+-----------------------------------+    +---------------------------+
| score_id (PK)                     |    | otp_id (PK)               |
| unique_id (FK)                    |    | unique_id (FK)            |
| round_id (FK)                     |    | otp_code                  |
| points                            |    | generated_at              |
| entered_by (FK)                   |    | expires_at                |
| entered_at                        |    | is_used                   |
+-----------------------------------+    | attempt_count             |
                                         +---------------------------+
                                                      | 1
                                                      |
                                                      | N
                                         +------------+--------------+
                                         |       team_sessions       |
                                         +---------------------------+
                                         | session_id (PK)           |
                                         | unique_id (FK)            |
                                         | created_at                |
                                         | expires_at                |
                                         +---------------------------+

πŸš€ Setup & Installation Guide

1. Prerequisites

  • Java Development Kit (JDK): Version 17 or higher
  • Apache Maven: Version 3.8+
  • MySQL Server: Version 8.0+
  • Web Server / Servlet Container: Apache Tomcat 10.1+ (supports Jakarta EE 9/10)

2. Database Initialization

  1. Log in to your MySQL terminal or GUI client (Workbench, DBeaver):
    mysql -u root -p
  2. Execute the base schema and seed scripts:
    SOURCE sql/schema.sql;
    SOURCE sql/seed.sql;
  3. (If updating an existing installation), run the migration script:
    SOURCE sql/migrate_v2.sql;

3. Application Configuration

A. Database Connection (pragmatrix-common/src/main/resources/db.properties)

Update the connection string and credentials to match your MySQL environment:

db.url=jdbc:mysql://localhost:3306/pragmatrix2026?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=UTF-8
db.username=root
db.password=YourMySQLPassword
db.pool.maxSize=15
db.pool.minIdle=5

B. SMTP Mail Settings (pragmatrix-common/src/main/resources/email.properties)

Configure your SMTP mail credentials to enable automated Participant ID confirmation and Login OTP emails. For Gmail:

  1. Enable 2-Step Verification on your Google Account.
  2. Generate an App Password under Security > 2-Step Verification > App passwords (Select "Mail" / "Other").
  3. Populate pragmatrix-common/src/main/resources/email.properties:
email.smtp.host=smtp.gmail.com
email.smtp.port=587
email.smtp.username=your-institution-email@gmail.com
email.smtp.password=abcd efgh ijkl mnop
email.from.address=your-institution-email@gmail.com
email.from.name=PRAGMATRIX 2026

4. Build & Deployment

Build Deployable WARs

Execute Maven from the repository root:

mvn clean package
  • Deployable WAR files will be generated at:
    • pragmatrix-admin/target/pragmatrix-admin.war
    • pragmatrix-public/target/pragmatrix-public.war
  • Copy the WAR files into your Tomcat webapps/ directory and start Tomcat:
    • Windows: catalina.bat start
    • Linux/macOS: ./catalina.sh start
  • Access the web applications at:
    • Admin Portal: http://localhost:8080/pragmatrix-admin
    • Public Portal: http://localhost:8080/pragmatrix-public

πŸ‘₯ Default Credentials

Admin Accounts

The system automatically provisions 10 administrative accounts on startup if not already present:

Username Default Password Role
admin1 Pragmatrix@2026 Quiz Administrator
admin2 Pragmatrix@2026 Quiz Administrator
admin3 to admin10 Pragmatrix@2026 Quiz Administrator

πŸ”’ Security Notice: Change default passwords in production via the administrative user management interface or database bcrypt update.


πŸ›‘οΈ Security Architecture

  • SQL Injection Prevention: 100% of database interactions are implemented using strictly parameterized PreparedStatement queries.
  • Credential Protection: Passwords are encrypted with salted BCrypt hashing.
  • OTP Hardening:
    • Generation relies on java.security.SecureRandom.
    • Single-use execution enforced by atomic state updates.
    • Invalidation of obsolete OTP tokens prior to new generation.
  • Session Integrity: Team and Admin routes are guarded by dedicated HttpFilter instances (AdminAuthFilter and TeamAuthFilter) preventing unauthorized endpoint bypass.

πŸ“œ License

PRAGMATRIX 2026 is published under the terms of the project's standard LICENSE.


Created for the Post Graduate Department of Business Administration, Seshadripuram College, Bengaluru.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages