Inspiration
I thought it would be cool to create a simplified Product Hunt like website where all you needed to provide to launch a product was a single emoji. Obviously you'd still have to provide a name and short description as well but I wanted to make it as simple as possible.
What it does
Emoji Launch has a main page where you can see featured products for that day. You can upvote products you think are cool and the ones with the highest upvotes will be at the top. If you click on the product name or emoji it will open the submitted product link.
If you submit your own product you'll receive an email with a link to edit your submission. There's also a dashboard which moderators can log into to approve or reject submitted projects.
How I built it
The backend is a node.js express app and the frontend is just vanilla javascript, html, and css. It's backed by a PostgreSQL database and the app is running off of my own web server. I'm using NGINX for request routing and gzip compression and I'm also using Certbot for the ssl certificate.
Challenges I ran into
Storing emoji characters can be problematic since some emojis (especially the skin tone specific ones) use more than one byte each. So you can't expect all emojis to fit in a single char in the database. In fact, calling .length on some of them result in 7!
Accomplishments that I'm proud of
It's the first time I've ever used PostgreSQL (I normally use MySQL) so it was cool being able learn the slightly different syntax and how to use the different libraries required to make it work to power the application.
This was also the first time I've ever added reCAPTCHA validation to a web app. I added it on the submit page to cut down on the potential spam since you're not required to be authenticated before submitting.
What's next for Emoji Launch
I want to improve the user experience on the homepage by including pagination or lazy loading for products from previous days. Right now it just returns all products with the launch date of today or past. It's not a huge issue right now but as more days pass and more products get submitted the request will become heavier and heavier.
While it was a fun challenge to create the frontend using vanilla javascript, it would be more maintainable and scalable using a framework. I'd like to go back and remake some of the components and pages with React.js.
I'd also love to add more metrics like number of link clicks so users can see how their products are performing on the site beyond just upvotes.
Log in or sign up for Devpost to join the conversation.