Add Docker stack, Reverb live progress, and duplicate upload detection.

Ship FrankenPHP Compose services with Reverb WebSockets for real-time transcription status, skip re-uploading identical audio via content hash, and format disk usage without requiring intl.
This commit is contained in:
ben
2026-08-12 17:35:48 +02:00
parent 352b564f3a
commit 771ee8db5a
44 changed files with 2581 additions and 424 deletions
+8 -8
View File
@@ -65,9 +65,9 @@ class RecordingUploadTest extends TestCase
$response = $this->post(route('recordings.store'), [
'audio' => [
UploadedFile::fake()->create('one.mp3', 400, 'audio/mpeg'),
UploadedFile::fake()->create('two.wav', 400, 'audio/wav'),
UploadedFile::fake()->create('three.ogg', 400, 'audio/ogg'),
UploadedFile::fake()->createWithContent('one.mp3', str_repeat('a', 400)),
UploadedFile::fake()->createWithContent('two.wav', str_repeat('b', 400)),
UploadedFile::fake()->createWithContent('three.ogg', str_repeat('c', 400)),
],
]);
@@ -96,12 +96,12 @@ class RecordingUploadTest extends TestCase
Bus::fake();
foreach ([
['memo.wav', 'audio/wav'],
['clip.ogg', 'audio/ogg'],
['talk.m4a', 'audio/mp4'],
] as [$name, $mime]) {
['memo.wav', 'audio/wav', 'wav-bytes'],
['clip.ogg', 'audio/ogg', 'ogg-bytes'],
['talk.m4a', 'audio/mp4', 'm4a-bytes'],
] as [$name, $mime, $contents]) {
$response = $this->post(route('recordings.store'), [
'audio' => [UploadedFile::fake()->create($name, 400, $mime)],
'audio' => [UploadedFile::fake()->createWithContent($name, $contents)],
'title' => $name,
]);