Skip to content

pardeepdhingra/echokids

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

26 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Echo Kids - AAC Communication App

A comprehensive Augmentative and Alternative Communication (AAC) app built with React Native and Expo, featuring dual-mode functionality for parents/carers and children. Echo Kids helps children with autism, ADHD, and communication challenges express themselves through an intuitive, colorful interface.

🎯 Features

Parent/Carer Mode

  • βœ… Create, edit, and delete vocabulary boards
  • βœ… Add custom icons and phrases with TTS
  • βœ… Adjust grid size (2x2, 3x3, 4x4, 5x5, 6x6)
  • βœ… Configure TTS voice and volume settings
  • βœ… Manage favorites section
  • βœ… Button modes: One-word or Sentence
  • βœ… Multiple themes: Default, Colorful, Minimal
  • βœ… Math-protected access control

Child Mode

  • βœ… Simple, grid-based vocabulary boards
  • βœ… Large, colorful buttons optimized for children with ASD/ADHD
  • βœ… Tap-to-speak functionality with high-quality TTS
  • βœ… Favorites section for quick access
  • βœ… No editing capabilities (child-safe)
  • βœ… Minimal navigation and clutter

Technical Features

  • βœ… Offline functionality with iOS native TTS
  • βœ… 30+ predefined daily-life vocabulary buttons
  • βœ… Valid Ionicons for consistent display
  • βœ… TypeScript for type safety
  • βœ… Comprehensive testing and verification system
  • βœ… Automated quality checks

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Expo CLI
  • iOS Simulator (for iOS testing)

Installation

# Clone the repository
git clone <repository-url>
cd AAC/AACApp

# Run automated setup
npm run dev:setup

This will:

  • Install all dependencies
  • Set up Git hooks
  • Run initial verification
  • Prepare the development environment

Development

# Start the development server
npm start

# Run on iOS simulator
npm run ios

# Run on Android emulator
npm run android

# Run on web
npm run web

πŸ” Verification System

This project includes a comprehensive verification system to ensure code quality and prevent regressions.

Quick Verification

npm run verify:quick

Checks:

  • βœ… File structure integrity
  • βœ… Button mode logic (sentence vs one-word)
  • βœ… Voice configuration (Apple TTS voices)
  • βœ… TTS utility functionality
  • βœ… Navigation setup
  • βœ… Icon mapping (valid Ionicons)

Full Verification

npm run dev:verify

Includes:

  • βœ… Quick verification checks
  • βœ… TypeScript compilation
  • βœ… Code quality (ESLint)
  • βœ… Test suite with coverage

Development Workflow Commands

# Show all available commands
npm run dev:workflow

# Diagnose project health
npm run dev:doctor

# Auto-fix linting issues
npm run dev:fix

# Test production build
npm run dev:build

# Clean and reinstall dependencies
npm run dev:clean

# Run pre-push checks
npm run dev:pre-push

πŸ§ͺ Testing

Run Tests

# Run all tests
npm test

# Run tests with coverage
npm run dev:test

# Run specific test file
npm test -- VocabularyGrid.test.tsx

Test Coverage

  • βœ… VocabularyGrid component functionality
  • βœ… TTS utility functions
  • βœ… Navigation between modes
  • βœ… Button mode logic (sentence vs one-word)
  • βœ… Icon mapping validation
  • βœ… Constants and configuration

πŸ”§ Architecture

File Structure

src/
β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”œβ”€β”€ VocabularyGrid.tsx
β”‚   └── AddEditItemModal.tsx
β”œβ”€β”€ screens/            # Screen components
β”‚   β”œβ”€β”€ ModeSelectionScreen.tsx
β”‚   β”œβ”€β”€ ParentVocabularyScreen.tsx
β”‚   β”œβ”€β”€ ChildVocabularyScreen.tsx
β”‚   β”œβ”€β”€ SettingsScreen.tsx
β”‚   └── FavoritesScreen.tsx
β”œβ”€β”€ utils/              # Utility functions
β”‚   β”œβ”€β”€ tts.ts         # Text-to-speech functionality
β”‚   └── storage.ts     # AsyncStorage helpers
β”œβ”€β”€ types/              # TypeScript type definitions
β”‚   └── index.ts
β”œβ”€β”€ constants/          # App constants and configuration
β”‚   └── index.ts
└── __tests__/          # Test files
    β”œβ”€β”€ VocabularyGrid.test.tsx
    β”œβ”€β”€ TTS.test.ts
    β”œβ”€β”€ Navigation.test.tsx
    β”œβ”€β”€ ButtonMode.test.tsx
    β”œβ”€β”€ IconMapping.test.ts
    └── Constants.test.ts

Key Components

VocabularyGrid

  • Displays vocabulary items in a configurable grid
  • Handles button mode logic (sentence vs one-word)
  • Manages icon display using Ionicons
  • Supports both parent and child modes

TTS Utility

  • Uses Apple TTS voices for natural speech
  • Supports voice selection and configuration
  • Handles speech rate and volume control

Mode Selection

  • Math-protected parent access
  • Quick switching between modes
  • Secure child-to-parent transition

🎨 Customization

Adding New Vocabulary

  1. Edit src/constants/index.ts
  2. Add new items to BUTTON_TEMPLATES
  3. Map icons in VocabularyGrid.tsx
  4. Run verification: npm run verify:quick

Adding New Icons

  1. Choose valid Ionicons from Ionicons Library
  2. Update ICON_MAP in VocabularyGrid.tsx
  3. Add to validation list in verification scripts
  4. Test with npm run verify:quick

Voice Configuration

  1. Update VOICE_OPTIONS in src/constants/index.ts
  2. Use Apple TTS bundle identifiers for best quality
  3. Test with different voices in settings

🚦 Quality Assurance

Automated Checks

  • Pre-commit hooks: Run verification before each commit
  • GitHub Actions: Continuous integration on push/PR
  • TypeScript: Compile-time type checking
  • ESLint: Code quality and consistency
  • Jest: Unit and integration testing

Manual Testing Checklist

  • Parent mode: Create/edit/delete vocabulary items
  • Child mode: Tap buttons and verify TTS works
  • Mode switching: Math question protection works
  • Settings: Voice, grid size, theme changes work
  • Button modes: Sentence vs one-word behavior
  • Icons: All icons display correctly (no "?" symbols)
  • Offline: App works without internet connection

πŸ› Troubleshooting

Common Issues

Icons not displaying (showing "?")

npm run verify:quick
# Check icon mapping validation

TTS voices sound robotic

npm run dev:doctor
# Verify Apple TTS configuration

Button modes not working correctly

npm test -- ButtonMode.test.tsx
# Run button mode tests

Build failures

npm run dev:clean
npm run dev:setup

Getting Help

  1. Run npm run dev:doctor to diagnose issues
  2. Check verification output: npm run verify:quick
  3. Review test results: npm test
  4. Check GitHub Actions for CI failures

πŸ“± Deployment

iOS Deployment

# Test build
npm run dev:build

# Create iOS build
npx expo build:ios

Testing on Device

# Start with tunnel for device testing
npx expo start --tunnel

# Use Expo Go app to scan QR code

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run full verification: npm run dev:verify
  5. Run pre-push checks: npm run dev:pre-push
  6. Submit a pull request

Development Guidelines

  • βœ… Always run verification before committing
  • βœ… Write tests for new functionality
  • βœ… Use TypeScript strictly (no any types)
  • βœ… Follow existing code patterns
  • βœ… Update documentation for new features

πŸ“„ License

This project is licensed under the MIT License.

πŸ™ Acknowledgments

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors