I built this full-stack portfolio to showcase real development work, not just talk about it. It pulls live data from GitHub, auto-calculates skills from my projects, and handles the quirks of free hosting like cold starts.
- GitHub Integration: Bulk import projects from multiple accounts, with tech stack detection and live links.
- Smart Skills: Auto-calculates proficiency based on project usage, with manual overrides.
- Admin Mode: Edit in dev, clean view in prod—no complex auth.
- Analytics Dashboard: Track visits and engagement.
- Cold Start Handling: Warmup logic, retries, and external monitoring to keep things fast.
- Responsive Design: Works on all devices, with real-time updates.
Frontend: React 19, Vite, Axios, Framer Motion, React Router, Socket.io-client.
Backend: Flask 3.0.3, SQLAlchemy 2.0.43, PostgreSQL, Flask-CORS, Flask-SocketIO.
Testing: Jest (frontend), pytest (backend).
Deployment: Render with Gunicorn.
Prerequisites: Node.js 18+, Python 3.10+, PostgreSQL 13+, Git.
-
Clone & Install:
git clone https://github.com/Hawk-PDX/project-dev-resume.git cd project-dev-resume npm install cd backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt
-
Environment:
- Root
.env:VITE_API_BASE_URL=http://localhost:5001/api, Cloudinary keys for images. - Backend
.env:FLASK_DEBUG=True,DATABASE_URL=postgresql://localhost/portfolio_dev,SECRET_KEY=..., optionalGITHUB_TOKEN.
- Root
-
Database:
psql postgres -c "CREATE DATABASE portfolio_dev;" cd backend python run_migrations.py python seed_db.py
-
Run:
# Backend: cd backend && python run.py # Frontend: npm run dev
Visit
http://localhost:5173.
src/ # Frontend components, hooks, services
backend/app/ # Flask routes, models, services
backend/migrations/ # DB schema changes
Hosted on Render: Frontend as static site, backend with Gunicorn, PostgreSQL for data. Uses UptimeRobot to prevent cold starts.
npm test # Frontend
cd backend && pytest # BackendFork and tweak: Update resume data in backend/app/routes/resume.py, hero in src/components/Hero.jsx, styles in src/styles.css.
MIT—use it for your own portfolio.
