Confetti Bits

An interactive, gamified, and responsive Wordpress plugin, that uses the Wordpress REST API, and works in tandem with the BuddyBoss Platform plugin.

Project Overview

Confetti Bits is a Wordpress plugin (gross, I know) that was designed to help employees engage more with their company culture. It has an events calendar, a leaderboard, a request form and more.

Technologies Used

    PHP
    Javascript
    jQuery
    HTML
    CSS

Key Features

~ The events calendar allows users to view upcoming events, and claim their participation. Admin users can schedule and manage company events.

User Interface Time!

Here are some screenshots of the user interface. Each photo gives a bit more insight for what each feature provides for the user experience.

Latest Tech Demo

I recorded a tech demo to show some of the latest features I've been working on. Check it out!

Project Reflection

I learned a ton with this project. When I started working on this program, my title hadn't even been changed to "Web Developer" yet. I was still technically a graphic designer. Because I've fiddled around with programming since I was a kid, I was able to really easily transition to a technical role, and I'm grateful to have had the opportunity to do that at my job, instead of something I would have to work on outside of my normal work hours.

I learned how to build my own PHP programs from scratch, how to work in several distros of Linux; I learned all about the cloud, I brought a ton of our service sites in from being managed by third-party vendors, and even transitioned our entire infrastructure to AWS.

This project is a big reason why this site's not super robust; it was the thing that kept me occupied the longest, and gave me more tools to use than I ever knew I needed. Now I can do some pretty gnarly acrobatics with a text editor, even without external tools like ChatGPT or Copilot.

Here's how it all started

Around September 2021, my boss reached out to me with the idea of a "culture gamification system" that they wanted built. They needed to a way to help people at the company engage more with internal culture, to try and boost workplace morale a bit.

It was originally just supposed to be a simple program that would allow users to a) participate in company events, b) get points for doing that, and c) be able to use their points for company rewards. Is that technically company scrip, re-marketed as something fun and exciting? If it's not, it's pretty dangerously close. Because of my short-sightedness, it really sounded like a harmless project at the time, so I continued onward with its development.

There needed to be a way to easily track and reward employee participation, allow employees to trade and redeem their points for things, and there needed to be an intuitive way for the points to be tied to in-company events.

What I thought I should do

At the time, my boss had just found a new shiny WordPress plugin that would basically set us up with a company intranet, and I was tasked with setting it up. Because it was WordPress-based, we decided that Confetti Bits could probably be tied into that somehow, because with WordPress, "there's a plugin for that!"

There was not a plugin for that. At least, none that had a points system, event scheduling, a web store, and a social media intranet, all in the same box. So, I had to build it from scratch.

I learned so much about PHP and WordPress. I appreciate it for its purpose as a free and open source content management system, and for the power it gives to people without a ton of programming knowledge. Devs can complain all they want about PHP, the WP documentation, the fact that they still use a ton of jQuery - whatever other silly qualms they think up along the way as well. It's what I had to work with.

What I did

For a while, the plugin was basically a pile of quick and dirty PHP utilities. I relied pretty heavily on manual data entry solutions, like having a link to a monthly sign-up sheet get emailed out, and importing all the data from that with PHP's file-handling capabilities. The templating was super basic at first; there was a place to send bits to people, a leaderboard, and a paginated list of transactions. It became clear after a while that this was pretty unsustainable and didn't really serve the purpose we were hoping for.

For a little extra spice, I started using the iOS and Android push notification APIs to give employees a ping any time they got points. I also implemented the requests feature within the first 6 months, which helped establish it as a "technically functional" app. The system would automatically track some participation actions, but I was still manually importing a load of points. I needed to focus my attention on my other projects, so I started work on building features that would let me do that.

In October 2023, I officially launched the events component that took a ton of the work out of the process. Admins could create new events in seconds, and users could claim their participation with a single click. At the company, we also had an initiative for "Spot Bonuses", where an employee was chosen each week to receive a small bonus, some points, and a shoutout on social media; I automated that by using some of the scheduling functionality from the events component, and setting up a CRON job that runs every week to dole out points. It was wildly easy to use, and it covered all our bases; it gave us events, the ability to do contests with placements, and all of it was painless, damn near enjoyable.

What happened after

It was definitely a slow burn, but eventually it was successful. It provided the company the ability to measure culture engagement and convert those metrics into actionable items; it gave people something to look forward to at work, outside of just daily tasks; it helped me grow exponentially as a developer. While there is still room for improvement, there is now a super solid foundation for the company to build upon.

What I learned

While the system was a success, there is still room for improvement. It could use more quality control measures. It's also important to note the length of time it took to develop - it was about 3 months from its inception in September 2021, to its initial launch. At the time of this writing, the system has been improved upon over 18 months, documented, and deployed, all by one person. It's a good reminder that, while it's important to get things done, it's also important to take the time to do things right.

I learned a ton about writing documentation. I ended up documenting the whole project, and using phpdoc to convert it to a static site, deployed on GitHub pages.

Throughout the development process, I received some feedback from the company's leadership, but I would sometimes receive feedback or questions from other employees as well. The feedback was always crucial to finding ways of improving the product, and helped me better tailor the system to meet needs I hadn't always considered.