diff --git a/app/config/templates/site.php b/app/config/templates/site.php index c7e169f05e..052c39fdf7 100644 --- a/app/config/templates/site.php +++ b/app/config/templates/site.php @@ -19,6 +19,7 @@ class UseCases public const ECOMMERCE = 'ecommerce'; public const DOCUMENTATION = 'documentation'; public const BLOG = 'blog'; + public const AI = 'artificial intelligence'; } const TEMPLATE_FRAMEWORKS = [ @@ -1365,4 +1366,32 @@ return [ 'providerVersion' => '0.3.*', 'variables' => [] ], + [ + 'key' => 'text-to-speech', + 'name' => 'Text-to-speech with ElevenLabs', + 'tagline' => 'Next.js app that transforms text into natural, human-like speech using ElevenLabs', + 'score' => 7, // 0 to 10 based on looks of screenshot (avoid 1,2,3,8,9,10 if possible) + 'useCases' => [UseCases::AI], + 'screenshotDark' => $url . '/images/sites/templates/text-to-speech-dark.png', + 'screenshotLight' => $url . '/images/sites/templates/text-to-speech-light.png', + 'frameworks' => [ + getFramework('NEXTJS', [ + 'providerRootDirectory' => './nextjs/text-to-speech', + ]), + ], + 'vcsProvider' => 'github', + 'providerRepositoryId' => 'templates-for-sites', + 'providerOwner' => 'appwrite', + 'providerVersion' => '0.5.*', + 'variables' => [ + [ + 'name' => 'ELEVENLABS_API_KEY', + 'description' => 'Your ElevenLabs API key', + 'value' => '', + 'placeholder' => 'sk_.....', + 'required' => true, + 'type' => 'password' + ], + ] + ], ]; diff --git a/public/images/sites/templates/text-to-speech-dark.png b/public/images/sites/templates/text-to-speech-dark.png new file mode 100644 index 0000000000..d299904f7c Binary files /dev/null and b/public/images/sites/templates/text-to-speech-dark.png differ diff --git a/public/images/sites/templates/text-to-speech-light.png b/public/images/sites/templates/text-to-speech-light.png new file mode 100644 index 0000000000..d9248b3fe5 Binary files /dev/null and b/public/images/sites/templates/text-to-speech-light.png differ