Only for specialists with practical experience and work samples in rendering Lottie-json animations! Enthusiasts with "we'll figure it out" are not considered.
Budget is negotiable, deadline: up to 7 days.
What needs to be done:
Implement a function/script that accepts animated Lottie JSON and text layers in a web application (website) and generates a final video layer in .webm format (VP9 + alpha) with complete identity of animation and timing with a preview.
Project context:
Frontend: React (Vite), Backend: FastAPI, Storage: MinIO (S3-compatible), DB: PostgreSQL,
Containerization: Docker, docker-compose, For local development, docker-compose.yml is used (project map attached)
Problem description:
The current developer tried to implement this task:
• through ffmpeg (unable to display correct fonts and colors, text parameters from the admin panel are not applied, Lottie JSON is not displayed, unable to replicate the same animation as on the client);
• through Remotion / Puppeteer (used remotion, puppeteer with recording through the browser, through ffmpeg, wrote a separate API on nodejs. The result is either null or we only see fragments of text with artifacts - partially correct font and color, but without timings, without animations and the Lottie JSON is not picked up).
Result: the outcome is either empty or with artifacts, the animation differs from the preview, json layers are not baked.
Implementation requirements:
Output: final file in webm format (VP9 with alpha channel), frame rate - strictly 30 FPS, resolution 1080x1920 px. Complete identity to the preview (fonts, colors, timings) without loss of quality and animation effects).
Process: conversion of text and json layers should only occur after receiving a webhook about payment in real-time without subsequently saving intermediate files (png sequences and other accompanying materials) on disk. The conversion time should not exceed 20 seconds, expected file size no more than 40 mb.
File storage location: should be set by a parameter or environment variable, so it can be reconfigured without changing the code.
Flexibility: The code should be written universally: new custom fonts supporting Kazakh Cyrillic should connect automatically without the need to modify the rendering logic. The system should take JSON animations and text parameters dynamically, rather than "hardcoding" a specific file into the code.
Result verification: the script after connecting to the production site will be tested by using 5 different postcard templates, 5 active and 3 new fonts, 5 options of long and short text with Kazakh Cyrillic. The work will be considered completed only after full compliance of the result with the above implementation requirements.