A robust Java-based REST API integrated with Google Gemini AI to provide real-time English-to-Darija translations.
# ϙ The Translator Suite: Multi-Client RESTful Ecosystem
A comprehensive, full-stack translation ecosystem developed for **CSC 3374 (RESTful Services)** at **Al Akhawayn University**. This project features a central Java backend integrated with **Google Gemini AI** to provide English-to-Darija (Moroccan Arabic) translations across four distinct client platforms.
---
## The Architecture
The project follows a decoupled, RESTful architecture where a single source of truth (the Java API) serves multiple frontends using different languages and frameworks.
### 1. Backend: Java REST API
* **Tech:** Jersey, Grizzly, Maven, Google Gemini API.
* **Security:** Basic Authentication (Benski:2110) and `.env` secret management.
* **Role:** Acts as the "Brain," handling API requests and communicating with Google's LLM.
### 2. Mobile Client: React Native App
* **Tech:** React Native, Expo, JavaScript.
* **Features:** Modern dark-mode UI, real-time translation, and firewall-bypass via Cloudflare Tunnels.
### 3. Web Client: PHP Portal
* **Tech:** PHP 8.x, cURL, CSS3.
* **Features:** A lightweight, server-side rendered web interface with a sleek dark-mode aesthetic.
### 4. Browser Client: Chrome Extension
* **Tech:** JavaScript (Manifest V3), HTML5.
* **Features:** A side-panel utility allowing for seamless translation without leaving the browser tab.
### 5. CLI Client: Python Script
* **Tech:** Python 3, Requests library.
* **Features:** A minimalist terminal-based tool for rapid translations.
---
## Installation & Setup
### Prerequisites
* **Java JDK 17+** and **Maven**
* **Node.js** (for the Mobile App)
* **PHP** (for the Web Client)
* **Python 3**
### 1. Backend Configuration
1. Navigate to `RESTFULProject2`.
2. Create a `.env` file in the root directory.
3. Add your API key: `GEMINI_API_KEY=your_key_here`
4. Run the server: `mvn exec:java`
### 2. Mobile App Configuration
1. Navigate to `TranslatorMobile`.
2. Update the `fetch` URL in `App.js` to your backend endpoint …