# Darija Translator — LLM-powered RESTful Web Service
Translate text from supported source languages such as **English** and **French** into **Moroccan Arabic Dialect (Darija)** using Google Gemini Flash through a Jakarta EE REST endpoint with Basic Authentication.
---
## Project structure
```
.
├── pom.xml
├── src/main/java/ma/translator/ ← Jakarta REST service classes
├── src/main/webapp/ ← deployment descriptors
├── src/main/chrome extension/ ← Chrome Extension (Manifest V3)
├── src/main/php client/ ← PHP web client
├── src/main/python client/ ← Python CLI client
├── src/main/react native client/ ← React Native mobile app
├── docs/ ← UML deliverables
└── test-api.sh ← curl-based API smoke tests
```
---
## 1. Server setup
### Prerequisites
- JDK 17+
- Maven 3.9+
- GlassFish 7 or Payara 6 (Jakarta EE 10)
- A Google Gemini API key (free tier:
ai.google.dev)
### Build
```bash
mvn clean package
```
### Configure Gemini API key
```bash
export GEMINI_API_KEY=your_key_here
```
### Create a user in GlassFish
```bash
# Start GlassFish
./glassfish7/bin/asadmin start-domain
# Create user "apiuser" in group "translator-group"
./glassfish7/bin/asadmin create-file-user \
--groups translator-group \
--authrealmname file \
apiuser
# Enter password when prompted
```
### Deploy
```bash
./glassfish7/bin/asadmin deploy target/darija-translator.war
```
The service is now at: `
localhost`
---
## 2. REST API reference
### Health check (no auth)
```bash
curl
localhost
```
### Quick guided terminal translation
```bash
./translate-now.sh
```
### POST — translate JSON body
```bash
curl -X POST
localhost \
-H "Content-Type: application/json" \
-u apiuser:changeme123 \
-d '{"text": "Hello, how are …