Epic 1 - TTS Submission and Get Link
Objective
Deliver a complete text-to-speech platform with client submission system, admin backoffice, and public playback functionality.
Core Flow:
Text Submission → Admin Processing → Manual Audio Upload → Shareable Link
What Users Get:
- Submit text requests with voice selection
- Audio file (MP3) stored in S3 and accessible via URL
- Unique playback URL (e.g.,
micdots.com/play/happy-birthday-john) - Request tracking and history
- Email notifications (3 emails: confirmation + processing + completion)
What Admins Get:
- Dashboard displaying all client requests (with filtering and sorting)
- Status update controls (pending → processing → completed)
- Manual audio upload capability via pre-signed S3 URLs
- Request monitoring (analytics deferred to Epic 2)
Epic 1 follows a manual admin-driven workflow. Users submit text requests and admins manually process them by obtaining audio files externally and uploading them to the system.
Priorities Covered
- P1: Manual Text-to-Speech Processing with Admin Upload
- P2: Voice Gallery (Read-only voice selection)
- P3: Shareable Audio Playback Links (Slug-based URLs)
- P4: User Authentication and Authorization (JWT-based, role-based access)
- P5: S3 Audio Storage with Pre-signed URLs
- P6: Request Management System (Client and Admin views)
- P7: Email Notification System (Status change triggers)
- P8: Admin Backoffice Dashboard (displays request list with filtering/sorting)
Sample Pages & Flow
View the complete user and admin flows with visual mockups:
Client-Facing Pages
- User Flow Overview - Complete user journey from login to receiving audio
- Landing & Login Page - Client authentication
- TTS Submission Form - Text submission with voice selection
- My Requests - Client request history with pagination
- Request Details - Individual request view with audio player
- Playback Page - Public audio playback via slug (no auth required)
Admin Backoffice Pages
- Admin Login - Admin authentication
- Dashboard - Admin entry page displaying request list (stats deferred to Epic 2)
- Navigation System - Backoffice layout and navigation
- Request Details - Admin request management and audio upload
In Epic 1, the "Dashboard" IS the request list page. There is no separate requests page. The dashboard shows all client requests with filtering, sorting, and status updates. Advanced analytics and stats cards are deferred to Epic 2.
Workflow Overview
For detailed step-by-step workflow with sequence diagrams and email flows, see Epic 1 - User Flow.
Client Workflow
Client accounts are created manually by developers. Clients receive their login credentials (email/password) from developers before they can access the system.
- Client visits site → Landing page (public access)
- Client browses voices → Voice gallery with previews (no login required)
- Client logs in → Email/password authentication (credentials provided by developers)
- Client enters text → Submission form (max 1000 characters)
- Client selects voice → Choose from voice gallery
- Client submits → Click "Submit Request"
- System creates request → Request saved (status: pending)
- System sends email → Confirmation email sent to client
- Client waits → Admin processes request manually (1-24 hours)
- Client receives email → Processing email when admin starts
- Admin completes request → Uploads audio file, status changes to completed
- Client receives email → Completion email with playback link
- Client accesses audio → Click playback link from email or request details
- Client shares link → Send to recipients via any channel
Admin Workflow
- Admin logs in → Backoffice authentication (separate from client)
- Admin views dashboard → Dashboard displays full request list with filtering and sorting
- Admin selects request → Click request from dashboard list to view details
- Admin updates status → Change status to "processing" (triggers processing email)
- Admin generates audio → Obtain audio file externally (outside system)
- Admin uploads audio → Upload MP3 file to system via pre-signed S3 URL
- System processes upload → Upload to S3, update status to "completed"
- System sends email → Completion email sent to client with playback link
Key Features
For Clients
- ✅ Browse voice gallery with voice previews (no login required)
- ✅ Login with email/password authentication (required for submission)
- ✅ Submit text requests (up to 1000 characters)
- ✅ View all personal requests with status tracking
- ✅ Receive email notifications (3 emails: confirmation when submitted + processing when admin starts + completion when audio is ready)
- ✅ Access individual request details with audio player
- ✅ Download audio file (MP3 format)
- ✅ Get shareable playback URL (slug-based)
- ✅ Pagination for request history
For Admins
- ✅ Separate admin authentication
- ✅ Dashboard displaying all client requests (statistics deferred to Epic 2)
- ✅ View all client requests across all users with filtering and sorting
- ✅ Update request status (pending → processing → completed)
- ✅ Upload audio files manually via pre-signed S3 URLs
- ✅ Monitor request activity and status changes
- ✅ Email notification triggers (confirmation + processing + completion)
Technical Features
- ✅ Manual audio processing workflow
- ✅ AWS S3 storage with pre-signed URLs
- ✅ Unique slug generation for shareable URLs
- ✅ JWT-based authentication with role-based access (admin/client roles)
- ✅ Email notification system (SMTP/SendGrid/AWS SES)
- ✅ RESTful API endpoints
- ✅ Admin audio upload functionality
- ✅ Public playback page (no authentication required)
Technical Details
Data Storage
Each TTS submission stores:
- ID: Unique identifier (UUID)
- Client ID: Authenticated user who created submission
- Text: Original text input (up to 1000 chars)
- Voice ID: Selected voice from gallery
- Status:
pending,processing,completed(Epic 1) |failed(MVP 2) - Audio URL: S3 link to MP3 file
- Slug: URL-friendly identifier (e.g.,
happy-birthday-john-1706882400) - Character Count: Number of characters in text
- Processing Time: Time taken to process (admin processing + upload time)
- Created At: Submission timestamp
- Updated At: Last status update timestamp
- Created By: User ID and name from JWT token
Example Playback URL: https://micdots.com/play/happy-birthday-john-1706882400
Status Flow
pending → processing → completed
Status Definitions:
pending: Request received, waiting for admin to processprocessing: Admin is working on the request (generating/obtaining audio externally)completed: Audio uploaded by admin and stored in S3
The failed status and error handling workflow will be implemented in MVP 2.
Email Notifications Sent On:
- Request submitted (status:
pending) - Confirmation email - Status change to
processing- Processing notification - Status change to
completed- Audio ready with playback link
Complete User Flow
For detailed step-by-step workflow including sequence diagrams and email flows, see:
Epic 1 - User Flow - Complete client and admin journey with detailed diagrams
Voice Gallery
The voice gallery is publicly accessible (no authentication required). Users can view and select voices for their TTS submissions.
Public Access:
- ✅ View all published voices (GET /api/v1/voice-gallery)
- ✅ Listen to voice samples
- ✅ No login required to browse voices
- ✅ Select voice for TTS submission (login required for submission)
Voice Management:
- Voices are pre-configured in the system
- Voice details managed by administrators
- See Voice Gallery Technical Details
Email Notification System
Epic 1 includes an automated email notification system that sends emails to clients when request status changes.
Email Triggers:
- Request submitted (status: pending) - Confirmation email
- Processing started (status: processing) - Processing notification
- Audio ready (status: completed) - Completion email with playback link
Email Content:
- Request ID and status
- Text preview
- Voice selection
- Shareable playback link (when completed)
- Call-to-action button
Technical Implementation:
- SMTP, SendGrid, or AWS SES integration
- HTML email templates with branding
- Variable substitution system
- See Email Notifications and Email Templates
Access Management
Role-Based Access Control
- Client accounts: Must be created manually by developers (no self-service registration)
- Password resets: Must be handled manually by developers (no self-service reset)
- Admin accounts: Created and managed by developers
Self-service registration and password reset flows are deferred to MVP 2.
Client Role:
- Login with email/password authentication (required for submission)
- Create TTS submissions
- View own submissions only
- Access audio files via shareable links
- Receive email notifications (confirmation + processing)
Admin Role:
- Separate admin login
- View all client requests
- Update request status
- Upload audio files manually
- Access backoffice dashboard
- Monitor system activity
Public Access
No Authentication Required:
- Audio playback via shareable link (
/play/{slug}) - Voice gallery access (GET all published voices)
- Anyone with the link can listen to audio
- No user data exposed on public pages
Backoffice Features
Admin Dashboard (Epic 1)
In Epic 1, the dashboard IS the request management page. It displays the full list of all client requests with filtering, sorting, and pagination. Stats and analytics cards are deferred to Epic 2.
Epic 1 Dashboard Features:
- Display all client requests in a table/list view
- Filter by status (pending, processing, completed)
- Sort by date, status, client
- Search by request ID, text content, or client
- Pagination for large request lists
- Click any request to view details and manage
- Quick status update actions
Request Management (From Dashboard)
- View request details by clicking from dashboard list
- Update status manually (pending → processing → completed)
- Upload audio files for manual processing via pre-signed S3 URLs
- View client information
- View text content and voice selection
- Monitor processing status
Deferred to Epic 2:
- Stats cards (total requests, pending count, completed today, etc.)
- Trend indicators and analytics
- Recent activity feed
- Dashboard widgets
Navigation System
- Fixed header with admin info
- Collapsible sidebar navigation
- Main content area
- System status indicator
- Footer with branding
Testing Strategy
Manual Testing:
- ✅ Manual testing with real audio files
- ✅ Manual QA verification before production
- ✅ Email notification testing
- ✅ Audio upload and playback testing
Automated Testing:
- ❌ No automated tests in Epic 1
- Deferred to future releases for rapid MVP delivery
Success Criteria
Epic 1 is complete when:
Client Journey
- ✅ Client can browse voice gallery (no login required)
- ✅ Client can log in with email/password
- ✅ Client can submit text request with voice selection
- ✅ Client receives confirmation email (pending status)
- ✅ Client can view all personal requests with status
- ✅ Client receives processing email when admin starts
- ✅ Client checks "My Requests" to see completion status (no completion email in Epic 1)
- ✅ Client can play audio on request details page
- ✅ Client can access public playback page via ID
- ✅ Client can download audio file (MP3)
Admin Journey
- ✅ Admin can log in to backoffice
- ✅ Admin can view dashboard displaying all client requests (stats deferred to Epic 2)
- ✅ Admin can filter, sort, and search requests from dashboard
- ✅ Admin can click any request to view details
- ✅ Admin can update request status to "processing" (triggers processing email)
- ✅ Admin can generate/obtain audio files externally
- ✅ Admin can upload audio files to system via pre-signed S3 URLs
- ✅ System uploads audio to S3 automatically
- ✅ Status updates trigger email notifications (confirmation + processing only in Epic 1)
Technical Requirements
- ✅ Manual audio processing workflow functional
- ✅ Audio files uploaded to S3 with pre-signed URLs
- ✅ Unique slug generation functioning
- ✅ Public playback page accessible
- ✅ JWT authentication with role-based access
- ✅ Email notification system operational
- ✅ Manual testing completed
- ✅ Deployed to production
Timeline
Duration: 6 weeks
| Phase | Focus | Deliverables |
|---|---|---|
| 1 | Authentication & Voice | JWT auth, login, role-based access, voice gallery |
| 2 | Request Management | Request submission, status tracking, admin backoffice |
| 3 | Admin Processing & Storage | Admin audio upload, S3 storage, slug generation |
| 4 | Email & Playback | Email notifications, public playback page, status workflow |
| 5 | Testing & Deploy | Manual QA, error handling, production deployment |
Known Limitations
The following limitations are accepted for Epic 1:
User Experience
- No self-service registration: Client accounts must be created manually by developers (self-service registration in MVP 2)
- No password reset flow: Password resets must be handled manually by developers (self-service password reset in MVP 2)
- Character limit: Maximum 1000 characters per submission
- Basic filtering: Limited filter options in "My Requests"
- Manual processing: Admins manually process requests (1-24 hour wait time)
- Automated email notifications: Users receive 3 emails (confirmation + processing + completion)
Admin Experience
- Dashboard displays request list only: Stats cards, analytics, and widgets deferred to Epic 2
- Basic dashboard: Dashboard IS the request management page (no separate pages)
Technical
- Manual audio processing: Admins obtain audio files externally (no API integration)
- No automatic audio generation: Deferred to future releases
- No failed status: Error handling and failed status deferred to MVP 2
- Basic error handling: Advanced error recovery deferred to MVP 2
- No rate limiting: Accept risk for MVP
- No monitoring/logging: Basic error logging only
Development
- No automated tests: Manual testing only
Action Items: These limitations should be reviewed and addressed in future epics.
Technical Documentation
Authentication & User Management
- Authentication - JWT-based authentication system
- User Profile API - User profile endpoints
Text-to-Speech System
- Text-to-Speech Submission API - TTS submission endpoints
- Voice Gallery API - Voice selection system
- Request Management - Admin request workflow
Email Notification System
- Email Notifications - Status change notifications
- Email Templates - Email template specifications
Related Documentation
User Flow
- User Flow - Complete client and admin journey
Sample Pages
- Client Pages - All client-facing page mockups
- Admin Pages - All backoffice page mockups
System Architecture
- System Architecture - Overall system design
- MVP 1 Overview - MVP 1 context