A web application for batch photo processing and visual analysis, built with ASP.NET Core MVC.
The app helps photographers and travelers organize photos by EXIF data, optimize image size, and visualize shooting locations on an interactive map.
PhotoLab Web App allows users to upload large photo sets (ZIP or individual images), automatically process them, and generate visual reports based on metadata such as creation time and GPS coordinates.
The application is deployed on a self-hosted home server and is accessible within a local network.
- Batch photo upload (ZIP archive or individual JPEG/JPG images)
- Automatic photo renaming based on EXIF date and time
- Image resizing and JPEG quality optimization
- Support for large uploads (ZIP archives up to 5 GB)
- Progress tracking during upload and processing
- Interactive map view with photo GPS locations
- Optional route visualization between photo points
- Distance calculation between shooting locations
- Photo preview directly from map markers
- Printable visual report
- PDF export of photo report with thumbnails and map data
- Temporary file processing with automatic cleanup
Rename & Resize Photos
- Upload photos or ZIP archive
- Extract EXIF metadata
- Preview processed file list
- Choose output filename format
- Resize images while keeping aspect ratio
- Optimize JPEG quality
- Download processed photos as ZIP archive
Photos on Map
- Extract GPS coordinates from EXIF data
- Display photo locations on interactive map (OpenStreetMap)
- Show photo preview on marker click
- Optionally connect points to visualize movement route
- Calculate total route distance
- Generate printable report
- Export map-based photo report to PDF
Backend / Web
- ASP.NET Core MVC
- Entity Framework Core
- EXIF metadata processing
- Image processing (resize, compression)
Frontend
- Razor Views (MVC)
- Bootstrap
- Interactive maps (OpenStreetMap / MapTiler)
Infrastructure
- Linux server deployment (local network access)
- Nginx reverse proxy
- Temporary file storage with automatic cleanup
PhotoLabWebApp/
├─ Areas/
│ └─ Identity/ # Authentication UI (Admin/User)
│
├─ Controllers/
│ ├─ HomeController.cs
│ ├─ RenamePhotosController.cs # Batch rename & resize logic
│ ├─ PhotoGpsMapController.cs # Map visualization & reports
│ └─ ApplicationUsersController.cs
│
├─ Data/
│ ├─ ApplicationDbContext.cs
│ └─ DbInitializer.cs
│
├─ Interfaces/
│ ├─ IRepository.cs
│ └─ IImageService.cs
│
├─ Services/
│ ├─ ImageService.cs # Resize, compression, EXIF handling
│ ├─ PhotoAnalyzerService.cs # GPS & metadata analysis
│ ├─ TmpFolderCleanupService.cs # Temporary file cleanup
│ └─ UsageStatsService.cs
│
├─ Models/
│ ├─ ApplicationUser.cs
│ ├─ RenamePhotosViewModel.cs
│ └─ ErrorViewModel.cs
│
├─ ViewModels/
│ └─ RenamePhotosViewModel.cs
│
├─ Views/
│ ├─ Home/
│ ├─ RenamePhotos/
│ ├─ PhotoGpsMap/
│ └─ Shared/
│ ├─ _Layout.cshtml
│ ├─ _LoginPartial.cshtml
│ └─ Error.cshtml
│
├─ wwwroot/
│ ├─ css/
│ ├─ js/
│ ├─ lib/ # Bootstrap, jQuery
│ └─ image/
│
├─ appsettings.json
├─ Program.cs
└─ PhotoLabWebApp.csproj
This project is complete and fully functional application (demo / internal tool).
It demonstrates real-world image processing workflows, handling of large uploads, EXIF metadata analysis, interactive map-based visualization, and deployment on a self-hosted Linux environment.












