feat: complete Geekbrain.io portfolio implementation
...
Implemented full portfolio website with:
- FastAPI async backend with SQLAlchemy 2.0
- Jinja2 templates with steampunk professional design
- MariaDB integration with Contact model
- GitBucket API integration with caching (5min TTL)
- reCAPTCHA v2 protection on contact form
- Gmail SMTP email notifications (async)
- Docker deployment with docker-compose
- Comprehensive test suite (17 tests passing)
- Automated installation script (install.sh)
- Complete documentation (README, DEPLOY.md, manual testing)
Key fixes:
- Added init_db() on startup to auto-create tables
- Fixed gitbucket.py: str(settings.gitbucket_url) for httpx
- Added jinja2 to requirements.txt
- Added startup event in main.py
- Corrected template directory paths
- Fixed DATABASE_URL encoding for @ in password
- Updated docker-compose to use port 8700
Ready for deployment on NAS with Docker + Nginx Proxy Manager.
Co-Authored-By: Claude Opus 4.6 <[email protected]>