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.csv
to 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-files
cd 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