Nahom Endale
S

Streaming / Media

Shortfilmed

Free short-film streaming platform

Visit shortfilmed.com

HLS

Adaptive streaming playback

S3

Film + thumbnail origin

Free

Ad-supported, no paywall

Netlify

Serverless hosting + Forms

The 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.

The 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.

Features

HLS streaming player

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

Genre catalog

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

Build-time S3 ingestion

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

Filmmaker submissions

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

Search & discovery

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

Ad & SEO monetization

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

System Architecture

Origin

AWS S3

Ingest

Ingest Script

Catalog

Supabase

App

Next.js (Netlify)

Playback

react-player

Technology Stack

Frontend

Next.js 14 (App Router)React 18TailwindMaterial TailwindZustand

Video & Streaming

react-playerscreenfullHLS (.m3u8)

Storage & Data

AWS S3Supabase (Postgres)aws-sdk

Infra & Growth

Netlifynext-sitemapAdSense / EzoicGA4

Key Learnings

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

Available for work

Let's build something.

Always interested in new opportunities, technical challenges, or collaborations. Reach out through any of the channels.También hablo Español!

Typically respond within 24 hours