π For comprehensive documentation, see DOCUMENTATION.md
Preserving Indigenous Languages Through Technology
Website β’ Features β’ Getting Started β’ Tech Stack β’ Full Documentation β’ Contributing
MobTranslate is a fully open-source, community-driven platform designed to create "Google Translate" for Indigenous languages worldwide. Our mission is to preserve and promote Indigenous languages through modern technology, making them accessible to speakers, learners, and researchers globally.
- π Digital Dictionaries - Comprehensive dictionaries for multiple Indigenous languages
- π AI-Powered Translation - Translate text between English and Indigenous languages
- π― Interactive Learning - Gamified learning experience with spaced repetition
- π Leaderboards - Track progress and compete with other learners
- β€οΈ Favorites System - Save and organize words for easy reference
- π Global Support - Supporting Indigenous languages from around the world
- π¨ Modern UI/UX - Beautiful, responsive design with dark mode support
- β‘ Real-time Search - Fast, fuzzy search across thousands of words
- π± Mobile-First - Optimized for all devices and screen sizes
- βΏ Accessible - WCAG compliant with proper contrast ratios and keyboard navigation
- π Secure - Built on Supabase with row-level security
- π Analytics - Track learning progress and language statistics
- Framework: Next.js 14 with App Router
- Language: TypeScript (strict mode)
- Styling: Tailwind CSS with custom design system
- UI Components: Custom component library (
@ui/components) - State Management: React hooks + SWR for data fetching
- AI Integration: Vercel AI SDK with streaming support
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Storage: Supabase Storage for audio files
- API: RESTful API with Next.js API routes
- Deployment: Vercel with edge functions
- Monorepo: Turborepo for efficient builds
- Package Manager: pnpm for fast, efficient dependency management
- Code Quality: ESLint, Prettier, TypeScript
- Version Control: Git with conventional commits
mobtranslate.com/
βββ apps/
β βββ web/ # Main Next.js application
β βββ app/ # App Router pages and API routes
β β βββ (auth) # Authentication pages
β β βββ api/ # API endpoints
β β βββ chat/ # AI chat interface
β β βββ dashboard/ # User dashboard
β β βββ dictionaries/ # Dictionary browsing
β β βββ learn/ # Learning modules
β β βββ leaderboard/ # Gamification
β β βββ stats/ # Progress tracking
β βββ components/ # React components
β βββ lib/ # Utilities and helpers
β βββ public/ # Static assets
βββ ui/ # Shared UI component library
β βββ components/ # Reusable UI components
β β βββ Alert.tsx # Notification component
β β βββ Button.tsx # Button with variants
β β βββ Card.tsx # Card container
β β βββ Input.tsx # Form inputs
β β βββ Table.tsx # Data tables
β βββ lib/ # UI utilities
βββ dictionaries/ # Language data and types
βββ supabase/ # Database configuration
βββ migrations/ # Database migrations
βββ functions/ # Edge functions
- Node.js v22 or later
- pnpm v7.15.0 or later
- Supabase account (for database)
- OpenAI API key (for AI features)
-
Clone the repository
git clone https://github.com/australia/mobtranslate.com.git cd mobtranslate.com -
Install dependencies
pnpm install
-
Set up environment variables
cp apps/web/.env.example apps/web/.env
Fill in the required environment variables:
# Supabase NEXT_PUBLIC_SUPABASE_URL=your-supabase-url NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key # OpenAI OPENAI_API_KEY=your-openai-api-key # App NEXT_PUBLIC_APP_URL=http://localhost:3000
-
Run database migrations
pnpm supabase db push
-
Start the development server
pnpm dev
-
Access the application Open http://localhost:3000 in your browser
Returns all available language dictionaries.
Returns dictionary data for a specific language with search and pagination.
Query Parameters:
page- Page number (default: 1)limit- Results per page (default: 50)search- Search termletter- Filter by starting lettersortBy- Sort field (default: 'word')sortOrder- 'asc' or 'desc'
Returns detailed information for a specific word.
Translates text to/from an Indigenous language.
Request Body:
{
"text": "Hello, how are you?",
"direction": "to-indigenous",
"stream": true
}Returns the next word to learn based on spaced repetition algorithm.
Records a learning attempt and updates progress.
Returns user profile and statistics.
Returns user's favorited words.
We welcome contributions from developers, linguists, and language communities! Here's how you can help:
-
Fork the repository
-
Create a feature branch
git checkout -b feature/amazing-feature
-
Make your changes
- Follow the LLM Engineer Guide
- Use components from
@ui/components - Maintain TypeScript strict mode
- Write meaningful commit messages
-
Test your changes
pnpm build pnpm lint
-
Submit a Pull Request
- Create language data in
dictionaries/[language-code]/ - Add language metadata to the database
- Update types in
dictionaries/types.ts - Submit a PR with the new language data
- Use GitHub Issues for bug reports and feature requests
- Include reproduction steps for bugs
- Check existing issues before creating new ones
This project is licensed under the MIT License - see the LICENSE file for details.
- Indigenous communities worldwide for sharing their languages
- All contributors who have helped build this platform
- Supabase for the amazing backend infrastructure
- Vercel for hosting and deployment
- OpenAI for AI capabilities
Currently supporting:
- Kuku Yalanji - Far North Queensland, Australia
- Mi'gmaq - Eastern Canada and Northeastern United States
- Anindilyakwa - Groote Eylandt, Northern Territory, Australia
More languages are being added regularly. Contact us if you'd like to contribute a new language!
- Website: https://mobtranslate.com
- GitHub: https://github.com/australia/mobtranslate.com
- Email: contact@mobtranslate.com
Built with β€οΈ by the global community for Indigenous language preservation
