Lebab is a real-time multilingual customer support platform that enables support agents to work entirely in their preferred language while seamlessly handling customer conversations in any language.
Built with React, Node.js, and Socket.IO, the system automatically detects customer languages, translates messages bidirectionally in real-time, and maintains conversation continuity across sessions—allowing agents and customers to communicate naturally in their preferred languages without ever knowing translation is happening.
- How It Works
- Features
- Tech Stack
- Project Structure
- Getting Started
- Development
- Data & API
- Contributing
- License
- Agent selects their preferred language
- Customer sends a message in any language (Spanish, French, German, Japanese, etc.)
- System detects the language and translates to the agent's preferred language
- Agent sees the translated message in their workspace
- Agent replies in their preferred language
- System translates the reply back to customer's language
- Customer receives the reply in their original language
You can see a demo of how it works on Youtube
- Automatic language detection
- Bidirectional translation
- Real-time communication
- Customer and agent chat UI
- Language selection helper component
- Persisted conversations stored in JSON
- Minimal, easy-to-run local dev setup
Frontend:
- React with Hooks
- Tailwind CSS for styling
- Socket.IO Client for real-time updates
Backend:
- Node.js with Express
- Socket.IO for WebSocket communication
- Lingo.dev SDK for translation
Data:
- JSON file stored in
server/datafor simplicity
- client/ — frontend app (Vite + React)
- client/src/ — React source files
- client/src/agent/ — agent components
- client/src/customer/ — customer components
- client/src/utils/LanguageSelector.jsx — language selector
- server/ — backend server
- server/index.js — server entry
- server/routes/conversations.js — conversations routes
- server/data/conversations.json — stored conversations
- server/utils/utils.js — helper utilities
Prerequisites: Node.js (16+ recommended) and npm.
Clone the project and navigate into it:
git clone https://github.com/ade555/Lebab.git
# naviagate into it
cd LebabInstall dependencies for both client and server:
# from project root
cd client
npm install
#back into Lebab
cd ../
# cd into server
cd server
npm installCreate environment variables:
# create client/.env and paste:
VITE_API_BASE_URL=http://localhost:3000
# create server/.env and paste:
LINGODOTDEV_API_KEY=your-api-key-from-lingo.dev
PORT=3000
CLIENT_ORIGIN=http://127.0.0.1:5173
Run the backend (in one terminal):
cd server
npm run devRun the frontend (in another terminal):
cd client
npm run devOpen the frontend URL printed by Vite (usually http://localhost:5173) and interact with the app.
Navigate to /customer to simulate a customer session and /agent to simulate an agent.
Conversations are persisted to server/data/conversations.json. The backend routes for conversations live in server/routes/conversations.js.
If you need to reset conversations, edit or replace the JSON file directly.
Contributions are welcome. Suggested workflow:
- Fork the repo
- Create a feature branch
- Implement and test locally
- Open a pull request
This project is provided as-is. See the LICENSE file for details.