Creating My Own Social Feed

min read

2026-07-26 Back to posts

A screenshot of the feed

Using JavaScript, we can accomplish a cool feed of content that should keep even the most attention-deficit person engaged. Cartoon by Mr. Ollie

Table of Contents

Creating My Own Social Feed

Most modern websites have some kind of feed. Whether it is a social media timeline, a news aggregator, or a dashboard full of information. I wanted something similar for my own website but without the endless shittiness designed to maximize engagement.

Mr. Ollie ADHD Cartoon

Cartoon Credit Mr. Ollie

I wanted something simple:

A small window into what I am currently working on, reading, listening to, and learning.

Check it out the home page

The Idea

The “Nick’s Feed” carousel on my homepage is a lightweight personal dashboard. It combines different parts of my website with external APIs to create a constantly changing feed.

I hate manually updating things, so JavaScript handles the dynamic content.

Currently, the feed includes:

  • The latest photo of Bruce
  • My latest music project
  • Latest recipe
  • A random quote
  • My latest library entry
  • My newest blog post
  • A random Wikipedia article
  • Latest media entry
  • My most starred GitHub repository
  • Current weather

The goal was to make something that feels alive without becoming distracting.

Each item is a flex container. The carousel is controlled and hand-written with vanilla JavaScript.

The browser already provides everything needed:

  • DOM manipulation
  • CSS transitions
  • Event listeners
  • API requests

The current slide is updated by changing the translate position:

slidesWrap.style.transform = `translateX(-${current * 100}%)`;

Each slide moves left by its own width. This creates the same effect used in modern UI.

Automatic Rotation

The feed automatically rotates every few seconds:

const AUTOPLAY_MS = 4750;

intervalId = setInterval(next, AUTOPLAY_MS);

I also added a few quality-of-life improvements:

  • Pause when hovering over the feed
  • Previous and next buttons
  • Navigation dots
  • Infinite looping

Small interactions like these make it feel polished.

Adding Live Data

The most interesting part of this project was connecting external APIs.

Weather

The weather section uses Open-Meteo to retrieve current conditions.

The website requests temperature and weather codes, then converts those codes into simple icons:

{
    0: "☀️",
    3: "☁️",
    61: "🌧️",
    95: "⛈️"
}

This simple API request turns a static website component into a real time data point.

Random Quotes

The quote slide pulls a random quote from an API:

const res = await fetch(
    "https://dummyjson.com/quotes/random"
);

The response is then inserted directly into the page. It makes every visit feel slightly different.

Wikipedia

One of my favorite additions is the random Wikipedia article.

Every page load requests a random article summary:

fetch(
    "https://en.wikipedia.org/api/rest_v1/page/random/summary"
);

The title, description, and link are then displayed inside the carousel.

It is basically a tiny “learn something random” button built directly into my homepage.

Why Not Use a Framework?

For a project like this, adding a framework would probably create more complexity than value.

The browser already knows how to:

  • Fetch APIs
  • Manipulate the DOM
  • Handle animations
  • Update content

The simplest solution is the best one.

The Bigger Idea

A personal website gives you complete control over what you share and how people experience it. I don’t want an algorithm deciding what someone sees, I can create my own small collection of things I care about.

That is the best part of building web apps.

Notes from Nick

Thanks for reading! This post was written by Nick Stambaugh, not AI.

  • Stay up to date with Nick's latest posts via RSS
  • Have a question or want to discuss a topic? Email Nick
  • This website costs money to maintain and contains no advertisements. Consider buying Nick a coffee as a token of appreciation.