A modern web application for converting text to speech and managing audiobooks. Built with Next.js, TypeScript, and NextUI.
- Secure user authentication with Supabase
- Email/password login
- Secure password reset flow with email verification
- Protected routes with automatic redirects
- Session management with PKCE flow
- Automatic session refresh
- Profile management (name, email)
- Theme customization (light/dark/system)
- Audio quality settings (standard/high/premium)
- Voice selection with preview
- Account deletion
- View all converted audio files
- Delete files with confirmation
- File metadata display
- Responsive grid layout
- Dark mode support
- Text to speech conversion
- Multiple voice options
- Voice preview functionality
- Quality settings
- Progress tracking
- Modern, responsive design
- Dark/Light mode support
- Toast notifications
- Loading states
- Error handling
- Confirmation modals
- Smooth animations
- Accessible components
- Framework: Next.js 14
- Language: TypeScript
- UI Library: NextUI
- Authentication: Supabase Auth with PKCE
- State Management: React Query
- Form Handling: React Hook Form + Zod
- Styling: Tailwind CSS
- Animations: Framer Motion
- Notifications: React Toastify
- Icons: Lucide Icons
- User requests password reset from the forgot-password page
- System sends a secure reset link to user's email
- User clicks the link and is taken to the reset-password page
- User sets a new password
- System verifies the reset token and updates the password
- User is redirected to login to sign in with new credentials
- Secure PKCE (Proof Key for Code Exchange) flow
- Automatic session refresh
- Protected route handling
- Session persistence across page reloads
- Node.js 18.17 or later
- npm or yarn
- Supabase account
src/
├── app/ # Next.js app directory
│ ├── (auth)/ # Authentication routes
│ │ ├── login/ # Login page
│ │ ├── signup/ # Signup page
│ │ └── layout.tsx # Auth layout
│ ├── library/ # Library page
│ ├── settings/ # Settings page
│ ├── forgot-password/ # Password reset request
│ ├── reset-password/ # Password reset form
│ └── layout.tsx # Root layout
├── components/ # React components
│ ├── layout/ # Layout components
│ ├── ui/ # UI components
│ └── providers/ # Context providers
├── lib/ # Utility functions
│ ├── auth/ # Authentication
│ ├── query/ # React Query
│ └── supabase/ # Supabase client
└── types/ # TypeScript types