{"id":28341143,"url":"https://github.com/kerciu/csv-translation-tool","last_synced_at":"2026-02-26T07:42:53.674Z","repository":{"id":290581241,"uuid":"938331699","full_name":"Kerciu/csv-translation-tool","owner":"Kerciu","description":"CSV Translation Tool | AI-assisted web app for semi-automatic translation of text datasets ","archived":false,"fork":false,"pushed_at":"2025-06-03T19:13:02.000Z","size":7638,"stargazers_count":2,"open_issues_count":19,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-03T19:36:50.616Z","etag":null,"topics":["csv","django","django-rest-framework","full-stack","huggingface","ml","mongodb","nextjs","reactjs","redis","rust","shadcn-ui","tailwindcss","three-layer-architecture","transformer","translation","typescript","web-application"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kerciu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-24T19:35:12.000Z","updated_at":"2025-05-31T13:33:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"d11b3bdb-e980-4178-9f65-cac179a7520a","html_url":"https://github.com/Kerciu/csv-translation-tool","commit_stats":null,"previous_names":["kerciu/csv-translation-tool"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kerciu/csv-translation-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerciu%2Fcsv-translation-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerciu%2Fcsv-translation-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerciu%2Fcsv-translation-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerciu%2Fcsv-translation-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kerciu","download_url":"https://codeload.github.com/Kerciu/csv-translation-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerciu%2Fcsv-translation-tool/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259708439,"owners_count":22899594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","django","django-rest-framework","full-stack","huggingface","ml","mongodb","nextjs","reactjs","redis","rust","shadcn-ui","tailwindcss","three-layer-architecture","transformer","translation","typescript","web-application"],"created_at":"2025-05-27T03:56:37.363Z","updated_at":"2026-02-26T07:42:48.654Z","avatar_url":"https://github.com/Kerciu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌍 Semi-Automatic AI-Powered CSV Translation Tool\n\nA **web-based platform** for **semi-automatic CSV translation** powered by **AI (MarianMT)** and enhanced with **human validation**.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n---\n\n## 📑 Table of Contents\n\n* [Features](#features)\n* [Screenshots](#screenshots)\n* [Tech Stack](#tech-stack)\n* [Architecture](#architecture)\n* [Quick Start](#quick-start)\n* [Documentation](#documentation)\n* [Linting \u0026 Formatting](#linting--formatting)\n* [Testing](#testing)\n* [Contact](#contact)\n\n---\n\n\u003ca name=\"features\"\u003e\u003c/a\u003e\n\n## ✨ Features\n\n| Category                 | Description                                                                 |\n| ------------------------ | --------------------------------------------------------------------------- |\n| **📁 File Handling**     | Upload CSV files, select rows/columns, validate content                     |\n| **🤖 Smart Translation** | AI-based translation (MarianMT via Rust), error highlighting, Redis caching |\n| **🔐 Authentication**    | JWT/OAuth2 login, MongoDB-based session persistence                         |\n| **⬇️ Export**            | Download translated CSV files                                               |\n\n---\n\n\u003ca name=\"screenshots\"\u003e\u003c/a\u003e\n\n## 🖼️ Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/HomePage.png\" width=\"600\"/\u003e\u003cbr/\u003e\n  \u003cem\u003eHome Page\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/SignDialogCut.png\" width=\"600\"/\u003e\u003cbr/\u003e\n  \u003cem\u003eSign Dialog\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/DashboardPage.png\" width=\"600\"/\u003e\u003cbr/\u003e\n  \u003cem\u003eDashboard Page\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/TipsDialogCut.png\" width=\"600\"/\u003e\u003cbr/\u003e\n  \u003cem\u003eTips Dialog\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/TranslationExampleCut.png\" width=\"600\"/\u003e\u003cbr/\u003e\n  \u003cem\u003eTranslation Example\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n\u003ca name=\"tech-stack\"\u003e\u003c/a\u003e\n\n## 🛠️ Tech Stack\n\n| Layer              | Technologies                                        |\n| ------------------ | --------------------------------------------------- |\n| **Frontend**       | Next.js, React, TypeScript, Tailwind CSS, shadcn/ui |\n| **Backend**        | Django, Django REST Framework, Python, JWT, OAuth2  |\n| **AI/ML**          | Rust, PyO3, MarianMT, Hugging Face                  |\n| **Data**           | MongoDB, Redis                                      |\n| **Infrastructure** | Docker, GitHub Actions, Postman                     |\n\n---\n\n\u003ca name=\"architecture\"\u003e\u003c/a\u003e\n\n## 🧱 Architecture\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/images/architecture-diagram.png\" width=\"600\" alt=\"Architecture Diagram\"/\u003e\u003cbr/\u003e\n  \u003cem\u003eSystem architecture of the CSV Translation Tool\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n\u003ca name=\"quick-start\"\u003e\u003c/a\u003e\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n* [Python 3.12](https://www.python.org/downloads/)\n* [Docker](https://www.docker.com/)\n* [Rust](https://www.rust-lang.org/tools/install)\n* [Node.js (16+)](https://nodejs.org/)\n* [npm](https://www.npmjs.com/) (bundled with Node.js)\n\n### Setup Instructions\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/Kerciu/csv-translation-tool.git\n   cd csv-translation-tool\n   ```\n\n2. **Ensure Docker Desktop is running**\n\n3. **Build and run the application**\n\n   ```bash\n   docker-compose build\n   docker-compose up\n   ```\n\n4. **Access the app**\n   Navigate to [http://localhost:3000](http://localhost:3000)\n   Use `test_data/example.csv` to try it out!\n\n---\n\n\u003ca name=\"documentation\"\u003e\u003c/a\u003e\n\n## 📚 Documentation\n\n### 🧠 General Overview\n\n* Project documentation available [here](https://kerciu.github.io/csv-translation-tool/)\n\n### 🧪 API Documentation\n\n* Swagger available at [http://127.0.0.1:8000/swagger/](http://127.0.0.1:8000/swagger/) (when app is running)\n\n### 🛠️ Building with Sphinx (Python)\n\n1. **Install development dependencies**\n\n   ```bash\n   pip install -r requirements-dev.txt\n   ```\n\n2. **Generate HTML docs**\n   From inside `server/docs`:\n\n   **Linux**:\n\n   ```bash\n   make html\n   xdg-open build/html/index.html\n   ```\n\n   **Windows**:\n\n   ```bash\n   .\\make.bat html\n   Start-Process .\\build\\html\\index.html\n   ```\n\n---\n\n\u003ca name=\"linting--formatting\"\u003e\u003c/a\u003e\n\n## 🧹 Linting \u0026 Formatting\n\n### Tools Used\n\n* **Python**: `black`, `isort`, `flake8`\n* **React**: `ESLint`, `Prettier`\n* **Rust**: `clippy`, `rustfmt`\n* **Pre-commit**: For unified code quality enforcement\n\n### How to Run\n\n#### Python + React\n\n```bash\npip install -r requirements-dev.txt\npre-commit install\npre-commit run --all-files\n```\n\n#### Rust\n\n```bash\ncd model\ncargo fmt\ncargo clippy\n```\n\n---\n\n\u003ca name=\"testing\"\u003e\u003c/a\u003e\n\n## 🧪 Testing\n\n### Python\n\n1. Run the app:\n\n   ```bash\n   docker-compose up\n   ```\n\n2. Open shell inside the backend container:\n\n   ```bash\n   docker exec -it translator-server bash\n   ```\n\n3. Run tests:\n\n   ```bash\n   python manage.py test\n   ```\n\n### Rust\n\n1. Navigate to model directory:\n\n   ```bash\n   cd model\n   ```\n\n2. Ensure Redis is running on port `6379`, then:\n\n   ```bash\n   cargo test\n   ```\n\n---\n\n\u003ca name=\"contact\"\u003e\u003c/a\u003e\n\n## 📬 Contact\n\nFor questions, feedback, or collaboration:\n\n**Authors**\n\n* [Kacper Górski](https://www.linkedin.com/in/kacper-gorski-se) • [Kerciu](https://github.com/Kerciu) • [kacper.gorski.contact@gmail.com](mailto:kacper.gorski.contact@gmail.com)\n* [Szymon Kamiński](https://www.linkedin.com/in/szymon-kami%C5%84ski-575230344/) • [RudyKarpus](https://github.com/RudyKarpus) • [szymon.kaminkk@gmail.com](mailto:szymon.kaminkk@gmail.com)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerciu%2Fcsv-translation-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkerciu%2Fcsv-translation-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerciu%2Fcsv-translation-tool/lists"}