At the start of my grade 11 computer science class, we were introduced to a broad, open-ended, and innovative project that focused on a topic of our choice. My family does a secret Santa gift exchange by physically drawing names out of a hat, and I thought it would be fun to design an automated secret Santa organizer.


My goal for this project was to bring people together in a time when we were isolated from our family members during the holiday season due to COVID-19. This project created a fun way to maintain our traditions in a safe manner by using technology for our secret Santa draw instead of paper (in-person).

What it does

To use the Secret Santa Organizer a user must first sign-up, this information will then be stored in phpMyAdmin in order to allow that user to log back in at a later time. Once signed in, the user can enter the number of participants (3-12) in a draw, and then the program will spit out a list of the buyer's names with the receiver's names covered as seen in the video demonstration. Apart from that, the Secret Santa Organizer also has a built-in customer support page which also uses phpMyAdmin to store the data sent from the customer support page.

How I built it

As mentioned above, one program I used was phpMyAdmin, phpMyAdmin is basically a software accessory that is used to aid a database server. On phpMyAdmin, you can create a database, or run queries which allow you to create, copy, delete, or change data. For my Secret Santa Organizer, I used phpMyAdmin to create a database named secret_santa_login which had two tables to store specific data. I used the table named "clients" to store the login information, and I used the table "client_help" to store the customer support data. Apart from phpMyAdmin, I also used PHP for the back-end functionality such as shuffling the participant's names. To shuffle the participant’s names, I used the PHP rand() and the shuffle() function so that I could be part of the secret Santa draw as well. The shuffle() function can be used to randomize the order of a given array and the rand() function is used to output a random integer. Please note that the PHP rand() function does not generate truly random data but instead uses an initial value as a 'seed' which then can be used to generate seemingly random data using a mathematical function. Finally, I also used CSS and HTML for the front-end formatting.

What I learned

This project greatly developed my perseverance and problem-solving skills as I ran into many challenges along the way. Almost nothing about this project was smooth sailing, I would figure out how to use the CSS z-index property, which specifies the stack order of an element, only to realize that the PHP form wasn't formatting properly. This kind of process continued throughout most of the project, however, I feel that as I continued the problems got easier to fix and less frequent because I started to understand the languages and how they work together. Overall, I am happy that I had the chance to work on an open-ended project like this and I feel like I learned various, valuable creative problem-solving skills.

Share this project: