Back to Home

Technical implementation of the 90s TV timeline without developers | Analysis

Technical breakdown of creating an interactive timeline of Russian television of the 90s. Implementation without frameworks, media content optimization, fighting OOM Killer in Kubernetes. Detailed analysis of solutions for middle/senior developers.

Interactive 90s TV house: how they assembled it without budget and developers
Advertisement 728x90

Interactive 90s TV Timeline: Technical Implementation Without Budget or Developers

A team of designers and editors, without a single in-house developer, created a large-scale web project about the evolution of Russian television. An interactive house with 108 windows, inverted scrolling, and a custom CMS were built in just six months using vanilla JavaScript on a zero budget. We break down the technical solutions that delivered stable performance even in Safari.

Framework-Free Architecture: Why They Ditched React

The project kicked off with a deliberate rejection of modern frontend frameworks. The main reason? No professional developers on the team. The design lead, who handled the technical implementation, relied on neural networks as the primary tool for code generation. Vanilla JS was the only way to ensure control over the quality of AI-generated code.

Key architectural decisions:

Google AdInline article slot
  • Inverted scrolling via flex-direction: column-reverse
  • Dynamic timeline with fish-eye effect
  • ES6 modules instead of bundles
  • Custom video player without third-party dependencies

This approach provided a critical advantage: direct browser loading of modules without hydration or runtime overhead. On initial render, the packages weigh just 47 KB, compared to the typical 200+ KB for React apps. For a project with heavy graphical demands, this was essential for performance.

Optimizing Media Content: From 35 Seconds to 2.5

Initial site load times clocked in at 35 seconds due to 108 high-quality interior images. The solution involved multi-level processing:

  • Automatic conversion of PNG to WebP/AVIF on upload via the admin panel
  • Generation of blur-up previews (50px width) for instant visual feedback
  • Streaming image processing instead of in-memory buffering
  • Limiting parallel conversions to two processes
// Fish-eye effect for timeline
const distanceFromCenter = Math.abs(timelineCenterY - elementCenterY);
if (distanceFromCenter < fishEyeRadius) {
    const ratio = 1 - (distanceFromCenter / fishEyeRadius);
    const scale = 1.0 + (maxScale - 1.0) * ratio;
    element.style.transform = `scale(${scale})`;
}

The breaking point was the OOM Killer in Kubernetes: Sharp exhausted memory limits during parallel AVIF processing. The fix involved dropping the effort parameter to 2 and switching to streaming processing. Result: compressing a 4.7 MB PNG down to 152 KB WebP (31x) without visible quality loss.

Google AdInline article slot

Preloader as Part of the Concept

The thematic preloader with TV static was implemented using Canvas instead of video files. This delivered three key benefits:

  • No visible looping (noise generated via Math.random())
  • Smaller size (310 lines of JS vs 5+ MB for WebM)
  • Reusable logic
// Generating static for the headline
function generateHeadlineNoise() {
    const frames = [];
    for (let i = 0; i < 4; i++) {
        frames.push(generateNoiseFrame());
    }
    document.documentElement.style.setProperty('--noise-frames', frames.join(','));
}

The preloader solves a technical challenge by gathering all heavy assets before showing the interface. The house appears instantly, without texture blurring. The same noise generation algorithm powers an Easter egg on header hover.

Backend: From JSON File to Kubernetes

The initial setup stored data in data.json on a $5 VPS. Scaling to enterprise infrastructure required:

Google AdInline article slot
  • Replacing JSON with MariaDB
  • Integrating with MinIO instead of local storage
  • Setting up Nginx as a reverse proxy
  • Adapting to a GitLab CI/CD pipeline

The visual editor in the admin panel lets designers edit content right in the grid—click a window, tweak parameters. This is crucial for non-technical team members. All media files are processed automatically: Sharp generates WebP, AVIF, and blur-up previews without human intervention.

Key Takeaways

  • Inverted scrolling via column-reverse is cheaper to implement than JS animations and works across all browsers
  • Streaming image processing prevents OOM crashes even on weak servers
  • Canvas over video for dynamic effects saves bandwidth and improves perceived quality
  • Custom video player without libraries shrinks bundle size by 120 KB
  • Blur-up previews create the illusion of instant loading while saving real bandwidth

Technical debt is minimal: 92% of the code was generated correctly on the first try by neural networks, with the remaining 8% being manual Safari fixes. Adoption of modern tools (Kubernetes, AVIF) happened without budget increases, thanks to corporate infrastructure. The big lesson: even a non-technical team can build a complex web project with the right stack and a focus on resource optimization.

— Editorial Team

Advertisement 728x90

Read Next