Frenco
Frenco's Blog

Follow

Frenco's Blog

Follow
VouchByMe - A social network for personal recommendations I guess

VouchByMe - A social network for personal recommendations I guess

How my attempt to create an MVP within a month went miserably wrong.

Frenco's photo
Frenco
·Feb 28, 2021·

15 min read

Project URL: d2mylahvc7nc1a.cloudfront.net
Repository: github.com/frencojobs/vouchbyme

It all started with Hashnode. It was the 28th of January. I just published an article about a project I made for the Vercel Hashnode Hackathon. I was feeling really good. It was my very first article on Hashnode and it was pretty fun to write. So, I decided I'm gonna write another article pretty soon.

I didn't really want to write about my opinions, it's no fun. I only wanted to share my experiences throughout my journey in building things and learning stuff. It's just my personal preference. So I decided I'm going to start a project to write about, and started to find an idea.

Finding the Idea

Ideas are worthless.

Alexis Ohanian, from Without Their Permission

I recently started reading this book called "Without Their Permission" by Alexis Ohanian. I haven't finished it yet. But it has been so good so far. One of the things I've learned from the book is that ideas are actually worthless. But I thought they were one of the precious things a person like me can get. I really thought that. That's why I started collecting ideas in a notebook during my first year of college. Now that I've learned that ideas are essentially worthless without a proper/good execution, I introspect that I probably should stop collecting ideas and start doing them. Instead of waiting for the best idea, I probably should start to try to build them. At least I'll get experience in that case, right?

Enough talking, I just picked one of the ideas from my notebook and chose a timeframe I could fit it in. Here is the idea plus the problem statement.

The Problem

Did you ever have this kind of situation when you share a screenshot of a snippet from your laptop, and someone started asking you what font and theme are being used? I bet you had.

The situation is that people like the way you do things so they started asking what tools you use to do these things. In some cases, it's so common that some people started making a dedicated page on their portfolios called "My Gear". Now all you have to do is to send people the link if they ever asked you about your stuff.

My idea is just that. I'm gonna make an app that allows people to create their own personal web pages about the kinds of stuff they use. But the idea is probably too straightforward for people to like it. So I decided to mix it up with a few more fancy ideas. I decided it will be called VouchByMe (a name that is easy/cheap to get a domain for).

My Solution

VouchByMe will almost be like a social network. Users can sign up and create their own personal profile pages that are SEO-ready and have nice & clean URLs. On their own profile pages, they can post collections about stuff they like or use. I call it vouching (like Twitter calls it tweeting). They're going to vouch for these kinds of stuff, and other people can see it. Other people can also vouch (that they agree that this stuff is cool) for these posts and there's going to be a central timeline where people can see all of the trending collections. It's almost like Twitter but for vouching. But, there will be perks like being easier to share links and embed third-party links (such as Spotify songs if you want to share your playlist on here).

I decided that two weeks should be enough to finish the project. I was going to start the project on the 1st of February. It was all set, and even a Todo list was made. What could possibly go wrong?

Murphy's Law

Anything that can go wrong will go wrong.

It was the 1st of February. Before I even wake up, a coup d'état happened, the elected government got dethroned, and just like that Myanmar is now in a year-long state of emergency. Democracy is gone, and so are our rights to freedom. The internet got limited only to the daytime and it got intolerably slower. Quite a handful of websites got banned including Twitter, Wikipedia, and some AWS services. What could possibly go wrong, huh?

I kinda forgot about the project and thought I couldn't possibly do it this month with all these things happening around us including police brutalities against peaceful protesters. I decided that I'm not gonna do it.

AWS Amplify ?

It was already half past February when I read about the Amplify Hashnode Hackathon and I was enthralled. I've heard of AWS before but never heard about this thing called Amplify. But I wanted to learn it, so I decided I'm gonna give it a try. I'm gonna be participating in the hackathon.

It was only about a week left, so I thought the VouchByMe idea is not gonna be possible. It's probably too big to be done in a week, and I have no prior experience with AWS. I have to learn as I go along. But I thought I'll need to think about it again.

That decision took me a day. I decided I'm gonna do it. I knew it was not gonna be fun but I thought why not give it a shot.

First Obstacle

My first reaction to Amplify was like, "Yo, this is so easy and so nice". The first thing I did was building a working authentication system, and it was easy. I was using Amplify CLI and Amplify React UI Components. It didn't even take me an hour to get that going. But then I realized that all these prebuilt components are not so customizable. It took me about a day trying to customize it to fit with the design system I was using. And it simply wasn't possible, and I had to learn to write my own components using Auth. It was also very easy, but I wasn't happy it took a day off the week.

Second Obstacle

I have watched a few of Ben Awad's videos and know about that GraphQL thingy, how it works and how to use it. But I have never used it before, not in an actual project. And I was kinda scared that it's gonna slow me down but I was wrong. I found this awesome amplify workshop and it was enough for me to get going quick. It's one of the best tutorials I've seen so far. What slowed me down was me messing with the GSI from DynamoDB. It went like this. I tried to change some index properties in the schema. It wasn't working. So I decided I'm gonna use a new table instead and manually go and deleted tables in DB. Just like that, everything broke and stopped working, and I eventually had to replace the current Amplify backend with a new backend. Things went back well soon, but it was definitely a very scary experience.

Third Obstacle

Amplify uses this service called Cognito to handle authentication stuff. But what I don't like about it is that it handles all user data separately by itself. It wasn't possible to get the user data together as part of the GraphQL API. So I decided to store the user data separately in the DB and only use Cognito for authorization. The plan is to initialize a user row in the table once a user is signed up and confirmed in Cognito. But to do that I need to make a Cognito trigger and set up a Lambda function for that and I did not know how to. I spent a day searching for similar StackOverflow Questions, GitHub issues, and examples, and couldn't find a thing. Then after I've lost so many hopes, I found a YouTube video by Nadar Dabit covering the same exact usage. And it was posted only about a week ago.

I believe things happen for a reason. If I started working on this project earlier than this, I would've had stuck there forever. Anyway, thanks, Nader.

Fourth Obstacle

Ok, I promise this is the last obstacle. I'm sorry if I made you think this post is an obstacle course. They're the real problems that I faced while learning Amplify in a week and applying it. There are of course way more obstacles than these four, but these are the major ones.

The last obstacle was time. Yep, as I've guessed, one week is not enough. Today, as of writing this, is exactly a week from when I started. I could only finish the profile page and user dashboard. Users can now manage their collections and posts, and profile but features such as trending timeline and multiple post types are missing.

I also made another big mistake. I did not think through about the domain. The project was initially called VouchedByMe and I have planned to buy the domain vouchedby(dot)me but some brokers bought it a day before me and increased the price up to 119$ from 19$. (I swear I hate godaddy.com, what kind of business is that.)

Because of that incident, I have to switch to another name called VouchByMe and had to buy the domain vouchby.me. I have already bought it, but I couldn't find a way to set it up with AWS Cloudfront Serverless hosting.

I actually don't think it's possible because AWS only accepts Route 53 domains, and I bought the domain from name.com and the domain is not transferrable for the next 60 days.

It's awkward but I have to use the ugly URL for the hackathon as of now. Here is the URL 👉 d2mylahvc7nc1a.cloudfront.net and here is my profile as an example. Please give it a try and let me know what you think about it.

Result

Here is a walkthrough video of the final result.

To Conclude

I'm sorry if you think this post is not very technical because it's not. As I said, I would rather want to share my experiences and this is it. I don't think I achieved the goal but I still think I did pretty solid. But maybe because I only have to work in the daytime and got infuriatingly slower internet, I struggled way more than I should have.

But I'm still quite happy that I did the project, comparing with the fact that I only got a week for a month's expected work. The result might not be good, but I'm happy that I learned a big deal about Amplify. I also hope I made it to the hackathon in time.

This post does not cover technical information but let me know if you guys want an in-depth details walkthrough of the process, I'll be happy to write it.

I'm sorry if this article contains grammatical errors or spellings. That's because I have to finish it in about 2-3 hours before night and submit it before the hackathon is over. Thanks for reading and I hope you enjoyed it. It's late here, so I'm going to bed. Bye and see ya.

 
Share this