Skip to content

[ Release ] : v0.2.0#13

Merged
maulik-mk merged 10 commits intomainfrom
release/v0.2.0
Mar 21, 2026
Merged

[ Release ] : v0.2.0#13
maulik-mk merged 10 commits intomainfrom
release/v0.2.0

Conversation

@maulik-mk
Copy link
Copy Markdown
Owner

This pull request introduces a complete initial setup for a Node.js-based FFmpeg video processing worker, including its Docker build, continuous integration, environment configuration, dependencies, and database schema. The changes span infrastructure, build automation, code formatting, and database design to enable a robust, production-ready video processing service.

The most important changes are:

Infrastructure & Build System:

  • Added a multi-stage Dockerfile that builds a custom FFmpeg binary (with VMAF and other codecs), compiles the Node.js application, and sets up a secure, minimal runtime environment. This enables efficient, reproducible deployments and ensures all necessary media libraries are included.
  • Introduced a comprehensive GitHub Actions workflow (.github/workflows/ci.yml) for CI/CD, covering build, test, Docker image versioning, and publishing to GHCR, along with automated test asset download and test execution scripts. [1] [2] [3]

Configuration & Environment:

  • Added .env.example with detailed environment variables for both production and development, including database, Redis, Azure Blob Storage, and pipeline settings, to guide secure and flexible deployments.
  • Added .dockerignore to exclude development, test, and sensitive files from Docker builds, reducing image size and improving security.

Dependencies & Formatting:

  • Added package.json specifying all runtime and development dependencies (e.g., Fastify, BullMQ, Azure SDKs, TypeScript, Prettier), scripts for build/test, and enforced Node.js 24+.
  • Added .prettierrc to enforce consistent code formatting and a pnpm-workspace.yaml to ignore certain built dependencies, improving developer experience. [1] [2]

Database Schema:

  • Introduced sql/main.sql with schema for videos, video_metadata, and video_renditions tables, including constraints, indexes, and triggers for tracking video processing jobs and their metadata.

- Enable CI for the dev branch.
- permissions to the ffmpeg test output directory.
- Update CI test video download to use H264 codec instead of AV1.
- test: add 777 permissions to HLS output directory in ffmpeg test
- Sync changes of v0.1.0 PR
…line (#11)

This commit introduces the foundational architecture for the video processing worker. It establishes a complete pipeline for downloading, encoding, and uploading video content using Domain-Driven Design principles.

Key features added:
- Infrastructure Setup: Integrated BullMQ for highly reliable background video job processing and setup PostgreSQL connection pooling.
- Azure Storage Integration: Added services for fetching raw media blobs and robust uploading of generated output segments/manifests back to Azure Blob Storage.
- FFmpeg HLS Processing: Added core FFmpeg adapters to handle video probing, content complexity analysis, multi-profile audio/video rendering, and HLS (m3u8) playlist generation.
- DDD Architecture: Organized the codebase into independent `domain` models, `application` use cases (`video.process.ts`), and `infrastructure` implementations.
* chore(ci): add test scripts and enhance CI workflow

- Add scripts to download test video and run ffmpeg tests
- Refactor CI workflow for better Docker versioning, labeling, and image push logic
- Integrate new scripts into CI for improved test automation

* fix(ci): update script paths for downloading test assets and running tests

* fix(ci): make scripts in .github/scripts executable
@maulik-mk maulik-mk merged commit e6d77c8 into main Mar 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant