ai_qc/backend/visual_qc_apps/dark_mode_legibility/app.py
nickviljoen 3fec052c12 Create frontend and backend folder structure for deployment
Organized the application into separate frontend and backend directories for cleaner deployment and better separation of concerns.

Frontend Directory (frontend/):
- index.html: Single-page web interface (renamed from web_ui.html)
- README.md: Frontend deployment guide
- Total size: ~113 KB (self-contained)
- Smart base path detection (works at / or /ai_qc/)
- No configuration changes required

Backend Directory (backend/):
- All Python files (api_server.py, llm_config.py, etc.)
- visual_qc_apps/: 33 QC check modules
- profiles/: 6 QC profile configurations
- brand_guidelines/: Reference asset storage
- config/: Environment configurations
- scripts/: Deployment automation
- uploads/, output/: Data directories
- requirements.txt, ai_qc.service, apache_config.conf
- Complete documentation

New Documentation:
- FOLDER_STRUCTURE.md: Comprehensive guide to new structure
- frontend/README.md: Frontend deployment instructions
- backend/BACKEND_README.md: Backend deployment guide

Deployment Mapping:
- frontend/ → /var/www/html/ai_qc/ (web root)
- backend/ → /opt/ai_qc/ (application directory)

Benefits:
- Clear separation of concerns
- Backend code not in web-accessible directory
- Independent frontend/backend updates
- Matches server's existing patterns (/opt/veo3, /opt/voice2text)
- Industry-standard architecture
- Easy to deploy and maintain

Original files preserved in root directory for reference.
Ready for production deployment following MIGRATION_GUIDE.md.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 11:55:53 +02:00

59 lines
No EOL
2.5 KiB
Python
Executable file

import os
import sys
# Add parent directory to path to import shared modules
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from visual_qc_apps.flask_app_template import FlaskAppTemplate
class DarkModeLegibilityApp(FlaskAppTemplate):
"""
Dark Mode Legibility Check
"""
def __init__(self):
# Define the hardcoded prompt
prompt = """You are performing a visual quality-control check on digital content to verify its legibility in dark mode. Your task is to determine whether all elements and copy remain legible when viewed in dark mode.
DARK MODE LEGIBILITY CRITERIA:
1. All text should maintain sufficient contrast against dark backgrounds
2. Logos and brand elements should remain visible and clear
3. Visual hierarchy should be maintained in dark mode
4. Images and graphics should have appropriate brightness/contrast
5. Interactive elements should be clearly distinguishable
6. No elements should "disappear" or blend into the background
7. Color meaning and brand identity should be preserved
STEPS TO EVALUATE:
1. Determine if the image shows content in dark mode
2. If dark mode is visible, assess:
a. Text contrast and legibility
b. Logo and brand element visibility
c. Visual hierarchy maintenance
d. Image and graphic clarity
e. Interactive element distinguishability
3. If dark mode is not visible, state that "Dark mode legibility could not be assessed from this image."
YOUR OUTPUT:
• State whether dark mode content is visible in the image
• If visible, evaluate each legibility criterion
• State whether the design "passes" or "fails" the dark mode legibility check
• Include a JSON code block with these fields:
{
"dark_mode_visible": true or false,
"text_legibility": "Pass" or "Fail" or "Not applicable",
"brand_element_visibility": "Pass" or "Fail" or "Not applicable",
"visual_hierarchy_maintained": "Pass" or "Fail" or "Not applicable",
"interactive_element_clarity": "Pass" or "Fail" or "Not applicable",
"dark_mode_legibility_check": "Pass" or "Fail" or "Not applicable",
"issues": ["List specific issues identified, if any, else an empty array"],
"recommendations": ["List specific recommendations if applicable, else an empty array"]
}"""
# Initialize the Flask app with the prompt
super().__init__(__name__, prompt)
# Run the app if executed directly
if __name__ == "__main__":
app = DarkModeLegibilityApp()
app.run(debug=True)