Logo Lanfrica

SEMLALY/Darija-Translator-using-LLM-powered-RESTful-Web-Service-

Domain:

natural language processing

Record type:

software
Creator:
SEM
Host:
LLM-powered RESTful API that translates English text into Moroccan Darija using Google Gemini Flash Lite. Built with Jakarta REST, secured with basic authentication, and supports multiple clients including a Chrome extension, PHP, Python, and React Native apps, demonstrating scalable LLM integration. # Darija Translator REST API University mini project: a Java Maven WAR service that translates English text into Moroccan Darija (Latin letters only) using Google Gemini. ## Overview This project exposes one secured REST endpoint: - `POST /api/translate` The backend is built with Jakarta REST (JAX-RS), Jersey, and Jetty. It calls Gemini `generateContent` using: - `generativelanguage.googleap…` The project also includes a Chrome extension (Manifest V3 + `chrome.sidePanel`) that can translate selected text directly from a web page. ## Features - English to Moroccan Darija translation via Gemini - Darija output requested in Latin letters only - Basic Authentication for API access - Clean input validation and upstream error handling - Plain text translation response (not JSON) - Chrome right-click flow: context menu `Translate` captures selection, opens side panel, sends text to backend, and shows translated result ## Technologies Used - Java 17 - Maven (WAR packaging) - Jakarta RESTful Web Services (`jakarta.ws.rs`) - Jersey (JAX-RS implementation) - Jetty Maven Plugin (local run) - Jackson (JSON parsing) - Google Gemini API (`generateContent`) - Chrome Extension APIs (Manifest V3, contextMenus, sidePanel) ## Project Structure - `pom.xml` - Maven dependencies and build plugins - `src/main/java/com/example/translator/TranslatorApplication.java` - JAX-RS app config (`/api`) - `src/main/java/com/example/translator/TranslatorResource.java` - `POST /api/translate` + Gemini integration - `src/main/java/com/example/translator/auth/AuthenticationFilter.java` - Basic Authentication filter - `src/main/webapp/WEB-INF/web.xml` - Jersey servlet mapping - Chrome extension folder (Manifest V3) - context menu + side panel UI/logic ## Architecture Flow 1. User sends text (API client or Chrome extension) 2. Request hits `POST /api/translate` 3. `AuthenticationFilter` validates Basic Auth 4. `TranslatorResour …