Vapor

Memories of saved online content visualized in a web-based tool. Ongoing full stack application built with React and Node.js

Role

Web Development / Visual Design / CSS/SCSS / Javascript / React / Node.JS / Express

Vapor

Memories of saved online content visualized in a web-based tool. Ongoing full stack application built with React and Node.js

Role

Web Development / Visual Design / CSS/SCSS / Javascript / React / Node.JS / Express

Vapor

Memories of saved online content visualized in a web-based tool. Ongoing full stack application built with React and Node.js

Role

Web Development / Visual Design / CSS/SCSS / Javascript / React / Node.JS / Express

Vapor

Memories of saved online content visualized in a web-based tool. Ongoing full stack application built with React and Node.js

Role

Web Development / Visual Design / CSS/SCSS / Javascript / React / Node.JS / Express

Consuming social media
Platforms like Youtube are designed for us to consume new content, not to help us remember what we’ve watched.
Consuming social media
Platforms like Youtube are designed for us to consume new content, not to help us remember what we’ve watched.
Consuming social media
Platforms like Youtube are designed for us to consume new content, not to help us remember what we’ve watched.
Concept for the app
I decided to build a web app for collecting and revisiting videos from youtube. These videos would fade in and out like memories
Concept for the app
I decided to build a web app for collecting and revisiting videos from youtube. These videos would fade in and out like memories
Concept for the app
I decided to build a web app for collecting and revisiting videos from youtube. These videos would fade in and out like memories
Development Process with front end
Starting with the front end, I tested out ways to make a responsive bento grid and create a fading effect.
Development Process with front end
Starting with the front end, I tested out ways to make a responsive bento grid and create a fading effect.
Development Process with front end
Starting with the front end, I tested out ways to make a responsive bento grid and create a fading effect.
Challenge with an irregular grid
Achieving a responsive bento box with dynamically populated cards was hard. My approach was to make each grid as a component and repeat them like tiles
Achieving a responsive bento box with dynamically populated cards was hard. My approach was to make each grid as a component and repeat them like tiles
Achieving a responsive bento box with dynamically populated cards was hard. My approach was to make each grid as a component and repeat them like tiles
Making an API
Once I had a sense of how to make the front end, I started making a basic API with a GET + POST request while working through what the .json of each video snippet would include
Making an API
Once I had a sense of how to make the front end, I started making a basic API with a GET + POST request while working through what the .json of each video snippet would include
Making an API
Once I had a sense of how to make the front end, I started making a basic API with a GET + POST request while working through what the .json of each video snippet would include
I made a basic API with GET + POST request while working through what the .json of each video snipper would include

This parser takes the URI of youtube videos to extract the image URL.

I then worked on a simple parser to extract the youtube image URL

Surprisingly youtube's URI contains direct link to the thumbnail without accessing youtube's API!

After defining the CSS styling of cards in different states, I then hooked up those styles onto a useEffect and onClick event listener. Since a card has 3 different states, I needed to add a conditional statement to evaluate the card’s current state.

The last thing was to fine tune the timed fading effect

There needs to be enough visual contrast between faded for 3 days vs 7 days+. I used a simple opacity blur and the Framer motion library for this MVP but I hope to explore cooler effects in the future!

Retrospective

Lot more features to build and a lot more UI to explore!

To expand on the project, I want to build out a local database so that I can implement other functionality like tag system and search functionality as well. Using the youtube API would be a cleaner and more efficient way to get a larger volume of data.

Since this is my first full-stack app, there are lots of things I want to improve such as reducing unnecessary components and adding controllers on the server side,. Will keep working and refactoring this project!

jou an chen, 2024

jouannchen@gmail.com

last updated: 02/19/2025
last updated: 02/19/2025
last updated: 02/19/2025