@@ -79,6 +79,10 @@ tests/
7979- ** images** — photo_id → full_webp BLOB + preview_webp BLOB
8080- Created with ` PRAGMA page_size = 65536 ` for optimal BLOB streaming
8181
82+ ### thumbnails/ (Static project thumbnails)
83+ - ` {slug}.webp ` — One thumbnail per project, served via ` /api/v1/thumbnails/{slug}.webp `
84+ - Used by the catalog in ebgeo_web to display project preview images
85+
8286### SQLite Optimizations
8387- WAL mode on all connections
8488- 64 MB cache for index.db, 32 MB per project DB
@@ -99,8 +103,9 @@ tests/
99103| Endpoint | Description | Cache |
100104| ----------| -------------| -------|
101105| ` /health ` | Service status + project count | None |
102- | ` /api/v1/projects ` | List all projects | 1h |
106+ | ` /api/v1/projects ` | List all projects (includes ` previewThumbnail ` URL) | 1h |
103107| ` /api/v1/projects/:slug ` | Single project details | 1h |
108+ | ` /api/v1/thumbnails/:slug.webp ` | Static project thumbnail image (WebP) | Static |
104109| ` /api/v1/photos/:uuid ` | Photo metadata + targets (hidden targets filtered unless ` ?include_hidden=true ` ) | no-cache (revalidate) |
105110| ` /api/v1/photos/:uuid/image?quality=full\|preview ` | WebP image stream | 1yr immutable + ETag |
106111| ` /api/v1/photos/by-name/:originalName ` | Backward compat lookup | 1h |
@@ -158,7 +163,7 @@ Environment variables (with defaults):
158163| ----------| ---------| -------------|
159164| ` PORT ` | 8081 | HTTP server port |
160165| ` HOST ` | 0.0.0.0 | Bind address |
161- | ` STREETVIEW_DATA_DIR ` | ./data | Root data dir (index.db + projects/) |
166+ | ` STREETVIEW_DATA_DIR ` | ./data | Root data dir (index.db + projects/ + thumbnails/ ) |
162167| ` LOG_LEVEL ` | info | Fastify logger level |
163168| ` CORS_ORIGIN ` | * | CORS allowed origins |
164169
@@ -171,6 +176,7 @@ The parent app (`../ebgeo_web`) integrates via REST API calls:
171176- ** ` src/js/store/streetview360.operations.js ` ** — CRUD for orientations/markers
172177- ** ` src/js/features_tab/streetview360-section.component.js ` ** — Feature list section
173178- ** ` src/js/street_view_tool/streetview_markers.js ` ** — Clustered map markers (PMTiles)
179+ - ** ` src/js/catalog/catalog.service.js ` ** — Catalog aggregation (builds absolute thumbnail URLs from ` serviceUrl ` + ` previewThumbnail ` )
174180
175181Events: ` STREETVIEW_360_OPENED ` , ` STREETVIEW_360_CLOSED ` , ` STREETVIEW_360_PHOTO_CHANGED ` , ` ORIENTATION_360_SAVED ` , ` ORIENTATION_360_CLEARED ` , ` MARKER_360_CLICKED ` , ` MARKERS_360_CHANGED `
176182
@@ -329,9 +335,4 @@ docker-compose up -d
329335
330336# Local development
331337npm run dev
332- ```
333-
334- ## Projects
335-
336- 15 military sites in southern Brazil:
337- Alegrete, Parque Osorio, Uruguaiana, 3o RCMec, CIST, 27o GAC, CI Guarnicao Ijui, EASA, 29o GACap, CI Cruz Alta, SantAna do Livramento, Tubarao, Blumenau, CI General Calazans, Ponta Grossa
338+ ```
0 commit comments