{"adoption": {"forks": 414, "observed_at": "2026-08-28T04:05:35.348654+00:00", "stars": 1780}, "canonical_url": "https://ross.abutalabs.com/products/react-video-editor", "card": {"archived": false, "artifact_type": "application", "description": "Online react video editor using remotion. Capcut and canva clone.", "domain": ["web-development", "media", "frontend"], "enriched": true, "function": ["video-processing", "ui-components", "frontend-framework", "file-upload", "animation"], "health_score": 74, "homepage": null, "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["openvideodev/react-video-editor"], "name": "openvideodev/react-video-editor", "platform": ["browser", "cross-platform"], "pushed_at": "2026-06-30T04:39:39+00:00", "repo": "openvideodev/react-video-editor", "stars": 1780, "tags": ["video-editor", "remotion", "nextjs", "capcut-clone", "canva-clone", "client-side-rendering", "webcodecs", "timeline-editing", "saas-starter-kit", "dual-license", "video", "web-server", "nodejs"], "topics": ["canva", "capcut", "react", "remotion", "video-editor"], "urls": [], "use_cases": ["build a browser-based video editing SaaS", "edit videos online without uploading to a server", "create a Capcut or Canva clone", "trim and split video clips on a multi-track timeline", "export videos to MP4 directly in the browser", "add transitions and effects between video clips", "manage media assets with S3 or Cloudflare R2 uploads"], "what_it_is": "OpenVideo Editor is a client-side web video editor built with React, Next.js 15, and the OpenVideo engine (PixiJS/WebCodecs), serving as a Capcut/Canva-style editor and SaaS starter kit. It supports multi-track timelines, shader-based effects and transitions, asset uploads to cloud storage, and local MP4 export without server-side rendering.", "when_to_avoid": ["you need a fully permissive open-source license for a company over 3 employees", "you need server-side or native desktop video rendering", "you want a finished end-user product rather than a starter kit", "you require non-React or non-Next.js stacks"], "when_to_choose": ["you want a customizable open-source web video editor foundation", "you need client-side rendering to avoid server export costs", "you're building a video-editing SaaS on Next.js and React", "you want hardware-accelerated export via WebCodecs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/react-video-editor", "repo": "openvideodev/react-video-editor", "role": "main", "score": 64}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.348654+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:24:36.369982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "165052f7535af77395897a86e00c1fa7d39d6c9e2b770cd36433a5d196b89585", "fetched_at": "2026-08-28T04:05:35.348654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openvideodev/react-video-editor"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 90, "longevity": 54, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 761, "days_push": 64, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 64, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}