Timelapse projects become messy when image capture, storage cleanup, and rendering are manual. On Raspberry Pi, I run the whole flow as scheduled services.
A capture timer triggers libcamera-still with fixed exposure settings to keep frame-to-frame consistency. Filenames include UTC timestamps so frames sort correctly regardless of locale.
A nightly job compiles fresh clips with ffmpeg, then archives originals based on retention policy. I keep full-resolution images for recent days and downscaled copies for long-term history.
Disk quotas and health checks are critical. Without them, the first failure mode is always full storage and silent capture stops.