A modern, web-based metadata extraction tool built with React, TypeScript, and Tailwind CSS. Extract and visualize image metadata with advanced coordinate processing and beautiful, responsive design.
- 🔍 Comprehensive Metadata Extraction: Support for JPEG, TIFF, and other image formats
- 🗺️ Advanced Location Processing: Convert DMS coordinates to decimal with map integration
- 📱 Responsive Design: Beautiful UI that works on all devices
- ⚡ Real-time Processing: Client-side processing with no server uploads required
- 🎨 Modern Interface: Gradient-based design with smooth animations
- 🔒 Privacy-First: All processing happens locally in your browser
- Node.js 18+
- npm or yarn package manager
- Modern web browser with File API support
-
Clone the repository
git clone https://github.com/yourusername/image-metadata-parser.git cd image-metadata-parser -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173
npm run build
npm run previewsrc/
├── components/ # React components
│ ├── DataDisplay.tsx # Metadata visualization
│ ├── ErrorState.tsx # Error handling UI
│ ├── FileUpload.tsx # File upload interface
│ ├── LocationDisplay.tsx # Location coordinate display
│ ├── ImagePreview.tsx # Image preview component
│ ├── LoadingState.tsx # Loading indicators
│ └── NavigationMenu.tsx # Section navigation
├── services/ # Business logic
│ └── MetadataService.ts # Metadata processing service
├── App.tsx # Main application component
├── main.tsx # Application entry point
└── index.css # Global styles
- Purpose: Main application orchestrator
- Responsibilities: State management, file handling, error management
- Key Features: File upload coordination, metadata processing, UI state control
- Purpose: Metadata extraction and processing engine
- Responsibilities: Coordinate conversion, data cleaning, location processing
- Key Features: DMS to decimal conversion, hemisphere detection, data formatting
- Purpose: Dual-column metadata visualization
- Responsibilities: Cleaned data display, raw JSON presentation
- Key Features: Icon categorization, scrollable containers, special location handling
- Purpose: Enhanced coordinate visualization
- Responsibilities: Coordinate formatting, map integration
- Key Features: Multiple coordinate formats, clickable map links, embedded maps
- Purpose: File upload interface with drag-and-drop
- Responsibilities: File selection, validation, upload feedback
- Key Features: Visual drop zones, file type restrictions, loading states
- Purpose: Responsive image display
- Features: Aspect ratio preservation, size constraints, file name display
- Purpose: Smooth scrolling navigation
- Features: Section jumping, conditional rendering, responsive design
- Purpose: User feedback during processing
- Features: Animated indicators, clear messaging, error recovery
- React 18.3.1: Modern React with hooks and concurrent features
- TypeScript 5.5.3: Full type safety and enhanced developer experience
- Vite 5.4.2: Fast build tool with HMR and optimized bundling
- Tailwind CSS 3.4.1: Utility-first CSS framework
- Lucide React 0.344.0: Beautiful, customizable icons
- PostCSS: CSS processing with Autoprefixer
- Metadata Reader 4.31.1: Comprehensive metadata extraction
- React DOM 18.3.1: DOM rendering and manipulation
- Code Quality Tools 9.9.1: Code linting with TypeScript support
- TypeScript Linting: Enhanced linting for TypeScript
- React Hooks ESLint: React-specific linting rules
vite.config.ts: Vite build configurationtsconfig.json: TypeScript compiler optionstailwind.config.js: Tailwind CSS customizationpostcss.config.js: PostCSS plugin configuration
eslint.config.js: Code quality rules and plugins.gitignore: Git ignore patterns
- File Upload: User selects image file via drag-and-drop or file picker
- Validation: File type validation and size checks
- Metadata Extraction: Raw metadata extraction using reader library
- Data Processing: Coordinate conversion and data cleaning
- Visualization: Dual display of cleaned and raw data
- Location Enhancement: Map integration for location data
The application handles complex coordinate conversion:
// DMS to Decimal Conversion
decimal = degrees + (minutes/60) + (seconds/3600)
// Hemisphere Correction
if (hemisphere === 'S' || hemisphere === 'W') {
coordinate = -Math.abs(coordinate)
}docker-compose -f docker-compose.dev.yml updocker-compose -f docker-compose.prod.yml upThe project uses standard package management. Key scripts:
npm run dev: Start development servernpm run build: Create production buildnpm run preview: Preview production buildnpm run lint: Run code quality checks
- Client-Side Processing: No server uploads required
- Memory Management: Automatic cleanup of object URLs
- Input Validation: File type and size restrictions
- XSS Prevention: Binary data filtering and sanitization
- Modern Browsers: Latest versions of major browsers
- Required APIs: File API, ArrayBuffer, Object URL
- Responsive Design: Mobile and desktop optimized
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript strict mode
- Use Tailwind CSS for styling
- Maintain component documentation
- Add comprehensive comments
- Follow SOLID principles
This project is licensed under the MIT License - see the LICENSE file for details.
- Metadata Reader: Comprehensive metadata extraction library
- Tailwind CSS: Utility-first CSS framework
- Icon Library: Beautiful icon collection
- React Team: Amazing frontend framework
- Vite Team: Lightning-fast build tool
For support, please open an issue in the repository.
Built with ❤️ using React, TypeScript, and modern web technologies
