How airencracken/imvault works
Imvault is a self-hosted, server-rendered media library and clubhouse. Members browse and organize a library, while the HTTP server handles sign-in and uploads; uploads are classified, processed, and stored with associated metadata. The product also includes albums, tags, favorites, moderation, account/security features, and operator maintenance such as backup and restore. The graph preserves these documented capabilities, but some subsystem links are omitted because their implementation was not sampled; edges cite only visible wiring or README statements.
Main entry points: server.go HTTP server · handlers_upload.go Upload handling · media.go Media processing · main.go CLI commands
Components 26
Server runtime
- HTTP server
internal/web/server.go - Browser enhancements
internal/web/static/js/app.js
Media pipeline
- Upload handling
internal/web/handlers_upload.go - Media processing
internal/media/media.go - Video processing
internal/media/video.go - Metadata handling
internal/metadata/details.go - Metadata stripping
internal/metadata/strip.go - EXIF writing
internal/exifwrite/exifwrite.go
Library features
- Library browsing
internal/web/handlers_files.go - Albums and tags
internal/web/api_albums.go - Favorites
internal/web/handlers_favorites.go - Bulk organization
internal/web/bulk_library.go - Moderation
internal/web/handlers_moderation.go
Identity and access
- Web authentication
internal/web/handlers_auth.go - OpenID Connect
internal/oidc/oidc.go - Two-factor auth
internal/web/handlers_twofactor.go - Community sign-in
internal/suite/auth.go - Mail delivery
internal/web/mailqueue.go
Storage and operations
- CLI commands
cmd/imvault/main.go - SQLite database
internal/db/db.go - Persistence layer
internal/store/files.go - Object storage
internal/storage/disk.go - S3 backend
internal/storage/s3.go - Backup and restore
internal/maintenance/backup.go
Other components
- Member / visitor
- Operator
Connections 27
- Member / visitor → HTTP server: uses
README.md - Operator → CLI commands: runs
README.md - CLI commands → SQLite database: opens
cmd/imvault/main.go - CLI commands → HTTP server: constructs
cmd/imvault/main.go - HTTP server → Web authentication: routes
internal/web/server.go - Member / visitor → Upload handling: submits media
README.md - Upload handling → Media processing: classifies
internal/web/handlers_upload.go - Upload handling → Persistence layer: records files
internal/web/handlers_upload.go - Upload handling → Object storage: deletes objects
internal/web/handlers_upload.go - Upload handling → Metadata handling: extracts details
- Media processing → Video processing: handles clips
README.md - Media processing → Metadata stripping: strips metadata
- Media processing → EXIF writing: writes metadata
- Member / visitor → Library browsing: browses
README.md - Member / visitor → Albums and tags: organizes
README.md - Member / visitor → Favorites: favorites media
README.md - Member / visitor → Bulk organization: organizes in bulk
README.md - Member / visitor → Moderation: reports content
README.md - Browser enhancements → HTTP server: enhances pages
README.md - HTTP server → OpenID Connect: supports sign-in
README.md - HTTP server → Two-factor auth: handles second factor
internal/web/server.go - HTTP server → Community sign-in: offers community sign-in
- HTTP server → Mail delivery: queues mail
README.md - Persistence layer → SQLite database: persists records
- Object storage → S3 backend: selects optionally
README.md - Operator → Backup and restore: backs up or restores
README.md - Backup and restore → Object storage: migrates objects