DEV Community

Cover image for Build Log: Added the Text Overlay Page UI for Reel Quick
Farhan Munir
Farhan Munir

Posted on

Build Log: Added the Text Overlay Page UI for Reel Quick

Build Log: Added the Text Overlay Page UI for Reel Quick

Today I worked on the frontend for Reel Quick and added the first version of the Text Overlay page.

The goal was to create the page structure and user flow for adding text overlays to a video, without wiring up the full backend save/process flow yet.

What I added

I introduced a new page for creating text overlays:

  • Route: /create-text-overlay/<video-id>
  • Added a per-video link from the /videos page so each video now has a Create action for text overlays
  • Added a scaffolded frontend page that we can expand later into the full editor

UI decisions locked before implementation

Before building, I confirmed a few product decisions:

  • This phase is design only
  • Video data should be fetched from the backend API
  • “Done / Process Video” is UI-only for now
  • Time display should use mm:ss format like 00:00
  • Users can add and delete overlays for now
  • No editing flow yet

That helped keep the implementation focused on layout and interaction, not backend behavior.

What the new page includes

The new Text Overlay page now has:

  • A header and basic video metadata area
  • A left panel for video preview
  • A right panel listing the overlays added so far
  • A button to open an Add Text Overlay dialog
  • Delete action for each overlay item

The video preview is designed to load using the backend video API, and completed videos can use the download endpoint for preview.

Add Text Overlay dialog

When the user clicks Add Text Overlay, a dialog opens with three inputs:

  1. Text
  2. Start Time
  3. End Time

The timing controls are implemented as sliders:

  • Start Time slider: from 0 to video length - 1
  • End Time slider: from start + 1 to video length

This ensures one important rule stays true:

End time must always be greater than start time.

I also added state logic so the UI enforces that constraint automatically instead of depending only on validation later.

Time formatting

Overlay timings are shown in mm:ss format.

Examples:

  • 00:00
  • 00:12
  • 01:45

That keeps the interface easy to scan and closer to how users expect media timing to look.

Current scope

This is intentionally not connected to the full processing flow yet.

Right now:

  • the page is focused on structure and interaction
  • overlays can be added and deleted in the UI
  • the “Process Video” action is only a placeholder for now

That gives a usable frontend foundation before moving into API integration and processing workflows.

Files touched

Main changes were made in:

  • CreateTextOverlayPage.tsx
  • dynamic route page for /create-text-overlay/<video-id>
  • VideoList.tsx to add the link from the videos table

Environment note

I was not able to run frontend lint/build checks in this environment because npm was not available:

npm: command not found

So this step was completed as a UI implementation pass, but not fully validated through local frontend tooling in the current container.

Why this matters

This is a small but useful step toward turning Reel Quick into a more complete video editing workflow.

Instead of jumping straight into processing logic, I wanted to first lock down:

  • page flow
  • interaction model
  • timing constraints
  • overlay creation experience

That makes the next step clearer: connect the UI to backend save and processing endpoints.

Repo

Project repo: https://github.com/ronin1770/reel-quick

Next step

Next I’ll move from UI scaffolding into actual overlay persistence and processing integration so the page can do more than just model the workflow.

Top comments (0)