🚀 Major Enhancement: Complete AI-Powered LifeRPG Platform with Git LFS
✨ New Features: - AI-powered habit creation with natural language processing - HuggingFace transformers integration for sentiment analysis (tracked via Git LFS) - Advanced predictive analytics and behavioral insights - Voice & image input capabilities for hands-free habit tracking - Real-time notifications and community features - Plugin system with extensible architecture 🔧 Technical Improvements: - Comprehensive FastAPI backend with 30+ endpoints - React frontend with PWA capabilities - Advanced authentication with 2FA support - RBAC authorization system - Comprehensive security features (CSRF, rate limiting, audit logging) - Database migrations and health monitoring - Docker containerization support - Git LFS configured for large AI model files (2+ GB) 📚 Documentation & DevOps: - Complete deployment guides for multiple platforms - Professional README with feature highlights - GitHub Actions CI/CD workflows - Comprehensive API documentation - Security audit roadmap and compliance framework - Setup scripts for development environment 🧪 Testing & Quality: - Comprehensive test suite with 20+ test modules - Setup verification scripts - Working development environment with both backend and frontend - Health checks and monitoring systems 🌟 Ready for: - Portfolio showcasing - Community contributions - Production deployment - Professional presentation
This commit is contained in:
@@ -38,8 +38,8 @@ class Settings:
|
||||
extra = ["https://www.googleapis.com"]
|
||||
self.CSP_CONNECT_EXTRA: List[str] = extra
|
||||
|
||||
# CSRF
|
||||
self.CSRF_ENABLE: bool = getenv_bool("CSRF_ENABLE", False)
|
||||
# CSRF - enable by default for security
|
||||
self.CSRF_ENABLE: bool = getenv_bool("CSRF_ENABLE", True)
|
||||
self.CSRF_HEADER_NAME: str = os.getenv("CSRF_HEADER_NAME", "x-csrf-token")
|
||||
self.CSRF_COOKIE_NAME: str = os.getenv("CSRF_COOKIE_NAME", "csrf_token")
|
||||
|
||||
@@ -77,17 +77,21 @@ class Settings:
|
||||
|
||||
def csp_header(self) -> str:
|
||||
connect_src = " ".join(["'self'", *self.CSP_CONNECT_EXTRA])
|
||||
# Allow inline styles in dev to keep things simple; consider removing in prod
|
||||
return "; ".join([
|
||||
# Enhanced CSP for better security
|
||||
csp_directives = [
|
||||
"default-src 'self'",
|
||||
"frame-ancestors 'none'",
|
||||
"base-uri 'self'",
|
||||
"object-src 'none'",
|
||||
"img-src 'self' data:",
|
||||
"img-src 'self' data: https:",
|
||||
f"connect-src {connect_src}",
|
||||
"script-src 'self'",
|
||||
"style-src 'self' 'unsafe-inline'",
|
||||
])
|
||||
"font-src 'self'",
|
||||
"form-action 'self'",
|
||||
"upgrade-insecure-requests" if self.FORCE_HTTPS else "",
|
||||
]
|
||||
return "; ".join([directive for directive in csp_directives if directive])
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
||||
Reference in New Issue
Block a user