import { Metadata } from "next"; import { Badge } from "@/components/ui/badge"; import { GithubIcon } from "@/components/icons"; import Link from "next/link"; import { Footer } from "@/components/footer"; import { Header } from "@/components/header"; import ReactMarkdown from "react-markdown"; import { cn } from "@/lib/utils"; const roadmapItems: { title: string; description: string; status: { text: string; type: "complete" | "pending" | "default" | "info"; }; }[] = [ { title: "Start", description: "This is where it all started. Repository created, initial project structure, and the vision for a free, open-source video editor. [Check out the first tweet](https://x.com/mazeincoding/status/1936706642512388188) to see where it started.", status: { text: "Completed", type: "complete", }, }, { title: "Core UI", description: "Built the foundation - main layout, header, sidebar, timeline container, and basic component structure. Not all functionality yet, but the UI framework that everything else builds on.", status: { text: "Completed", type: "complete", }, }, { title: "Basic Functionality", description: "The heart of any video editor. Timeline zoom in/out, making clips longer/shorter, dragging elements around, selection, playhead scrubbing. **This part has to be fucking perfect** because it's what users interact with 99% of the time.", status: { text: "In Progress", type: "pending", }, }, { title: "Export/Preview Logic", description: "The foundation that enables everything else. Real-time preview, video rendering, export functionality. Once this works, we can add effects, filters, transitions - basically everything that makes a video editor powerful.", status: { text: "In Progress", type: "pending", }, }, { title: "Text", description: "After media, text is the next most important thing. Font selection with custom font imports, text stroke, colors. All the text essential text properties.", status: { text: "Not Started", type: "default", }, }, { title: "Effects", description: "Adding visual effects to both text and media. Blur, brightness, contrast, saturation, filters, and all the creative tools that make videos pop. This is where the magic happens.", status: { text: "Not Started", type: "default", }, }, { title: "Transitions", description: "Smooth transitions between clips. Fade in/out, slide, zoom, dissolve, and custom transition effects.", status: { text: "Not Started", type: "default", }, }, { title: "Refine from Here", description: "Once we nail the above, we have a **solid foundation** to build anything. Advanced features, performance optimizations, mobile support, desktop app.", status: { text: "Future", type: "info", }, }, ]; export const metadata: Metadata = { title: "Roadmap - OpenCut", description: "See what's coming next for OpenCut - the free, open-source video editor that respects your privacy.", openGraph: { title: "OpenCut Roadmap - What's Coming Next", description: "See what's coming next for OpenCut - the free, open-source video editor that respects your privacy.", type: "website", images: [ { url: "/open-graph/roadmap.jpg", width: 1200, height: 630, alt: "OpenCut Roadmap", }, ], }, twitter: { card: "summary_large_image", title: "OpenCut Roadmap - What's Coming Next", description: "See what's coming next for OpenCut - the free, open-source video editor that respects your privacy.", images: ["/open-graph/roadmap.jpg"], }, }; export default function RoadmapPage() { return (
Open Source

Roadmap

What's coming next for OpenCut (last updated: July 14, 2025)

{roadmapItems.map((item, index) => (
{index + 1}.

{item.title}

{item.status.text}
( {children} ), strong: ({ children }) => ( {children} ), }} > {item.description}
))}

Want to Help?

OpenCut is open source and built by the community. Every contribution, no matter how small, helps us build the best free video editor possible.

Start Contributing Report Issues
); }