A modern web application for uploading, organizing, and searching images with automatic tag generation using AI-powered object detection and text recognition.
ImageHound is a full-stack web application that allows users to:
- Upload and organize images
- Automatically detect objects and text in images
- Search images by tags
- Browse images in a responsive grid layout
- Download images
- View images by albums/categories
- Switch between light and dark themes

Python 3.x
Node.js and npm
Vue.js 3
Flask
PyTorch
SQLite
Application uses Flask for backend app and Vue.JS for frontend.
Images search is based on SQLite DB run with SQLAlchemy.
Detection and text reading are performed with YOLOv8 and EasyOCR


Image Management:
- Drag-and-drop image upload
- Multi-file upload support
- Upload progress tracking
- Image preview before upload
Search and Organization:
- Tag-based image search
- Auto-complete suggestions
- Album view by tags
- Horizontal scrollable album navigation
User Interface:
- Responsive grid layout
- Light/Dark theme toggle
- Infinite scroll for image loading
- Modern and clean design
- "Back to Top" button
- Loading indicators
Image Processing:
- Automatic object detection using YOLOv8
- Text recognition using EasyOCR
- Automatic tag generation
- Image metadata extraction
Clone the repository:
git clone https://github.com/MIDIFrogs/IntecHack.git cd IntecHackRunning the Application:
- Use the unified launcher:
python src/run.py
OR run services separately:
- Backend:
python src/backend/server.py - Frontend:
cd src/frontend && npm run dev
- Use the unified launcher:
The application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- POST /api/upload - Upload and process images
- GET /api/images - Get images list with optional search/tag filters
- GET /api/images/{id} - Get info about specific image
- GET /api/images/{id}/download - Download an image
- GET /api/albums/tags - Get available tags and their thumbnails
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request
