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]>
1 parent 161cc16 commit f3e61b8c77e8520e37f5c489a50c40f378466293
@Eric Chicoine Eric Chicoine authored 19 days ago
Showing 36 changed files
View
Archive.tar.gz 0 → 100644
Not supported
View
DEPLOY.md 0 → 100644
View
app/database.py
View
app/exceptions.py 0 → 100644
View
app/main.py 0 → 100644
View
app/routes/__init__.py 0 → 100644
View
app/routes/about.py 0 → 100644
View
app/routes/home.py 0 → 100644
View
app/routes/projects.py 0 → 100644
View
app/schemas.py
View
app/services/__init__.py 0 → 100644
View
app/services/email.py 0 → 100644
View
app/services/gitbucket.py 0 → 100644
View
app/templates/about.html 0 → 100644
View
app/templates/base.html
View
app/templates/index.html 0 → 100644
View
app/templates/projects.html 0 → 100644
View
docker-web-logs.txt 0 → 100644
View
docker/docker-compose.yml
View
docs/superpowers/plans/2025-03-21-geekbrain-portfolio-implementation.md 0 → 100644
Too large (Show diff)
View
docs/superpowers/specs/2025-03-21-geekbrain-portfolio-design.md 0 → 100644
View
install.sh 0 → 100755
View
public/assets/images/Geekbrain-io.png 0 → 100644
View
public/assets/images/README.md 0 → 100644
View
requirements.txt
View
tests/conftest.py
View
tests/test_integration/__init__.py 0 → 100644
View
tests/test_integration/test_contact_flow.py 0 → 100644
View
tests/test_routes/__init__.py 0 → 100644
View
tests/test_routes/test_about.py 0 → 100644
View
tests/test_routes/test_home.py 0 → 100644
View
tests/test_routes/test_projects.py 0 → 100644
View
tests/test_services/__init__.py 0 → 100644
View
tests/test_services/test_email.py 0 → 100644
View
tests/test_services/test_gitbucket.py 0 → 100644
View
visual-companion.html 0 → 100644