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 preview
src/
βββ 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 up
docker-compose -f docker-compose.prod.yml up
The 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