
Empowering Communication Through Technology ๐ฌโจ
A mobile-first, accessible web application designed to empower non-verbal users to communicate effectively using Text-to-Speech (TTS), intelligent suggestions, and contextual phrase buttons.
๐ฏ Core Functionality
- ๐ฃ๏ธ Text-to-Speech (TTS) - Convert text to natural speech using Web Speech API
- ๐ง Smart Suggestions - AI-powered contextual phrase recommendations
- ๐ฑ Mobile-First Design - Optimized for touch devices and mobile screens
- โฟ Accessibility Ready - WCAG compliant with proper contrast and touch targets
- ๐พ Offline Support - LocalStorage for favorites and custom phrases
- ๐จ Emergency Button - Always accessible emergency communication
๐จ User Experience
- ๐ Customizable Interface - Adjustable font sizes and contrast settings
- โญ Favorites System - Save frequently used phrases for quick access
- ๐ Smart Context - Contextual phrase suggestions based on usage patterns
- ๐ Custom Phrases - Create and manage personalized communication sets
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher) ๐ข
- npm or yarn package manager ๐ฆ
-
Clone the repository
git clone https://github.com/jishanahmed-shaikh/Speak-EZ.git cd Speak-EZ
-
Install dependencies
npm install # or yarn install
-
Run the development server
npm run dev # or yarn dev
-
Open your browser
Navigate to http://localhost:3000 ๐
๐ก Pro Tip: For the best experience, use mobile device emulation in your browser's dev tools or test on an actual mobile device!
- DevTools Emulation: Use
Ctrl+Shift+M
(Chrome/Edge/Firefox) to toggle device toolbar ๐ฒ - Touch Targets: All interactive elements are minimum 44x44px for optimal touch accessibility ๐
- TTS Testing: Test speech functionality by typing text or tapping phrase buttons ๐ต
- Responsive Design: Verify layouts work across different screen sizes (320px - 1200px+) ๐
- TTS functionality works on target devices ๐
- All buttons are easily tappable on mobile ๐ฑ
- Emergency button is always accessible ๐จ
- Favorites save and load correctly ๐พ
- Smart suggestions appear contextually ๐ง
- Offline functionality works without internet ๐
The application uses the browser's built-in Web Speech API for Text-to-Speech functionality by default - no additional setup required! ๐ฏ
Currently integrated with Groq SDK for intelligent phrase suggestions. The app supports multiple AI providers:
- ๐ข Groq (Current) - Fast inference for real-time suggestions
- ๐ต OpenAI GPT-4 - Advanced language understanding
- ๐ก Google Gemini - Multimodal AI capabilities
- ๐ฃ Custom Models - Bring your own AI endpoint
Smart Suggestions Setup:
// src/components/SmartSuggestions.tsx
// Replace the placeholder with your preferred AI service
const suggestions = await yourAIService.generateSuggestions(context);
Custom TTS Engine:
// src/components/TTSInput.tsx
// Swap out Web Speech API with your preferred TTS service
const speak = (text: string) => {
// Your custom TTS implementation here
};
Create a .env.local
file for API keys:
GROQ_API_KEY=your_groq_api_key_here
OPENAI_API_KEY=your_openai_api_key_here
GOOGLE_AI_KEY=your_google_ai_key_here
src/
โโโ app/
โ โโโ page.tsx # ๐ Main application layout
โ โโโ globals.css # ๐จ Global styles & Tailwind imports
โ โโโ layout.tsx # ๐ฑ Root layout configuration
โโโ components/ # ๐งฉ Reusable UI components
โ โโโ TTSInput.tsx # ๐ค Text-to-Speech input component
โ โโโ SmartSuggestions.tsx # ๐ง AI-powered suggestions
โ โโโ ... # ๐ฆ Other modular components
โโโ hooks/ # ๐ช Custom React hooks
โโโ types/ # ๐ TypeScript type definitions
โโโ data/ # ๐ Static data and configurations
โโโ assets/ # ๐ผ๏ธ Images, icons, and media files
- Global Styles:
src/app/globals.css
- Base styles and Tailwind imports - Component Styles: Tailwind CSS classes for responsive design
- Custom Themes: Modify CSS variables for color schemes and typography
- Responsive Design: Mobile-first approach with Tailwind breakpoints
- ๐ Layout Changes:
src/app/page.tsx
- Main app structure and features - ๐งฉ UI Components:
src/components/
- Modular, reusable interface elements - ๐จ Visual Design: Tailwind config and CSS variables for branding
- ๐ฑ Mobile Optimization: Touch targets, gestures, and mobile-specific features
- ๐ฑ๏ธ Desktop Testing: Verify all functionality works with mouse and keyboard
- ๐ฑ Mobile Testing: Test on actual devices or browser emulation
- โฟ Accessibility Testing: Screen readers, keyboard navigation, color contrast
- ๐ Audio Testing: TTS functionality across different browsers and devices
# Install testing dependencies
npm install --save-dev @testing-library/react @testing-library/jest-dom jest
# Run tests
npm test
Suggested Testing Libraries:
- Jest - Unit testing framework ๐งช
- React Testing Library - Component testing utilities ๐ฌ
- Cypress - End-to-end testing ๐ฏ
- Axe - Accessibility testing ๐ฆฎ
- Lighthouse - Performance, accessibility, and SEO audits ๐
- Web Vitals - Core web performance metrics ๐
- Mobile Performance - Test on slower devices and networks ๐ถ
Manual Deployment:
-
๐ค Push to Repository
git add . git commit -m "Ready for deployment" git push origin main
-
๐ Connect to Vercel
- Visit vercel.com/new
- Import your GitHub/GitLab repository
- Vercel will auto-detect Next.js configuration
-
โ๏ธ Environment Variables
GROQ_API_KEY=your_groq_api_key OPENAI_API_KEY=your_openai_api_key NEXT_PUBLIC_APP_URL=https://your-app.vercel.app
-
๐ Deploy
- Click Deploy button
- Your app will be live in minutes!
- Netlify - Static site hosting with serverless functions ๐ข
- Railway - Full-stack deployment platform ๐
- AWS Amplify - Scalable cloud hosting โ๏ธ
- Docker - Containerized deployment ๐ณ
- Environment variables configured ๐
- Custom domain setup (optional) ๐
- Analytics integration ๐
- Error monitoring (Sentry, LogRocket) ๐
- Performance monitoring ๐
- LocalStorage: Favorites and custom phrases persist offline ๐
- Session Management: User preferences maintained across browser sessions
- Data Privacy: All user data stays on device - no external storage ๐
- WCAG 2.1 AA Compliant: Meets international accessibility standards โ
- Screen Reader Support: Semantic HTML and ARIA labels ๐
- Keyboard Navigation: Full functionality without mouse ๐น
- High Contrast Mode: Enhanced visibility options ๐
- Touch Accessibility: 44px minimum touch targets ๐
- React 19: Latest React features with concurrent rendering โ๏ธ
- Next.js 15: App Router with server components ๐โโ๏ธ
- TypeScript: Type-safe development experience ๐
- Tailwind CSS 4: Utility-first styling with modern features ๐จ
- Web Speech API: Native browser TTS integration ๐ฃ๏ธ
We welcome contributions from the community! Here's how you can help:
Found a bug? Please open an issue with:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Browser/device information
Have an idea? Create a feature request with:
- Detailed description of the feature
- Use case and benefits
- Mockups or examples (if applicable)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Web Speech API - For native browser TTS support ๐ค
- Tailwind CSS - For beautiful, responsive styling ๐จ
- Next.js Team - For the amazing React framework ๐
- Accessibility Community - For guidance on inclusive design โฟ
- Contributors - Thank you to everyone who helps improve SpeakEZ! ๐ฅ
Made with โค๏ธ for the Specially-Abled Community
๐ Star this repo โข ๐ Report Bug โข ๐ก Request Feature
Empowering Communication, One voice at a time ๐ฃ๏ธโจ