Baris Yüceses 0f5f2d03d1
Some checks failed
CI / api-test (push) Has been cancelled
CI / web-test (push) Has been cancelled
CI / worker-test (push) Has been cancelled
CI / docker-build (push) Has been cancelled
Add multi-language support (Turkish/English) and UI improvements
Features:
- Add i18n system with Turkish and English translations
- Add language selector in header (TR/EN toggle buttons)
- Persist language preference in localStorage
- Default language set to Turkish

UI Improvements:
- Vintage LED equalizer visualization for audio waveform
- 3D progress bar with metallic rectangular handle
- Copyright disclaimer on upload page
- 6-stem display (bass, drums, guitar, piano, other, vocals)

Technical:
- Update CORS to allow all hosts for tunnel access
- Add STEMS_DIR environment variable support
- Fix Demucs subprocess to use venv python
- Disable unused auth context (using fingerprint tracking)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 01:02:07 +03:00
2026-01-30 22:09:40 +01:00
2026-01-30 22:09:40 +01:00

SoundEx - Audio Source Separation

Version License

Web-based audio source separation application. Upload your audio file and separate it into individual stems: vocals, drums, bass, and other instruments.

Features

  • Upload audio files (MP3, WAV, FLAC, OGG, M4A, AAC, WMA)
  • Separate audio into 4 stems using Demucs ML model
  • Real-time progress tracking via WebSocket
  • Multi-track player with individual volume controls
  • Download stems individually or as ZIP archive
  • JWT-based authentication

Tech Stack

Component Technology
Backend Go 1.22 (Chi router)
Frontend React 18 + TypeScript + Vite + TailwindCSS
Audio Processing Python 3.11 + Demucs + FFmpeg
Database PostgreSQL 16
Queue Redis 7
Container Docker + Kubernetes
Monitoring Prometheus + Grafana

Quick Start

Prerequisites

  • Docker & Docker Compose
  • Make (optional)

Development

# Clone the repository
git clone https://gitea.mynodes.xyz/soundex/soundex.git
cd soundex

# Copy environment file
cp .env.example .env

# Start all services
docker-compose up

# Or use make
make dev

Access

Production Deployment

# Copy and configure production environment
cp .env.production.example .env.production
# Edit .env.production with secure values (JWT_SECRET, DB_PASSWORD, etc.)

# Build production images
make prod

# Deploy
make deploy

# Or manually:
docker-compose -f docker-compose.prod.yml up -d

Kubernetes

# Configure secrets
kubectl create secret generic soundex-secrets \
  --from-literal=jwt-secret=your-secure-secret \
  --from-literal=db-password=your-db-password \
  -n soundex

# Deploy with Kustomize
kubectl apply -k k8s/overlays/production

# Or use the deploy script
make deploy-k8s

Monitoring

# Start Prometheus + Grafana
make monitoring

# Access:
# - Prometheus: http://localhost:9090
# - Grafana: http://localhost:3001 (admin/admin)

Project Structure

soundex/
├── api/                      # Go backend
│   ├── cmd/api/              # Entry point
│   └── internal/             # Internal packages
│       ├── handler/          # HTTP handlers
│       ├── middleware/       # Middleware (auth, cors, etc.)
│       ├── model/            # Data models
│       ├── repository/       # Database layer
│       └── service/          # Business logic
├── web/                      # React frontend
│   ├── src/
│   │   ├── components/       # Reusable components
│   │   ├── contexts/         # React contexts
│   │   ├── pages/            # Page components
│   │   └── services/         # API client
│   └── e2e/                  # Playwright tests
├── worker/                   # Python audio processor
│   ├── src/
│   │   ├── converter.py      # FFmpeg wrapper
│   │   ├── processor.py      # Demucs wrapper
│   │   └── worker.py         # Job processor
│   └── tests/                # Unit tests
├── docker/                   # Dockerfiles
├── k8s/                      # Kubernetes manifests
│   ├── base/                 # Base configs
│   └── overlays/             # Environment overlays
├── monitoring/               # Prometheus/Grafana configs
├── scripts/                  # Deployment scripts
├── docs/                     # Documentation
└── docker-compose.yml        # Development environment

Available Commands

# Development
make help             # Show all commands
make dev              # Start development environment
make dev-detached     # Start in background

# Build
make build            # Build all services
make prod             # Build production images

# Testing
make test             # Run all tests
make test-coverage    # Run with coverage reports

# Deployment
make deploy           # Deploy to production (Docker)
make deploy-k8s       # Deploy to Kubernetes
make monitoring       # Start monitoring stack

# Cleanup
make clean            # Clean build artifacts
make docker-clean     # Remove all containers/volumes

API Endpoints

Method Endpoint Description Auth
GET /api/health Health check No
GET /api/metrics Prometheus metrics No
POST /api/auth/register Register user No
POST /api/auth/login Login No
GET /api/auth/me Current user Yes
POST /api/upload Upload audio file Yes
GET /api/jobs List jobs Yes
GET /api/jobs/:id Get job details Yes
DELETE /api/jobs/:id Delete job Yes
GET /api/ws WebSocket connection Yes

See API Documentation for full details.

Documentation

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE for details.

Changelog

See CHANGELOG.md for version history.

Description
SoundEx - Web tabanlı ses ayrıştırma uygulaması (Go + React)
Readme MIT 27 MiB
Languages
Go 39.2%
TypeScript 35.7%
Python 21.5%
Shell 1.8%
Makefile 1.2%
Other 0.5%