Describe the feature
Continuation of #802 – Add Context Menu (Right-Click) Actions for Images
Backend:
Has no API to delete images
Does not remove files from disk
Does not clean up database records or thumbnails
This results in an incomplete and misleading UX.
Problem
There is no end-to-end flow for deleting an image:
No backend endpoint for deletion
No filesystem cleanup
No database cleanup
Frontend delete button not wired to any API
Deleted images can reappear after refresh or restart
Goal
Implement complete image deletion support, including:
Backend API to delete images safely
Frontend wiring to trigger deletion
Proper cleanup of files, thumbnails, and database records
Gallery refresh after deletion
Expected Behavior
When a user clicks Delete Image from the context menu:
Frontend sends delete request to backend
Backend:
Deletes image file from disk
Deletes thumbnail / cached files
Removes image record from database
Frontend updates gallery state immediately
Proper error handling if:
File is missing
File is locked
DB record does not exist
Scope
Backend (Primary)
Files to Update / Create
Backend (Python)
Update
backend/app/routes/images.py
backend/app/database/images.py
backend/app/utils/images.py (if helper required)
// Add (if needed)
backend/app/schemas/delete_image.py
Frontend (Minimal Changes)
Update
Context menu delete handler (existing UI)
Gallery state refresh logic
API Proposal
Preferred REST-style endpoint:
DELETE /images/{image_id}
Alternative (if path-based deletion is required):
POST /images/delete
Body: { image_id | image_path }
Acceptance Criteria ( Important)
Image file is removed from disk
Thumbnail/cached files are removed
Database record is deleted
Image does not reappear after refresh/restart
UI updates instantly after deletion
Safe error handling
Record
Add ScreenShots
Demo video related to solution
image.deletion.backend.demo.mp4
Record
Describe the feature
Continuation of #802 – Add Context Menu (Right-Click) Actions for Images
Backend:
Problem
There is no end-to-end flow for deleting an image:
Goal
Expected Behavior
When a user clicks Delete Image from the context menu:
Frontend sends delete request to backend
Backend:
Proper error handling if:
File is missing
File is locked
DB record does not exist
Scope
Backend (Primary)
Files to Update / Create
Backend (Python)
Update
Frontend (Minimal Changes)
Update
Preferred REST-style endpoint:
Alternative (if path-based deletion is required):
Acceptance Criteria ( Important)
Record
Add ScreenShots
Demo video related to solution
image.deletion.backend.demo.mp4
Record