Skip to content

australia/mobtranslate.com

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MobTranslate

πŸ“š For comprehensive documentation, see DOCUMENTATION.md

MobTranslate Logo

Preserving Indigenous Languages Through Technology

Website β€’ Features β€’ Getting Started β€’ Tech Stack β€’ Full Documentation β€’ Contributing

Overview

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.

πŸš€ Features

Core Features

  • πŸ“š 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

Technical Features

  • 🎨 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

πŸ› οΈ Tech Stack

Frontend

  • 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

Backend

  • 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

Development

  • Monorepo: Turborepo for efficient builds
  • Package Manager: pnpm for fast, efficient dependency management
  • Code Quality: ESLint, Prettier, TypeScript
  • Version Control: Git with conventional commits

πŸ“¦ Project Structure

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

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/australia/mobtranslate.com.git
    cd mobtranslate.com
  2. Install dependencies

    pnpm install
  3. 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
  4. Run database migrations

    pnpm supabase db push
  5. Start the development server

    pnpm dev
  6. Access the application Open http://localhost:3000 in your browser

πŸ“š API Documentation

Dictionary Endpoints

GET /api/dictionaries

Returns all available language dictionaries.

GET /api/dictionaries/[language]

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 term
  • letter - Filter by starting letter
  • sortBy - Sort field (default: 'word')
  • sortOrder - 'asc' or 'desc'

GET /api/dictionaries/[language]/words/[word]

Returns detailed information for a specific word.

Translation Endpoints

POST /api/translate/[language]

Translates text to/from an Indigenous language.

Request Body:

{
  "text": "Hello, how are you?",
  "direction": "to-indigenous",
  "stream": true
}

Learning Endpoints

GET /api/v2/learn/next-word

Returns the next word to learn based on spaced repetition algorithm.

POST /api/v2/learn/attempt

Records a learning attempt and updates progress.

User Endpoints

GET /api/v2/user/profile

Returns user profile and statistics.

GET /api/v2/user/likes

Returns user's favorited words.

🀝 Contributing

We welcome contributions from developers, linguists, and language communities! Here's how you can help:

Development Setup

  1. Fork the repository

  2. Create a feature branch

    git checkout -b feature/amazing-feature
  3. Make your changes

    • Follow the LLM Engineer Guide
    • Use components from @ui/components
    • Maintain TypeScript strict mode
    • Write meaningful commit messages
  4. Test your changes

    pnpm build
    pnpm lint
  5. Submit a Pull Request

Adding a New Language

  1. Create language data in dictionaries/[language-code]/
  2. Add language metadata to the database
  3. Update types in dictionaries/types.ts
  4. Submit a PR with the new language data

Reporting Issues

  • Use GitHub Issues for bug reports and feature requests
  • Include reproduction steps for bugs
  • Check existing issues before creating new ones

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • 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

🌍 Supported Languages

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!

πŸ“ž Contact


Built with ❀️ by the global community for Indigenous language preservation

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •