Skip to main content
Fredrick M.
Back to Work
Jan 15, 2026

Flic Movies

Enterprise-grade streaming web application

Next.js 16NestJS 11TypeScriptTailwind CSS v4Prisma ORMPostgreSQL

Disclaimer: This project was built strictly for educational purposes as a technical learning exercise in modern software engineering. It is not intended for the distribution of copyrighted material.

Overview

Flic Movies is a modern, enterprise-grade streaming web application that provides a beautiful, responsive, and seamless experience for discovering and tracking movies and TV shows.

The project is built as a monorepo, featuring a highly optimized Next.js frontend for dynamic SEO and user interfaces, paired with a robust, heavily secured NestJS backend for handling user authentication, comments, and watchlists.

Architecture

The application uses a decoupled frontend and backend architecture within a single repository:

  • Frontend (Vercel): Next.js (App Router) handles the UI, routing, and dynamic SEO generation. It fetches movie metadata from the TMDB API via a secure server-side proxy to keep API keys hidden.
  • Backend (Render): A NestJS REST API that manages the user database. It handles JWT authentication, user profiles, watchlists, watch progress, and community comments.
  • Database (PostgreSQL): Managed via Prisma ORM.
  • Data Source: The Movie Database (TMDB) API v3.

Technology Stack

Frontend

  • Framework: Next.js 16 (App Router)
  • Styling: Tailwind CSS (v4) with custom glassmorphism and matte-black aesthetics
  • State Management: TanStack React Query (for API caching and pagination)
  • Icons: Lucide React
  • Testing: Playwright (E2E)

Backend

  • Framework: NestJS 11
  • Database ORM: Prisma ORM
  • Database: PostgreSQL (compatible with Neon, Supabase, or local)
  • Authentication: Passport.js, JWT (@nestjs/jwt), bcrypt
  • Security: Helmet, @nestjs/throttler (Rate Limiting), Class Validator
  • Testing: Jest Unit Tests

Core Enterprise Features

  • Advanced Security: The backend utilizes helmet for strict HTTP security headers and @nestjs/throttler to enforce rate limiting against brute-force authentication and spam comment attacks. Passwords are fully hashed with bcrypt. DTOs strictly validate all inbound payloads.
  • Cursor Pagination: The comments, progress, and watchlist APIs all utilize an optimized cursor-based pagination strategy in Prisma to handle massive datasets without degrading database performance.
  • UI Skeletons & Empty States: Beautiful skeleton loaders stabilize the layout to eliminate cumulative layout shifts (CLS) while dynamic data fetches over the network.
  • Smart Streaming Filter: Built-in logic checks TMDB release dates to ensure the video player isn't loaded for movies that are strictly in theaters.
  • Automated Testing: Jest unit tests ensure business logic integrity, while Playwright is configured for End-to-End frontend user journey testing.
  • Multi-Server Video Player: Seamlessly integrates three top-tier streaming embed providers (Videasy, Vidlink, Vidsrc) into a singular UI. It features a robust Native Browser Fullscreen API that elevates the exact active iframe perfectly across any device without interfering with the internal player interfaces. A completely unified Cross-Server Progress Tracker is currently in active development to normalize watch history percentages across all providers.