# 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.
