1
0 Comments

From Giphy to Cloudflare R2 — How I Planned the Structure of Smash World

Studying similar platforms

Before I started creating Smash World, I decided to study similar resources. Since I don't have any direct competitors, I began to study resources that were most relevant to the themes of “video” and “destruction.”

The first thing that most closely resembles what I am going to do is GIF aggregators. Incidentally, they also contain destructive content, but there is very little of it and it is scattered across different websites. I would name two resources as leaders in this industry: Giphy and Gifer, with Gyphy being the undisputed leader. After analyzing the traffic of these resources, the traffic structure, and the site architecture, I found out that more than 50% of the traffic these sites receive comes through search engines. How do they do it? It's quite simple: a separate page is created for each GIF, which contains meta tags for search engines and OG markup for the correct display of the page on social networks. Of course, all this is not created manually, since the sites have literally millions of pages, but with the help of Next.js technology.

The first conclusion that can be drawn from this is that when creating a website, I need to use Next.js to automatically generate pages for each video with all the necessary meta tags and OG markup. The page structure can be made as similar as possible to the pages of Giphy and gifer, since these sites have been around for years and have high search traffic, so there is no need to invent anything new; let's use what already works.

Structuring the homepage

It is now clear what a separate page with videos should contain. But what about the main page of the website? Considering that I will have short videos, it is worth paying attention to the largest resources with short videos—Twitter/X and TikTok. The main feature of these resources is the presence of a feed, so I also need to create a feed in one form or another, as this is already a familiar way for users to “consume” content. Of course, these resources are the largest in the world, and it makes no sense to compete with them in any way. I am creating a niche product, but at the same time, I want to adopt the best practices of modern resources. In addition, other popular resources such as 9gag, reddit, and many others also use feeds.

But to use the feed, you need some criteria for sorting posts in the feed. The easiest way is to rank videos, similar to likes on YouTube or Twitter/X. The higher the rating, the higher the video appears in the feed.

Second conclusion: on the main page, we create a video feed sorted by rating for a certain period. Accordingly, we need to create a rating feature.

Building search and tags

The value of Smash World lies not only in the fact that it will feature only “those very” moments, but also in the fact that it will be easy to find similar videos. For example, one of the popular genres of destruction videos is eggs colliding with each other, with other objects, shooting at eggs, etc. As a rule, these videos are filmed with a high-speed camera. Although the videos are united by a common theme and feature similar actions, they are still interesting to watch, as each content creator adds something of their own. Accordingly, it is necessary to create the ability to search for videos by any parameters so that users can find all videos on topics that interest them. In addition to the standard keyword search, I thought of creating tags for videos and searching by tags. Creating a tagging system is not a difficult task, and it is highly effective in searching.

Third conclusion: in addition to standard keyword search, we create a tag system for searching.

Handling video storage

Since the main value of the site is video, several problems arise:

  1. Where should I store my videos?

  2. How can you make sure that videos load quickly for users?

All these problems are solved by object storage services. We could probably spend a long time discussing which one is best and comparing the parameters of these services, but due to severe budget constraints, I opted for Cloudflare R2. At the time of Smash World's launch (October 2025), I am fully within the free Cloudflare R2 plan, and according to preliminary calculations, taking into account the daily growth of the video database, I will remain within this free plan for about another 6 months.

Final tech stack

What do we have in the end?

We create the frontend on Next.js. To be more specific, we use ISR (Incremental Static Regeneration).

For the backend, we use Express, MongoDB, NodeJS, and Nginx. All tasks can be solved with these tools.

We use Cloudflare R2 to store videos.

What would you do differently and why? Or maybe I missed the “elephant in the room”? Write your opinion in the comments.


This post is part of my Building Smash World series — where I share insights from creating the platform.

Explore it live → smashworld.fun

posted toAvatar for product Smash World
Smash World