Post

Competition Registration System

Competition Registration System

KKTM PJ https://petalingjaya.kktm.edu.my/

After weeks of planning, building, and refining β€” this is the final form of my Competition Registration System developed for Pertandingan Inovasi KKTM Petaling Jaya πŸ’»βœ¨

Project Objective

The main goal was to simplify how participants register for the Innovation Competition. Previously, everything was done through manual Google Forms or spreadsheets, which made it hard to track submissions, manage data, and send out confirmations.

So I built a custom PHP-based web system with the following core features:

  • Online Form Submission (with proper input sanitization)
  • Document Uploading (PDF/DOC/DOCX proof of registration eg: the receipt of the payment)
  • Multiple Email Notification System:
    • Lecturers receive alerts when someone registers
    • Participants get a confirmation email
  • Admin Panel for managing the approval process
  • Log System to keep a record of every registration
  • Cyber-inspired UI with scroll animations and dark neon aesthetic πŸ§ πŸ’‘

How It Works

  1. Participant fills the registration form with team name, personal info, category, and uploads required docs.
  2. Backend PHP script processes the data, sanitizes inputs, saves it to a MySQL DB, and stores uploaded files in /uploads.
  3. It sends an email using PHPMailer:
    • One to the lecturer(s)
    • One to each participant in the form
  4. A log entry is created for every registration inside /logs/registration.log
  5. Admin can view, approve, or reject entries via the Admin Dashboard.

Tech Stack (Why I Chose Them)

TechReason
PHPEasy deployment on XAMPP + most Malaysian web hosts use it
MySQLLightweight DB + works seamlessly with PHP
PHPMailerHandles secure Gmail SMTP sending easily
Bootstrap + AOS.jsQuick, responsive styling with scroll animation flair
Jekyll + GitHub PagesFor documentation like this one 😎

Admin Panel Features

Accessible only to the event coordinator(s)

  • Login system (for now, it’s basic session-based)
  • List of registered participants
  • Approve/Reject system with status
  • Pagination and CSV Export functionality
  • Sends auto-email upon approval or rejection

Folder Structure Overview

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Innovation.kktmpj.edu.my/
β”œβ”€β”€ PHPMailer/                  # PHPMailer library
β”‚   β”œβ”€β”€ src/
β”‚   └── ... 
β”‚
β”œβ”€β”€ img/                        # Images (e.g., logo & banner)
β”‚   └── LOGO-WEBSITE.png
β”‚
β”œβ”€β”€ uploads/                    # Uploaded payment proof documents
β”‚   └── receipt.pdf                
β”‚
β”œβ”€β”€ logs/                       # Log folder for participant logs
β”‚   └── registration.log
β”‚
β”œβ”€β”€ css/                        # CSS Folder for UI and Animation
β”‚   └── style.css
β”‚   └── register.css
β”‚   └── about.css
β”‚   └── competition.css
β”‚
β”œβ”€β”€ index.html                  # Landing page
β”‚
β”œβ”€β”€ Register/                   # Participant registration form
β”‚   └── index.html
β”‚
β”œβ”€β”€ About/                      # Info of KKTM PJ
β”‚   └── index.html
β”‚
β”œβ”€β”€ Competition/                # Info About the Competition
β”‚   └── index.html
β”‚
β”œβ”€β”€ admin/
β”‚   β”œβ”€β”€ dashboard.php          # Admin panel interface
β”‚   β”œβ”€β”€ login.php              # Admin login page
β”‚   └── manage_participants.php # View & manage participants
β”‚
β”œβ”€β”€ submit_registration.php     # Form handler with email & logging
β”‚
└── config.php                  # Config file (DO NOT commit!)

Real-Life Usage

I presented this to my Lecturer before the deployment:

Presenting Presenting to Lecturer

This project wasn’t about coding, this project taught me how to handle backend logic, user experience, email systems, and most importantly, how to build something practical that actually gets used. I had to think about:

  • How the admins would filter and approve entries
  • How to make email responses feel official and informative
  • How to ensure the system works on both localhost and live server
  • How to make the site feel modern and techy, not just another bland form.

Future Features

  • Registration Form for Jury
  • Google reCAPTCHA to avoid spam
  • WhatsApp notification bot ( MAYBE ?)
  • Role-based access for multi-admin support

What I Learned

  • Handling file uploads securely
  • Building clean, readable email templates
  • Using PHPMailer for bulk & multiple recipients
  • Logging user actions efficiently
  • Designing a consistent UI with a β€œCyber-IoT” vibe

Have Inquiries or Question ?


Crafted with love, sweat & code, for Kolej Kemahiran Tinggi Mara Petaling Jaya

Thanks for reading! Feel free to explore the source code, give it a ⭐ if you found it helpful, or connect with me for any collabs or feedback!

This post is licensed under CC BY 4.0 by the author.