How open-noodle/gallery works
Noodle Gallery is a self-hosted photo and video library, based on Immich, with web/mobile clients, a server API, media storage, and machine-learning capabilities. A typical flow starts with a user uploading media through a client; the server handles asset operations and stores media using its storage layer. The README also documents distinct discovery, collaboration, and media-management features. The sampled sources establish storage behavior and a small amount of client/server behavior; most feature links below indicate API capability, not inspected internal call chains.
Main entry points: app.service.ts Web client · storage.core.ts Storage core · asset-file.controller.ts Upload API · main.py ML service
Components 24
Clients
- Web client
web/src/lib/services/app.service.ts - Mobile client
mobile/android/app/src/main/kotlin/app/alextran/immich/MainActivity.kt - CLI client
packages/cli/src/index.ts
Media lifecycle
- Asset API
server/src/controllers/asset.controller.ts - Upload API
server/src/controllers/asset-file.controller.ts - Storage core
server/src/cores/storage.core.ts - Disk storage
server/src/backends/disk-storage.backend.ts - S3 storage
server/src/backends/s3-storage.backend.ts - Metadata database
server/src/database.ts - Edits and trimming
server/src/controllers/asset.controller.ts - Storage migration
server/src/controllers/storage-migration.controller.ts
Search and discovery
- Search and filters
server/src/controllers/search.controller.ts - Timeline and map
server/src/controllers/timeline.controller.ts - Memories
server/src/controllers/memory.controller.ts
Sharing and identity
- Shared Spaces
server/src/controllers/shared-space.controller.ts - Albums and links
server/src/controllers/album.controller.ts - People and faces
server/src/controllers/person.controller.ts
AI and administration
- ML service
machine-learning/immich_ml/main.py - Face recognition
machine-learning/immich_ml/models/facial_recognition/recognition.py - Pet detection
machine-learning/immich_ml/models/pet_detection/detection.py - OCR models
machine-learning/immich_ml/models/ocr/recognition.py - Classification
server/src/controllers/classification.controller.ts - Server administration
server/src/controllers/server.controller.ts
Other components
- Library user
Connections 24
- Library user → Web client: uses
- Library user → Mobile client: uses
- Library user → CLI client: uses
- Web client → Upload API: uploads media
- Mobile client → Upload API: uploads media
- CLI client → Upload API: uploads media
- Upload API → Storage core: stores files
- Storage core → Disk storage: uses backend
- Storage core → S3 storage: uses backend
- Storage core → Metadata database: updates paths
- Web client → Asset API: manages assets
- Web client → Edits and trimming: edits media
- Web client → Search and filters: searches
- Web client → Timeline and map: browses
- Web client → Memories: views memories
- Web client → Shared Spaces: collaborates
- Web client → Albums and links: manages albums
- Web client → People and faces: manages people
- Web client → Classification: reviews categories
- Web client → Server administration: administers server
- Web client → Storage migration: starts migration
- ML service → Face recognition: runs recognition
- ML service → Pet detection: runs detection
- ML service → OCR models: runs OCR