How ashiqursuperfly/searchable-image-repository-rest-api works
This is a Django REST API for authenticated image upload, searchable image metadata, and visual similarity search. Clients register, upload single or bulk images, poll asynchronous tasks, and search by text or image; users can also list and delete their own images. Upload workers store images and ORB descriptors, while search combines PostgreSQL full-text ranking with descriptor matching. The README also documents CDN delivery and URL-based image manipulation through AWS Lambda. Unsampled routing and infrastructure details are shown only where documented; implementation links are limited to visible references.
Main entry points: tasks.py Image tasks · utils.py Image and search utilities · post_single_image_async.py Single upload · get_images.py Image search
Components 21
API workflows
- User signup
src/core/views/signup.py - Image endpoints
src/core/views - Single upload
src/core/views/post_single_image_async.py - Bulk upload
src/core/views/post_bulk_images.py - Task results
src/core/views/celery_task_results.py - Owned images
src/core/views/mine_images.py - Categories and countries
src/core/views
Search and discovery
- Full-text search
src/core/views/get_images.py - Image search
src/core/views/get_images.py - Search query model
src/core/search_models.py
Async processing
- Image tasks
src/core/tasks.py - Celery app
src/iidb/celery.py
Image data and storage
- Request and response serializers
src/core/serializers.py - Image and search utilities
src/core/utils.py - Image records
src/core/models.py
External platform
- PostgreSQL
- AWS S3
- CloudFront CDN
- RabbitMQ broker
- AWS Lambda manipulation
Other components
- API client
Connections 27
- API client → User signup: registers
README.md - API client → Single upload: uploads image
README.md - API client → Bulk upload: uploads batch
README.md - API client → Full-text search: searches text
README.md - API client → Image search: searches image
README.md - API client → Task results: polls task
README.md - API client → Owned images: manages own images
README.md - API client → Categories and countries: requests options
README.md - Single upload → Image tasks: dispatches upload
src/core/views/post_single_image_async.py - Bulk upload → Image tasks: dispatches uploads
src/core/views/post_bulk_images.py - Image search → Image tasks: dispatches search
src/core/views/get_images.py - Image tasks → Celery app: registered by
src/core/tasks.py - Image tasks → Image and search utilities: calls
src/core/tasks.py - Image tasks → Image records: creates and queries
src/core/tasks.py - Image and search utilities → Image records: queries
src/core/utils.py - Image and search utilities → AWS S3: uploads files
src/core/utils.py - Image tasks → AWS S3: stores uploaded image
README.md - Full-text search → Image and search utilities: runs search
src/core/views/get_images.py - Image search → Search query model: accepts search fields
- Search query model → PostgreSQL: builds text query
src/core/search_models.py - Image and search utilities → PostgreSQL: ranks metadata
README.md - Image and search utilities → CloudFront CDN: serves image URLs
README.md - User signup → Request and response serializers: returns user data
src/core/views/signup.py - Single upload → Image records: names stored image
README.md - Task results → API client: returns task result
README.md - API client → AWS Lambda manipulation: requests URL manipulation
README.md - Celery app → RabbitMQ broker: uses broker
README.md