Building a business from scratch - day 13
Tags: javascript, react, devjournal, webdev
Published: 2022-03-31 11:18:39

Welcome to day thirteen of the [useaffiliates.com](http://useaffiliates.com/) build log! This series covers my journey of building a business from scratch in public. If you missed day twelve, you could [check it out here](https://www.twankrui.com/blog/building-a-business-from-scratch-day-12). I also uploaded today's [Twitch stream](https://twitch.tv/twankrui) to [YouTube](https://www.youtube.com/watch?v=_SUW1u2gXTM) if you want to watch the replay.

## Well, this day was frustrating. 😓

Everything about this day was dread. Not the most positive statement to start a build log with, but take it as “this is also part of the process.”

Some days are better than others, while days like these also happen from time to time where everything you touch feels like it isn’t working for no particular reason.

Here’s the good news: now that I’ve written the build log, I still feel like I have made the best out of a “meh” day. Yet again, I have to remember [an article I wrote](https://remote101.blog/focus-on-output-not-on-input/) for one of my blogs; I focus on output, not on input.

If I had reflected on this last night rather than this morning, I would have enjoyed my evening more. 😅

## We (finally) have images! 🚀

Before hopping on stream, I took a couple of hours to get all the current database information in order. One of the biggest tasks was uploading all the images for the affiliate programs.

Now, I could have automated this, but I decided not to because writing the automation would probably take me the same, if not more, amount of time. So I opened the DB, opened Twitter, and started dragging and dropping company logos.

The profile pictures from Twitter work great! Keep that in mind if you ever need company thumbnails.

### Blur image loading with Plaiceholder. 🖼

Once the images were in the database, my UI jumped from "cool MVP" to "this looks like a product!". The only thing remaining was getting rid of the white rectangle when the images were loading.

First, I tried a library called [Plaiceholder](https://plaiceholder.co/), to try and see if I could generate Base64 strings to create a blur of all the affiliate programs' images. However, I think generating the Base64 string on the fly for 12 images at a time might be too much to ask since I couldn't get NextJS past the serializing error.

To be honest, I did give up on this after it became clear that it wasn't an easy implementation. So I moved it to the backlog for now because I still want to implement it to bring the UI to an even higher level.

Instead of showing the white rectangular, I added a gradient background to the boxes, which serves as an excellent middle ground between blurred images and the ugly white boxes.

## Uh oh, we found a bug! 🐛

While implementing the images, I checked some of my categories to see how they would look now that we have pictures. I noticed that some of my categories weren’t returning any data, to my surprise.

At first, I was worried that this might have something to do with the huge commitment I made to turn SSG (static stite generation) into SSR (server-side rendering).

But I soon realized that the Notion API might not like the encoded URI. So, inside of the Notion API request, I used `decodeURIComponent(category)`, and sure enough, the results came back for the categories that weren’t working!

Database, done! ✅
Listing, functional! ✅
Listing ready for launch, yes! 🚀

## Removing the about page 🗑

I have mentioned the about page a couple of times before in the updates, primarily that I didn’t know what the `bleep` sort of content I wanted to write for it. And even when actively thinking about it, I didn’t find any particular angle that didn’t turn out wholly generic and bland.

So, breaking news, I have binned it. 🤯

We can always look at this page later once we think of the content—everything to get to launching this project sooner rather than later.

## Stuck on payments at the moment. 😢

I want to keep payments as simple as possible for this project so it’s easy for everyone to replicate. However, after digging into payments a lot the past week and today, I can’t find anything that comes remotely close to what I want.

So, change of plans, to get this project out of the door, we will do it via one-time payments for a yearly listing period. This way, I don’t spend too much time setting up authentication, user management, and all that fun stuff.

I can worry about that after I have my first 50 users when it becomes a pain in the ass to manage.

We can continue setting up the Typeform and even include the sponsored packages since we can add them to the total. This also allows me to play with prices from time to time without alienating any subscribers.

Haven decided on this gives me ease of mind and has removed a significant hurdle on my pad towards launching this little beast.

Thanks again for reading this build log, and I hope to see you tomorrow!

If you want to stay updated in the meantime, [give me a follow on Twitter](https://twitter.com/twankrui).

With love,

Twankrui