A small, private memory reel maker built with plain PHP, HTML, CSS, and browser-native JavaScript.
reelr needs PHP 8.2+ with the fileinfo extension enabled. PHP is used only for secure image upload and media delivery; there are no Composer or frontend dependencies.
From the project directory:
php -S localhost:8000 -t publicOpen http://localhost:8000.
The PHP built-in server is intended for local use. The storage/uploads directory is created automatically and should remain outside the public directory in a production deployment.
- Accepts JPEG, PNG, WebP, GIF, BMP, and AVIF images when supported by the installed PHP build.
- Limits a reel to 60 images, 12 MB per image, and 300 MB total.
- Rejects files based on detected MIME type and image dimensions, not filename extension.
- Stores uploads under randomized names outside the web root.
- Supports drag ordering, captions, per-image timing, transitions, and browser-local music selection.
- Exports WebM in browsers that provide
canvas.captureStream()andMediaRecorder. - Downloads a reel configuration JSON when video recording is unavailable.
Music is currently available for local playback integration and is not uploaded or persisted. MP4 export is intentionally outside the dependency-free MVP.
For larger image sets, the PHP configuration must allow the request size. Example values:
file_uploads = On
upload_max_filesize = 12M
post_max_size = 300M
max_file_uploads = 60