A comprehensive translation booking and video conferencing platform connecting companies with professional translators. Built with Next.js, FastAPI, PostgreSQL, and Jitsi Meet.
- π Multi-language Support: Spanish, French, and German translators
- π Calendar-Based Booking: Interactive calendar for scheduling translation sessions
- π₯ Role-Based Access: Translators, Employees, Company Admins, and System Admins
- π₯ Integrated Video Conferencing: Self-hosted Jitsi Meet for secure video calls
- β±οΈ Flexible Durations: 30-minute or 1-hour translation sessions
- π Secure Authentication: JWT-based auth with role management
- π Booking Management: Create, view, update, and cancel bookings
- π« Conflict Prevention: Automatic double-booking detection
- Frontend: Next.js 14, React, TypeScript, Zustand, Tailwind CSS
- Backend: FastAPI, Python, SQLAlchemy
- Database: PostgreSQL
- Real-time: Jitsi Meet API, WebSockets
For detailed documentation, see the /docs directory:
- Local Setup Guide - Complete guide for running locally (portfolio/demo)
- Translation Platform Guide - Complete platform overview
- Jitsi Setup - Video conferencing configuration
You can run this application in two ways:
- Using Docker (Recommended) - Easiest way to get started
- Manual Setup - For development
- Docker 20.10+
- Docker Compose 2.0+
# Make the stack script executable (already done)
chmod +x stack.sh
# Start the entire stack
./stack.sh startThat's it! The application will be available at:
- Frontend: http://localhost:3000
- Translator Registration: http://localhost:3000/register/translator
- Calendar: http://localhost:3000/calendar
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Jitsi Meet: http://localhost:8443
./stack.sh start # Start all services
./stack.sh stop # Stop all services
./stack.sh restart # Restart all services
./stack.sh status # Show status of all services
./stack.sh logs # Show logs for all services
./stack.sh logs backend # Show logs for specific service
./stack.sh build # Rebuild Docker images
./stack.sh clean # Remove all containers and volumes
./stack.sh backup # Backup database
./stack.sh restore <file> # Restore database from backup
./stack.sh exec backend bash # Execute command in service- Node.js 18+ and npm
- Python 3.11+
- PostgreSQL 15+
Using Docker:
cd database
docker-compose up -dOr install PostgreSQL manually and create the database:
createdb callcenter
psql callcenter < database/init.sqlcd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy environment file
cp .env.example .env
# Update .env with your database credentials
# DATABASE_URL=postgresql://callcenter:callcenter123@localhost:5432/callcenter
# Run the server
uvicorn app.main:app --reloadThe API will be available at http://localhost:8000
cd frontend
# Install dependencies
npm install
# Copy environment file
cp .env.local.example .env.local
# Run the development server
npm run devThe frontend will be available at http://localhost:3000
- Register at http://localhost:3000/register/translator
- Select your languages (Spanish, French, German)
- Set your hourly rate (optional)
- Wait for booking confirmations from companies
- Contact admin to set up your company account
- Register employees under your company
- Book translation sessions via the calendar interface
- Choose duration (30 minutes or 1 hour)
- Join video meetings when the session starts
For testing, use these credentials:
- Translator: [email protected] / password123
- Employee: [email protected] / password123
- Admin: [email protected] / password123
Or register a new translator account at http://localhost:3000/register/translator
interpretation_platform/
βββ frontend/ # Next.js frontend application
β βββ src/
β β βββ app/ # Next.js app router pages
β β βββ components/# React components
β β βββ lib/ # Utilities (API, WebSocket)
β β βββ store/ # Zustand state management
β β βββ types/ # TypeScript type definitions
β βββ package.json
β
βββ backend/ # FastAPI backend application
β βββ app/
β β βββ api/ # API endpoints
β β βββ core/ # Core functionality (auth, config)
β β βββ db/ # Database session
β β βββ models/ # SQLAlchemy models
β β βββ schemas/ # Pydantic schemas
β β βββ services/ # Business logic
β βββ requirements.txt
β
βββ database/ # Database setup
βββ docker-compose.yml
βββ init.sql
POST /auth/login- User loginGET /auth/me- Get current user
POST /translators/register- Register new translatorGET /translators/- List available translatorsPUT /translators/{id}/availability- Update translator availability
GET /bookings/- Get all bookings (filtered by user role)POST /bookings/- Create new bookingGET /bookings/{id}- Get booking detailsPUT /bookings/{id}- Update bookingDELETE /bookings/{id}- Cancel booking
POST /companies/- Create new companyPOST /companies/employees/register- Register employee
For complete API documentation, visit http://localhost:8000/docs after starting the stack.
Backend:
cd backend
pytestFrontend:
cd frontend
npm testBackend:
cd backend
# The FastAPI app is production-ready
uvicorn app.main:app --host 0.0.0.0 --port 8000Frontend:
cd frontend
npm run build
npm startApache License 2.0
Copyright 2025 Translation Platform Contributors
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.