nahom endale
Case StudiesAboutResume
Nahom Endale

© 2026 Nahom Endale, New York

Case StudiesAboutResumeGitHubLinkedIn
Nahom Endale/Case studies/Shortfilmed
Visit shortfilmed.com ↗S

Shortfilmed

Free short-film streaming platform

HLS · Adaptive streaming playback

S3 · Film + thumbnail origin

Free · Ad-supported, no paywall

Netlify · Serverless hosting + Forms

01The Challenge

+
Independent filmmakers lacked a clean, free home to showcase short films. Mainstream platforms bury them, and DIY setups struggle with large-file delivery, device compatibility, and cost.

02The Solution

+
Shortfilmed serves films as HLS straight from an S3 bucket, with a build-time script that scans the bucket for videos, thumbnails, and metadata to generate the catalog into Supabase. The Next.js app on Netlify renders genre rows and a custom react-player streaming experience, monetized with ads rather than a paywall so viewing stays free.

03Features

+

A custom react-player UI with skip, seek, fullscreen, auto-hiding controls, and a buffering state.

A Supabase-backed film library rendered into genre rows (drama, horror, comedy, animation, and more).

A Node script scans the S3 bucket for HLS films, thumbnails, and metadata to generate the catalog dataset.

Filmmakers submit films through Netlify Forms with reCAPTCHA and a homegrown math captcha.

Debounced search and a details drawer make the catalog quick to browse.

AdSense and Ezoic ads, GA4 with internal-traffic exclusion, next-sitemap, and IndexNow auto-submission.

04System Architecture

+

Origin

AWS S3

Ingest

Ingest Script

Catalog

Supabase

App

Next.js (Netlify)

Playback

react-player

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

Origin

AWS S3

Ingest

Ingest Script

Catalog

Supabase

App

Next.js (Netlify)

Playback

react-player

05Technology Stack

+

Next.js 14 (App Router) · React 18 · Tailwind · Material Tailwind · Zustand

react-player · screenfull · HLS (.m3u8)

AWS S3 · Supabase (Postgres) · aws-sdk

Netlify · next-sitemap · AdSense / Ezoic · GA4

06Key Learnings

+
  1. 01Pre-transcoding films to HLS in S3 meant the app just streams the .m3u8 directly, with no server-side video work at request time.
  2. 02A build-time S3 scan generated the entire catalog dataset, keeping runtime reads cheap against Supabase.
  3. 03A custom react-player UI gave full control over the controls and buffering states the default player couldn't.
  4. 04An ad-supported model plus heavy SEO (sitemaps, IndexNow) kept the platform completely free for viewers.

Streaming / Media

Next.js 14, react-player, HLS, AWS S3, Supabase, Netlify

previous← File Automation API