CD-Mixtape

A Nostalgic Windows 98 Media Experience

CD-Mixtape is a front-end application that captures the nostalgic essence of the late 90s personal computing era. By meticulously recreating the Windows 98 desktop environment, it offers users a unique, interactive experience. The core functionality allows users to search for tracks on YouTube, compile them into a 'mixtape,' and then 'burn' them to a virtual CD. The application then transitions to a classic CD player interface to play back the custom playlist, blending retro aesthetics with modern streaming technology.

Problem & Purpose

In an age of hyper-sleek, minimalist design, there's a growing appreciation for the tangible, quirky interfaces of the past. This project began as a personal challenge to explore 'skeuomorphic' design—making digital items resemble their real-world counterparts. The goal was to create more than just a media player; it was to build an 'experience' that evokes the feeling of crafting a personal CD mixtape, a ritual many of us cherished.

The primary objectives were to:

  • Master advanced CSS and component styling to replicate a complex, retro UI.
  • Integrate with a major third-party API (YouTube) for dynamic content.
  • Handle complex, multi-stage state management within a client-side React application.
  • Showcase creativity and attention to detail in UI/UX design.

Technical Challenge & Solution

The main challenge was managing the application's state across different 'modes' or 'scenes'—the desktop, the mixtape creator, and the CD player—without a formal state management library like Redux or Zustand. The state, including the Youtube results, the pending mixtape tracklist, and the final 'burned' playlist, needed to persist seamlessly as the user navigated the experience.

Solution:

  • I architected the state using a combination of React's `useState` for local component state and `useContext` for global state. A primary `AppContext` was created to hold the tracklist and application mode.
  • By lifting state up to this shared context, I could ensure that when the user 'burned' their CD, the playlist data was immediately available to the CD Player component without prop drilling, enabling a smooth and logical transition between interfaces.

Lessons Learned

This project was a deep dive into the fundamentals of React state management, reinforcing the power and utility of the Context API for medium-sized applications. It also highlighted the importance of component architecture in preventing performance issues, especially when dealing with interactive, draggable UI elements. Finally, it was a valuable lesson in balancing nostalgic design with modern usability standards to create an app that is both fun and functional.

Tech Stack & Architecture

CategoryTechnologies
Core
React 18
Language
JavaScript (ES6+)
Styling
98.css, Custom CSS
API Integration
YouTube Data API v3
State Mngmt
React Hooks (useState, useContext)
Deployment
Vercel, GitHub

Key Features

  • Authentic Windows 98 Experience
    1. - Leveraged the 98.css library to recreate the classic Windows 98 desktop environment with pixel-perfect window chrome, icons, and interaction patterns.
    2. - Implemented authentic system behaviors including window dragging, minimizing, and focus states.
  • Interactive CD Mixtape Creator
    1. - Custom-built media player interface that mimics real CD player functionality with play/pause, track skipping, and volume controls.
    2. - YouTube integration allowing users to create playlists of up to 10 videos and save them as named 'mixtapes'.
  • Seamless State Management
    1. - Implemented complex state logic to maintain playlist data between the mixtape creation and playback modes.
    2. - Developed a smooth transition between 'burning' the CD and switching to player mode with preserved playlist data.
  • Responsive Retro Design
    1. - Maintained the Windows 98 aesthetic while ensuring full responsiveness across modern devices.
    2. - Carefully balanced nostalgic UI elements with intuitive UX patterns for contemporary users.

    Creative work starts with curiosity and ends in clarity.

    Portfolio v2.3 © 2025 Mendoza.