Simplify and automate audio metadata management for your music collection.
Music collectors with large audio libraries face a frustrating problem: inconsistent, missing, or incorrect metadata tags across hundreds or thousands of audio files. Manual editing is tedious and time-consuming. There's no easy way to batch-edit metadata, standardize formatting across a collection, or identify inconsistencies without clicking through files one by one. Hi-Res Meta Cleaner solves this by providing a web-based platform where users can upload audio files, view and edit metadata in a unified interface, apply batch edits across multiple tracks, and export their cleaned collection with updated tags.
- Music collectors with large personal libraries who want consistent tagging
- Archivists digitizing and organizing audio collections
- Anyone frustrated by the tedious process of manually fixing metadata tags
Core functionality that establishes the basic workflow:
- File Upload System: Users can upload audio files individually or in batches
- Metadata Extraction: Automatically read and display existing metadata tags
- Collection View: Display all uploaded files in a sortable table showing metadata fields
- Individual Field Edit: Click any field to edit metadata for a single track
- Export Functionality: Export modified audio files with updated tags
- User Authentication: Simple login system to keep collections private per user
- Make Collection View table sortable
- Dupo Checking
- Nav Bar with links to Upload, View Collection, Export
- Batch Edit: Select multiple tracks and edit shared fields
- Automated Cleanup: Trim whitespace, standardize capitalization, remove special characters or normalize formatting
- Duplicate Detection: Identify potential duplicate tracks
- External API Integration: Fetch missing metadata from external sources
- Album Art Management: Upload, edit, or fetch album artwork for audio files
Users
- Stores user account information
- Fields:
user_id(PK),username,email,password_hash,created_atAudioFiles - Represents each uploaded audio file with its original state
- Fields:
file_id(PK),user_id(FK),original_filename,file_path,file_size,duration,format,upload_dateMetadata - Stores the current metadata for each audio file
- Fields:
metadata_id(PK),file_id(FK),title,artist,album,year,genre,track_number
- Users → AudioFiles: One-to-Many (a user can upload many audio files)
- AudioFiles → Metadata: One-to-One (each file has one set of metadata)
Upload and View Collection
- User logs in and uploads audio files
- System extracts metadata and displays it in a sortable table Edit Individual
- User clicks any metadata field to edit inline
- Types new value and saves
- Change is immediately reflected Batch Edit (Extended Feature)
- User selects multiple tracks via checkboxes
- Opens batch edit modal and modifies shared fields
- Applies changes to all selected tracks Export
- User exports cleaned audio files
Single Page Application - Main View
+----------------------------------------------------------+
| [Export] [Login/Logout]|
+----------------------------------------------------------+
| UPLOAD SECTION |
| +----------------------------------------------------+ |
| | | |
| | Drag & Drop Files Here or Click to Browse | |
| | | |
| | | |
| +----------------------------------------------------+ |
+----------------------------------------------------------+
| YOUR COLLECTION |
+----------------------------------------------------------+
| Search: [___________] Filter: [All ▼] |
+----------------------------------------------------------+
| [ ] | Title | Artist | Album | Year |☐
|-----|--------------|-------------|-------------|----------|
| [ ] | Track One | Artist A | Album X | 2020 |☐
| [ ] | Track Two | Artist A | Album X | 2020 |☐
| [ ] | Track Three | Artist B | Album Y | 2019 |☐
+-----------
### Running Cypress Tests
# 1. cd into front-end
# 2. In a sperate console, cd and start backend
# 3. In another console, run either `npx cypress open`/`npm run cy:open`, `npx cypress run`/`npm run cy:run`, or `npm run test:e2e`
`npx cypress open`/`npm run cy:open`: Opens interactive GUI
`npx cypress run`/`npm run cy:run`: Runs headlessly (CI mode) with console output
`npm run test:e2e`: Starts Next.js + runs tests (back-end must already be running) with console output