A web-based platform for semi-automatic CSV translation powered by AI (MarianMT) and enhanced with human validation.
- Features
- Screenshots
- Tech Stack
- Architecture
- Quick Start
- Documentation
- Linting & Formatting
- Testing
- Contact
| Category | Description |
|---|---|
| 📁 File Handling | Upload CSV files, select rows/columns, validate content |
| 🤖 Smart Translation | AI-based translation (MarianMT via Rust), error highlighting, Redis caching |
| 🔐 Authentication | JWT/OAuth2 login, MongoDB-based session persistence |
| ⬇️ Export | Download translated CSV files |
| Layer | Technologies |
|---|---|
| Frontend | Next.js, React, TypeScript, Tailwind CSS, shadcn/ui |
| Backend | Django, Django REST Framework, Python, JWT, OAuth2 |
| AI/ML | Rust, PyO3, MarianMT, Hugging Face |
| Data | MongoDB, Redis |
| Infrastructure | Docker, GitHub Actions, Postman |

System architecture of the CSV Translation Tool
- Python 3.12
- Docker
- Rust
- Node.js (16+)
- npm (bundled with Node.js)
-
Clone the repository
git clone https://github.com/Kerciu/csv-translation-tool.git cd csv-translation-tool -
Ensure Docker Desktop is running
-
Build and run the application
docker-compose build docker-compose up
-
Access the app Navigate to http://localhost:3000 Use
test_data/example.csvto try it out!
- Project documentation available here
- Swagger available at http://127.0.0.1:8000/swagger/ (when app is running)
-
Install development dependencies
pip install -r requirements-dev.txt
-
Generate HTML docs From inside
server/docs:Linux:
make html xdg-open build/html/index.html
Windows:
.\make.bat html Start-Process .\build\html\index.html
- Python:
black,isort,flake8 - React:
ESLint,Prettier - Rust:
clippy,rustfmt - Pre-commit: For unified code quality enforcement
pip install -r requirements-dev.txt
pre-commit install
pre-commit run --all-filescd model
cargo fmt
cargo clippy-
Run the app:
docker-compose up
-
Open shell inside the backend container:
docker exec -it translator-server bash -
Run tests:
python manage.py test
-
Navigate to model directory:
cd model -
Ensure Redis is running on port
6379, then:cargo test
For questions, feedback, or collaboration:
Authors




