Somali TTS web app with Supabase auth and Hugging Face Spaces
# Somali TTS Web
Next.js dashboard for Somali text-to-speech, connected to the Somali-MMS-TTS Hugging Face Space.
**Somali TTS model by: Engr Ayoub Adan Abdi**
## Authentication (Supabase)
Users sign in with **email and password**. Profiles are stored in Supabase.
### Setup
1. Create a free project at supabase.com
2. Run `supabase/schema.sql` in the SQL Editor
3. Copy **Project URL** and **anon public key** from Settings → API
4. Add to `.env.local` and Vercel environment variables:
```
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
```
5. In Supabase → Authentication → Providers, enable **Email**
6. Restart the app and visit `/auth/signup`
Protected routes: `/generate`, `/history`, `/favorites`, `/profile`, `/settings`
## Features
- **Generate** — Convert Somali text to speech with example phrases
- **History** — Replay, search, and manage recent generations (saved locally)
- **Favorites** — Save phrases for quick reuse
- **Profile** — Authenticated account with name, email, title, and bio (Supabase)
- **Settings** — Dark mode, history toggle, data reset
- **Dashboard UI** — Sidebar navigation, stats, mobile-friendly layout
## Local development
```bash
npm install
cp .env.example .env.local
npm run dev
```
Open
localhost.
## Environment variables
| Variable | Required | Description |
|----------|----------|-------------|
| `HF_SPACE_ID` | No | Defaults to `Ayoubadanabdi/Somali-MMS-TTS` |
| `HF_TOKEN` | No | Only needed for private Spaces |
| `MAX_TEXT_LENGTH` | No | Defaults to `500` |
## API
### `POST /api/tts`
```json
{ "text": "ku soo dhowaada casharkii ugu dambeeyay ee mashiin lerning." }
```
Returns `audio/wav`.
### `GET /api/health`
Returns service status.
## Deploy to Vercel
### Quick deploy (recommended)
1. Log in to GitHub (once):
```powershell
gh auth login
```
2. Log in to Vercel (once):
```powershell
npx vercel login
```
3. Run the deploy script:
```powershell
cd j:\SpeechT5_API\somali-tts-web
.\ …