Skip to content

sdrahnea/translation-management-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌐 Translation Management System

A full-stack web application that streamlines every aspect of a professional translation business — from project intake to invoicing.

Build Version Java Spring Hibernate PrimeFaces License: MIT PRs Welcome


📖 Overview

Translation Management System (TMS) gives translation agencies and freelance teams a single platform to manage the complete project lifecycle: from receiving a client order and assigning translators, all the way through delivery, invoicing, and financial reporting.

Who is this for?
Translation agency managers, project coordinators, and business owners who need structured control over their workflows, team, and financials — without relying on spreadsheets.

✨ Key Highlights

Area What you can do
📁 Projects Create, update, archive, and track full project lifecycle with sub-project support
👥 Translators Manage translator profiles, assignments, payments, and applicants
🏢 Clients Maintain a full client directory with contact and billing info
📦 Archive Safely archive completed projects and restore them on demand
📊 Statistics Financial reporting across all projects and time periods
🧾 Invoices Track all invoiced projects in one dedicated view
📧 Email Audit Review a log of all failed notification emails
⚙️ Settings Admin-controlled system variables: countries, currencies, translation areas, and more
🗄️ Data Import Bulk-import clients or translators from Excel / CSV files
🔐 Users & Roles Four access levels: admin, manager, translator, client

🏗️ Architecture

┌─────────────────────────────────────────────────────────┐
│                     Browser / Client                     │
│              (JSF / PrimeFaces / XHTML views)            │
└───────────────────────────┬─────────────────────────────┘
                            │ HTTP
┌───────────────────────────▼─────────────────────────────┐
│                  Apache Tomcat (WAR)                     │
│  ┌─────────────────────────────────────────────────┐    │
│  │              Spring MVC / JSF Layer              │    │
│  │   Managed Beans  │  Spring Security (Auth/Authz) │    │
│  └──────────────────┬──────────────────────────────┘    │
│  ┌──────────────────▼──────────────────────────────┐    │
│  │              Service Layer (Spring)              │    │
│  │       Business Logic  │  Email Notifications    │    │
│  └──────────────────┬──────────────────────────────┘    │
│  ┌──────────────────▼──────────────────────────────┐    │
│  │           Data Access Layer (Hibernate)          │    │
│  │    JPA Entities  │  DAO Impl  │  EHCache L2      │    │
│  └──────────────────┬──────────────────────────────┘    │
└─────────────────────┼───────────────────────────────────┘
                      │ JDBC
          ┌───────────▼───────────┐
          │   Database            │
          │   H2 · MySQL · Postgres│
          └───────────────────────┘

📸 Screenshots

Project List
Project List
Project Page
Project Page
Project Details
Project Details
Client Page
Client Page
Translator Page
Translator Page
Archive
Archive
Data Import
Data Import
Invoices
Invoices
Statistics
Statistics
Users
Users
Settings
Settings
Email Audit
Email Audit

📋 Table of Contents


🚀 Getting Started

Clone the repository:

git clone https://github.com/sdrahnea/translation-management-system.git
cd translation-management-system

Prerequisites

Tool Version
Java (JDK) 1.8+
Apache Maven 3.x
Apache Tomcat Optional — embedded Spring Boot server is the default runtime
Database H2 (dev) · MySQL 5.7+ · PostgreSQL 10+

Database Setup

Choose one of the supported databases:

Option 1 — H2 (zero-config, recommended for development)

No installation required. Configure the connection URL in application.properties:

In-memory H2
spring.datasource.url=jdbc:h2:mem:tms
spring.datasource.username=sa
spring.datasource.password=
File-based H2
spring.datasource.url=jdbc:h2:file:./data/tms
spring.datasource.username=sa
spring.datasource.password=

Option 2 — MySQL

CREATE DATABASE tms;

MySQL 8.0.4+ note: Run the following to enable native password authentication:

ALTER USER '${USER}'@'localhost' IDENTIFIED WITH mysql_native_password BY '${PASSWORD}';

Option 3 — PostgreSQL

# Create a superuser (if needed)
createuser -U postgres -s tms_user

# Restore from a backup (optional)
pg_restore -d tms < /path/to/backup.sql

Build & Install

On first startup, Hibernate auto-creates all tables and seeds reference data (project statuses, translation statuses, payment methods, education degrees, etc.).

mvn clean package

A successful build produces an executable Spring Boot archive:

[INFO] Building war: target/translation-management-system-2.1.0-SNAPSHOT.war
[INFO] BUILD SUCCESS

You can then run the application with Spring Boot directly:

java -jar target/translation-management-system-2.1.0-SNAPSHOT.war

🖥️ Deployment

The application runs as a Spring Boot web application with an embedded server. The default HTTP port is 8081 and the application context path is /tms.

Option 1 — Run from source

mvn spring-boot:run

Option 2 — Run the packaged archive

mvn clean package
java -jar target/translation-management-system-2.1.0-SNAPSHOT.war

Open the application

Once the application has started, open one of the following URLs in your browser:

http://localhost:8081/tms/
http://localhost:8081/tms/faces/login.xhtml

Default credentials:

Username Password
admin 123

⚠️ Change the default password immediately after the first login in a production environment.

ℹ️ External Tomcat deployment is no longer the primary runtime path documented here; prefer the Spring Boot commands above.


📤 Data Import API

TMS supports bulk import of clients and translators via Excel (.xlsx) or CSV files through the Database page (admin only).

Upload Request

POST /mytemplate/database.xhtml
Content-Type: multipart/form-data

file=@translators.xlsx
importType=TRANSLATOR

Expected File Format (CSV example)

firstName,lastName,email,phone,country,translationArea,languagePair
Jane,Doe,jane.doe@example.com,+1-555-0100,US,Legal,EN-FR
John,Smith,john.smith@example.com,+44-20-7946-0958,GB,Technical,EN-DE

Response (success)

{
  "status": "success",
  "imported": 2,
  "skipped": 0,
  "errors": []
}

Response (partial failure)

{
  "status": "partial",
  "imported": 1,
  "skipped": 1,
  "errors": [
    {
      "row": 2,
      "field": "email",
      "message": "Duplicate email address: john.smith@example.com"
    }
  ]
}

The same format applies for client imports — use importType=CLIENT.


🛠️ Built With

Technology Purpose
Java 1.8 Core application language
Spring Framework 4.x Dependency injection, MVC, transactions
Spring Security Authentication & role-based access control
Hibernate 5.x ORM / data persistence (JPA)
PrimeFaces Rich JSF UI component library
EHCache Second-level Hibernate cache
Apache Tomcat Java EE web container
MySQL Primary production database
H2 Embedded database for development
PostgreSQL Alternative production database
Maven Build & dependency management

🤝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Commit your changes: git commit -m 'Add my feature'
  4. Push to the branch: git push origin feature/my-feature
  5. Open a Pull Request

Please read CONTRIBUTING.md for the full code of conduct and contribution guidelines.


🔖 Versioning

This project uses SemVer for versioning. See CHANGELOG.md for release history.


👤 Authors

Sergiu DrahneaInitial work
LinkedIn


📄 License

This project is licensed under the MIT License — see the license.md file for details.


💙 Support & Donation

If this project helped you, consider supporting its development:

Method Details
PayPal Any amount is welcome 🙏
EGLD erd1t3t5m8v7862asdh48nq820shsmlmuw9jpm87qw25cvch7djpkapskgq4es
TRX / BTT TRe8xSkGqpS73Nhk6bnvW34aiJoRTmZs8N
HOT / VET 0x1ebfc62e2510f0a0558568223d1d101d0cf074b2
TROY / PHB bnb136ns6lfw4zs5hg4n85vdthaad7hq5m4gtkgf23 · Memo: 100079140

Made with ❤️ by Sergiu Drahnea

About

Translation Management System gives translation agencies and freelance teams a single platform to manage the complete project lifecycle: from receiving a client order and assigning translators, all the way through delivery, invoicing, and financial reporting.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

 
 
 

Contributors