# PunimTag - Intelligent Photo Management System A Flask-based photo management system with automatic face recognition, tagging, and duplicate detection. ## ๐Ÿš€ Quick Start ```bash # Install dependencies pip install -r requirements.txt # Run the application python main.py # Access the web interface # http://localhost:5000 ``` ## ๐Ÿ“ Project Structure ``` PunimTag/ โ”œโ”€โ”€ src/ # Main application source code โ”‚ โ”œโ”€โ”€ backend/ # Flask backend and API โ”‚ โ”‚ โ”œโ”€โ”€ app.py # Main Flask application โ”‚ โ”‚ โ”œโ”€โ”€ db_manager.py # Database operations โ”‚ โ”‚ โ””โ”€โ”€ visual_identifier.py # Face recognition โ”‚ โ”œโ”€โ”€ frontend/ # JavaScript and UI components โ”‚ โ””โ”€โ”€ utils/ # Utility functions โ”‚ โ””โ”€โ”€ tag_manager.py # Tag management โ”œโ”€โ”€ docs/ # Documentation and steering documents โ”‚ โ”œโ”€โ”€ product.md # Product vision and goals โ”‚ โ”œโ”€โ”€ structure.md # Project organization โ”‚ โ”œโ”€โ”€ tech.md # Technical architecture โ”‚ โ”œโ”€โ”€ api-standards.md # API design standards โ”‚ โ”œโ”€โ”€ testing-standards.md # Testing guidelines โ”‚ โ””โ”€โ”€ code-conventions.md # Coding standards โ”œโ”€โ”€ tests/ # Test files โ”‚ โ”œโ”€โ”€ test_main.py # Main test suite โ”‚ โ””โ”€โ”€ conftest.py # Test configuration โ”œโ”€โ”€ data/ # Database files and user data โ”œโ”€โ”€ config/ # Configuration files โ”‚ โ”œโ”€โ”€ settings.py # Application settings โ”‚ โ””โ”€โ”€ punimtag_config.json โ”œโ”€โ”€ scripts/ # Utility scripts โ”œโ”€โ”€ assets/ # Static assets โ”œโ”€โ”€ photos/ # User photo storage โ””โ”€โ”€ main.py # Application entry point ``` ## ๐ŸŽฏ Key Features - **Automatic Face Recognition**: Identify and tag people in photos - **Smart Organization**: Group photos by people, events, and locations - **Duplicate Detection**: Find and manage duplicate photos automatically - **Intuitive Interface**: Web-based GUI with progressive loading - **Privacy-First**: Local processing, no cloud dependencies ## ๐Ÿ“š Documentation ### Steering Documents - **[Product Vision](docs/product.md)**: Product goals, target users, and roadmap - **[Project Structure](docs/structure.md)**: Architecture and organization principles - **[Technical Architecture](docs/tech.md)**: Technology stack and implementation details - **[API Standards](docs/api-standards.md)**: API design and development guidelines - **[Testing Standards](docs/testing-standards.md)**: Testing strategy and best practices - **[Code Conventions](docs/code-conventions.md)**: Coding standards and style guides ### Development Guidelines 1. **Follow the steering documents** for consistent development 2. **Use the organized structure** - place code in appropriate directories 3. **Write tests** following the testing standards 4. **Follow API standards** for all endpoints 5. **Adhere to code conventions** for maintainability ## ๐Ÿงช Testing ```bash # Run the main test suite python tests/test_main.py # Run with pytest (if installed) pytest tests/ ``` ## ๐Ÿ”ง Configuration Configuration is centralized in `config/settings.py`: - Database paths - Face recognition settings - File upload limits - Thumbnail sizes ## ๐Ÿš€ Deployment ### Development ```bash python main.py ``` ### Production ```bash # Use a WSGI server like Gunicorn gunicorn -w 4 -b 0.0.0.0:5000 main:app ``` ## ๐Ÿ“ฆ Dependencies - **Flask**: Web framework - **SQLite**: Database - **dlib**: Face recognition - **Pillow**: Image processing - **NumPy**: Numerical operations ## ๐Ÿค Contributing 1. Read the steering documents in `docs/` 2. Follow the code conventions 3. Write tests for new features 4. Update documentation as needed ## ๐Ÿ“„ License This project is licensed under the MIT License. ## ๐Ÿ†˜ Support For issues and questions: 1. Check the steering documents in `docs/` 2. Review existing tests in `tests/` 3. Check the API standards for endpoint usage