# PhotoGallery ![Java](https://img.shields.io/badge/Java-17%2B-orange) ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.x-green) ![Bootstrap](https://img.shields.io/badge/Bootstrap-5-purple) ![License](https://img.shields.io/badge/License-MIT-blue) **PhotoGallery** is a responsive and dynamic web application built with Spring Boot and Thymeleaf. It features a modern masonry-style layout for organizing images of varying sizes, optimized for performance and usability across desktop and mobile devices. Features: - Masonry Grid Layout: Automatically arranges images of different sizes in an aesthetically pleasing masonry-style grid. - Lazy Loading: Images load as you scroll for faster initial load times and better performance. - Fullscreen Modal Viewer: Click an image to view it in fullscreen with previous/next navigation. - Responsive Design: Fully mobile-friendly using Bootstrap 5. - Dynamic Image Loading: Supports adding new images dynamically from the backend without changing frontend code. - Hover Effects: Smooth zoom and shadow effects for a modern look. ## 🌟 Features \ No newline at end of file - **Masonry Grid Layout**: Automatically arranges images of different aspect ratios in an aesthetically pleasing grid. - **Lazy Loading**: Images load asynchronously as you scroll, ensuring fast initial page loads. - **Smart Ingestion**: Scans local directories to automatically compress images, generate thumbnails, and extract metadata (EXIF). - **Fullscreen Viewer**: Immersive modal viewer with navigation controls. - **Search & Filter**: Search photos by title or tags. - **Metadata Extraction**: Automatically extracts and displays camera details, resolution, and file size. - **Responsive Design**: Built with Bootstrap 5 for a seamless mobile experience. ## 🚀 Getting Started ### Prerequisites - Java 17 or higher - Maven (wrapper included) ### Configuration Configure your image paths in `src/main/resources/application.properties`: ```properties photogallery.paths.originals=/path/to/your/images photogallery.paths.thumbnails=/path/to/your/thumbnails ``` ### Running the Application Use the included Maven wrapper to run the application: ```bash # Linux/macOS ./mvnw spring-boot:run # Windows mvnw.cmd spring-boot:run ``` Access the gallery at `http://localhost:8080`. ## 📚 Documentation See documentation.md for architectural details and stack.md for the technology stack.