The goal of this project is to make Slack, Discord, Teams, etc., just a bit more fun. Since being remote both at work and at school, I practically live on each of these platforms. Emojis can be a great way to connect with your team and share some laughs, so this project helps alleviate emoji-fying your teammates.

This was also a learning project for me--I really wanted to learn Rust and took this as an opportunity to do it. (In that way, it was definitely a bit of a "scratch your own itch" project too.)

NOTE: I didn't manage to finish this project :( it's still a WIP! I figured I'd log where I got to here, but it is not currently functional.

This project effectively involves 3 steps.

  1. Upload photos of you, your teammates (group photos, or as individuals), and other generic memes and custom emojis you want to a folder.
  2. Install this tool
  3. Run moji <input_folder_path> <output_folder_path> <slack_url> at the command-line
  4. Grab a coffee...
  5. Go find Slack emojis of you and your team up on your workspace!

Inspiration

I'd been a workspace admin a few times and seen just how fun it is to have custom emojis, especially fun photos of your teammates. I finally got around to hacking out a project that does this in drastically less time!

What it does

tl;dr it creates Slackmojis from faces in bulk. These are the same steps as above, but in a bit more detail.

  1. (Okay, this is the same--just upload any photos.)
  2. The tool is a command-line application written in Rust; it can be installed with cargo
  3. Running the command-line does three things: a) reads in the photos from the target directory, b) uses OpenCV to find faces in the images c) crops the face, and d) blurs the background (to fix the sometimes awkward rectangle crop). If there are no faces detected, it skips c) and d).
  4. It POSTs to your Slack workspace each of your emoijs. (Custom name support TBD!)
  5. The Slackmojis are then accessible!

I'm still implementing 4) and 5), but I'm almost there!

How we built it

It's a command-line tool written in Rust. It was inspired by emojme, a project with a similar goal. I hope to eventually add a web UI, Discord support, and GIF support.

Challenges we ran into

This was the first thing I ever made it Rust, so all things considered it went surprisingly okay. However, I definintely spent a fair amount of time just learning the Rust programming language.

Accomplishments that we're proud of

I feel much more comfortable with Rust, CLI best practices, and worked with OpenCV for the first time ever.

What we learned

  • Always make sure to check for similar libraries or projects before starting your idea to check for already existing features (and when you can differentiate).
  • Working with the Slack API is tricky... so we might need to hack an in-browser workaround

What's next for slackmojify

  • Wrapping up the implementation
  • Create a web UI
  • Launching a landing page and marketing to friends

Built With

Share this project:

Updates