FlacJacket is a web application that analyzes long audio files (like DJ mixes and live concert recordings) from platforms such as SoundCloud or YouTube. It identifies individual tracks within these recordings using audio fingerprinting technology and allows users to download them in high-quality formats.
- URL input support for SoundCloud and YouTube
- High-quality audio downloading
- Advanced audio fingerprinting and track detection
- Track metadata display
- High-quality track downloads
- Real-time analysis status updates
- Task monitoring dashboard
- Flask (Python web framework)
- SQLAlchemy (Database ORM)
- Celery (Async task processing)
- yt-dlp (YouTube downloading)
- scdl (SoundCloud downloading)
- librosa (Audio processing)
- PostgreSQL (Database)
- Redis (Message broker)
- Flower (Celery monitoring)
- Structlog (Structured logging)
- Next.js 14
- TypeScript
- Tailwind CSS
- Material-UI components
- React Hooks for state management
- Docker and Docker Compose
- Git
- Clone the repository:
git clone https://github.com/yourusername/flacjacket.git
cd flacjacket
- Start the application:
docker compose up -d
The services will be available at:
- Frontend: http://localhost:3003
- Backend API: http://localhost:5001
- Task Monitor: http://localhost:5555
- Create a Python virtual environment:
cd backend
python -m venv venv
source venv/bin/activate # On Windows: .\venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration
- Initialize the database:
flask db upgrade
- Start the Flask development server:
flask run
- Start Celery worker:
celery -A app.celery worker --loglevel=info
- Start Flower monitoring (optional):
celery -A app.celery flower
- Install dependencies:
cd frontend
npm install
- Start the development server:
npm run dev
POST /api/analysis
- Start a new analysis{ "url": "https://soundcloud.com/example/track" }
GET /api/analysis/:id
- Get analysis status and resultsGET /api/analyses
- List all analysesDELETE /api/analysis/:id
- Delete an analysis
GET /api/health
- Check API health status
The application is composed of several Docker containers:
frontend
: Next.js web applicationbackend
: Flask API servercelery_worker
: Async task processor for audio analysispostgres
: PostgreSQL databaseredis
: Message broker for Celeryflower
: Celery task monitoring dashboard
The application includes comprehensive monitoring and logging:
-
Task Monitor Dashboard
- Access at http://localhost:5555
- Real-time task status and progress
- Historical task data and statistics
- Worker status and resource usage
-
Structured Logging
- Detailed task execution logs
- Error tracking and debugging information
- Performance metrics
- Audit trail for all operations
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.