# Dev Container — Familienarchiv

## Overview

VS Code Dev Container configuration for a pre-configured development environment. Includes Java 21, Maven, and Node.js 24 — everything needed to work on both backend and frontend.

## Configuration

File: `.devcontainer/devcontainer.json`

### Included Features

| Feature | Version | Purpose |
|---|---|---|
| Java | 21 | Spring Boot backend |
| Maven | bundled with Java feature | Build tool |
| Node.js | 24 | SvelteKit frontend |

### VS Code Extensions (Auto-installed)

| Extension | Purpose |
|---|---|
| `vscjava.vscode-java-pack` | Java language support, debugging, testing |
| `vmware.vscode-spring-boot` | Spring Boot tooling |
| `gabrielbb.vscode-lombok` | Lombok annotation support |
| `humao.rest-client` | HTTP request files (for `backend/api_tests/`) |

### Ports

- `8080` forwarded to host — access backend at `http://localhost:8080`

### User

Runs as `vscode` user (not root) for security.

## How to Use

### Prerequisites

- VS Code with the **Dev Containers** extension installed
- Docker running locally

### Open in Dev Container

1. Open the project in VS Code
2. Press `F1` → type "Dev Containers: Reopen in Container"
3. VS Code will:
   - Build the container using the root `docker-compose.yml`
   - Install Java 21, Maven, and Node 24
   - Install the listed extensions
   - Mount the workspace folder

### Working Inside the Container

Once inside the container, you have access to both stacks:

```bash
# Backend
cd backend
./mvnw spring-boot:run

# Frontend (in a new terminal)
cd frontend
npm install
npm run dev
```

The container reuses the `docker-compose.yml` services, so PostgreSQL and MinIO are available automatically.

### Forwarding Frontend Port

The devcontainer config only forwards port 8080 by default. To access the frontend dev server (port 5173 or 3000), either:

1. Add `5173` to `forwardPorts` in `devcontainer.json`, or
2. Use the VS Code "Ports" panel to forward it dynamically

## Limitations

- The devcontainer attaches to the `backend` service from `docker-compose.yml`, so it inherits those environment variables
- OCR service and other containers should be started separately via `docker-compose up -d`
- GPU passthrough for OCR training is not configured

## Customization

To add more tools or extensions, edit `.devcontainer/devcontainer.json`:

```json
{
  "features": {
    "ghcr.io/devcontainers/features/python:1": {
      "version": "3.11"
    }
  },
  "forwardPorts": [8080, 5173, 3000]
}
```
