I want to take a moment to express my heartfelt gratitude and appreciation to everyone who helped with our Fall Cane’s fundraiser. I appreciate and am grateful for everyone, especially those selling in lunches–Abi, Angel, Ali, Maeve, Ruby, Ellie, Gissell, Jordan, and Landon– and the trust you all had with the tool I had made making this fundraiser possible.
I also want to recognize the individuals I may not know as well–Daylah, Braylen, Nathan, and Tatiana. Your hard work didn’t go unnoticed, and I appreciate all the time and energy you all dedicated to this fundraiser. One more thing, Daylah sold 48 tickets putting her at the most sold tickets on the leaderboard, with Ellie selling 46 at a close second. I want to finally recognize Mrs. Speltz, Dr. Rodgers, and the other countless APs for making this possible.
And to those who were scanning tickets, getting drinks ready, getting boxes ready, and picking them up from the office the day of, you helped make a 90-person line go down to 0 in less than 8 minutes. I recognize every single one of you who put in effort in making this fundraiser a success, and I am thankful for all of you.
Creating stuco.me was a privilege and a challenge, as I was experiencing personal difficulties at the time of development. Despite that, seeing it spring out into life and play a role in our fundraiser is something I will not take for granted, and it made the effort worthwhile.
Through my journey of creating websites that have grossed 5 figures helping support my family to creating blogging sites with my friends for fun, StuCo.me will have a special place in my heart. While I’m incredibly proud of what it accomplished for our fundraiser, there were moments when I felt its significance wasn’t fully recognized.
You all did an amazing job, and again, I am grateful for all the effort everyone put in.
When building stuco.me, my goal was to make a ticketing system that was not ugly and fast. I settled to build in on a headless wordpress install with a custom-coded API, Custom QR scanner, and Custom Schemas (database) on top of an NGINX (engine-x) server.
Although stuco.me is not the prettiest website or project I’ve created, it is beautiful in its own way, as it perfectly fits the function perfectly. It is fast (FCP: 1 second), it can return DB results in less than .00001 seconds, it can handle 8 stuco members at once (running 50 DB results per member without even reaching its resource limit).
Creating stuco.me was interesting… First, I needed somewhere to start, and my mind jumped to WordPress, an open-source blogging platform built on PHP. There was one issue, though, WordPress is meant for blogging.
However, you can use WordPress headless, a WordPress installation without the fancy website or UI attached to it while having all the major features using an API, such as its premade schemas and user authentication.
Due to the short time constraints of this projects deployment stuco.me was originally going to be built on node.js, but I settled for headless wordpress for its robust reliability and integrated features. The frontend is built on HTML, CSS, JS, and PHP.
Knowing that I wanted a headless WordPress install, I created a custom API with a custom DB table. This is where all the tickets would be stored.
After I created a simple front-end website with HTML, CSS, JS, and PHP. Using API requests. Below I’ve attached a basic PHP api using the wpdb command to get the custom tables results.
function get_ticket_data($params) {
global $wpdb;
// Authorization
$temp_auth = json_decode($params->get_param('auth'));
if ($temp_auth !== "HIDDEN") {
return ["error" => "Unauthorized access"];
}
// Fetch tickets from the database
$results = $wpdb->get_results("SELECT * FROM TABLE", ARRAY_A);
if (empty($results)) {
return ["error" => "No tickets found"];
}
// Format the data
$formatted_results = [];
foreach ($results as $row) {
$formatted_results[] = [
"ID" => $row["_ID"],
"status" => $row["cct_status"],
"student_id" => $row["student_id"],
"name" => $row["name"],
"email" => $row["email"],
"payment_type" => $row["payment_type"],
"redemption" => filter_var($row["redemption"], FILTER_VALIDATE_BOOLEAN),
"redemption_date" => date('Y-m-d H:i:s', $row["redemption_date"]),
"grade" => $row["grade"],
"created_at" => $row["cct_created"],
"modified_at" => $row["cct_modified"],
"lunch_period" => $row["lunch_period"]
];
}
return $formatted_results;
}
Deployment was one of the harder parts. I wanted a net 0 cost to StuCo, so I applied for student education benefits and got them approved for a free server. Unfortunately, it was not managed, so I had to relearn how to manage a server (something I haven’t done in 3-4 years). I had to install all required libraries (PHP, NGINX, etc), and before that, I had to harden the server to attacks.
After installing WordPress and uploading the site files I had locally, stuco.me sprung into life. It was a time-consuming process, especially during that specific period of my life, but I was happy the first time it loaded.
To get the word out we needed engaging quality posts. I settled on creating custom graphics in figma. The design I had envisioned was to create something open modern yet still conveying the message about the fundraiser. There is no real way to explain how I wanted it but the best way to understand it is if you applied a V curve EQ to a song. It clears out the mids only allowing the highs and lows to shine.
Made with 💖 by Anmol