Baian is a comprehensive Arabic learning platform that combines modern technology with traditional language education methods. The platform consists of two main components:
- Mobile App (
baian/) - A React Native application for interactive Arabic learning with letterboard, conversation practice, and speech recognition - Backend API (
backend/) - Python-based server providing AI-powered Arabic learning assistance, speech synthesis, and pronunciation assessment
- Interactive grid of all Arabic letters (28 letters)
- Audio pronunciation for each letter
- Curated word lists with transliteration and English meanings
- Built-in quizzes for vocabulary practice
- Restaurant Ordering (Easy): Practice ordering food in Arabic
- Friend Chat (Medium): Casual conversations with Arabic-speaking friends
- Business Meeting (Hard): Professional Arabic communication
- Voice recording and pronunciation practice
- AI-powered feedback on Arabic speech
- Personalized learning paths and progress tracking
- Daily challenges and exercises
- Real-time Arabic speech recognition
- Azure Speech Services integration
- Pronunciation accuracy scoring
- Cultural appropriateness feedback
- Clean, intuitive design following modern UX principles
- Dark/light theme support
- Responsive layouts for all screen sizes
- Accessibility features for inclusive learning
Baian/
├── src/ # React Native mobile app source
│ ├── components/ # Reusable UI components
│ │ ├── ArabicLetterboard.tsx # Arabic letter grid component
│ │ └── TTSButton.tsx # Text-to-speech button for Arabic
│ ├── screens/ # App screens and navigation
│ │ ├── DashboardScreen.tsx # Main dashboard with letterboard
│ │ └── WelcomeScreen.tsx # Welcome screen with Arabic branding
│ ├── data/ # App data and configurations
│ │ └── scenarios.ts # Arabic conversation scenarios
│ ├── constants/ # App constants and themes
│ │ └── theme.ts # Arabic-themed colors and styling
│ └── utils/ # Utility functions
├── backend/ # Python Flask API server
│ ├── main.py # Main server with Arabic endpoints
│ └── requirements.txt # Python dependencies
├── package.json # React Native dependencies
└── README.md
- Node.js (v16 or higher)
- npm or yarn
- Python 3.8+
- Expo CLI (for mobile development)
-
Navigate to the mobile app directory:
cd baian -
Install dependencies:
npm install
-
Start the Expo development server:
npx expo start
-
Run on device:
- Install Expo Go app on your mobile device
- Scan the QR code displayed in the terminal
The backend provides these Arabic-specific endpoints:
GET /api/letters- Get all Arabic letters with metadataGET /api/letters/{id}/words- Get 10 words for a specific letterGET /api/quiz/{letter_id}- Get quiz questions for a letterPOST /api/synthesize-arabic- Generate Arabic speech audioPOST /api/analyze-arabic-speech- Analyze Arabic pronunciation
-
Navigate to the backend directory:
cd backend -
Create a virtual environment (recommended):
python -m venv venv # On Windows: venv\Scripts\activate # On macOS/Linux: source venv/bin/activate
-
Install Python dependencies:
pip install -r requirements.txt
-
Configure environment variables: Create a
.envfile in thebackenddirectory:AZURE_OPENAI_KEY=your_openai_key AZURE_OPENAI_ENDPOINT=your_openai_endpoint AZURE_OPENAI_VERSION=2023-05-15 AZURE_SPEECH_KEY=your_speech_key AZURE_SPEECH_REGION=your_speech_region IP_ADDRESS=your_local_ip_address
-
Run the Flask server:
python main.py
- React Native - Cross-platform mobile development
- React - Web application framework
- TypeScript - Type-safe JavaScript development
- Tailwind CSS - Utility-first CSS framework
- Python Flask - Lightweight web framework
- Azure OpenAI - AI-powered learning assistance
- Azure Speech Services - Speech recognition and synthesis
- Expo - React Native development platform
- Vite - Fast web development build tool
- ESLint - Code quality and consistency
We welcome contributions to make Baian even better! Please feel free to:
- 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.
For support, questions, or feedback:
- Create an issue in this repository
- Contact the development team
- Check our documentation
- Interactive 28-letter Arabic alphabet grid
- Tap any letter to hear pronunciation
- View curated words starting with each letter
- Take quizzes to test your knowledge
- Restaurant scenario: Order food in Arabic
- Friend chat: Casual Arabic conversations
- Business meeting: Professional Arabic communication
- Arabic-specific pronunciation assessment
- Cultural appropriateness feedback
- Real-time transcription and analysis
Baian - Making Arabic learning smarter, more accessible, and more engaging for everyone. 🌟
بيان - طريقة أذكى لتعلم العربية 📚