A modern, full-stack portfolio website showcasing software development and game development projects, with GitHub integration and blog functionality.
Live: (Coming Soon) GitHub: https://github.com/LgrappaG/Workflows-Agents
- β Automatic GitHub repository synchronization
- β Game development showcase section
- β Blog system with markdown support
- β Project filtering and search
- β Responsive design with animations
- β Contact form (no login required)
- β GitHub API integration with caching
- β SEO optimized
- β Dark mode support (planned)
- β Analytics integration
- Framework: Next.js 14+ with TypeScript
- Styling: Tailwind CSS + CSS Modules
- Components: shadcn/ui, Framer Motion
- State: Zustand + Context API
- Deployment: Vercel
- Runtime: Node.js 18+
- Framework: Express.js with TypeScript
- Database: PostgreSQL 15+
- ORM: Prisma
- Caching: Redis
- GitHub API: @octokit/rest
- Containerization: Docker & Docker Compose
- CI/CD: GitHub Actions
- Monitoring: Sentry
- Analytics: Google Analytics
portfolio/
βββ frontend/ # Next.js app
βββ backend/ # Express.js API
βββ .github/workflows/ # CI/CD pipelines
βββ docker-compose.yml # Local dev environment
βββ PORTFOLIO_SETUP.md # Setup guide & database schema
βββ README.md # This file
- Node.js 18+
- Docker & Docker Compose
- GitHub Personal Access Token
- Clone and setup
git clone <repo-url> portfolio
cd portfolio
cp .env.example .env
# Add your GitHub token to .env- Start services
npm run docker:up
npm install- Initialize database
npm run db:migrate
npm run db:seed- Start dev servers
npm run devFrontend: http://localhost:3000 Backend: http://localhost:5000
docker-compose up -d
docker-compose logs -f
docker-compose downSee PORTFOLIO_SETUP.md for detailed schema documentation.
Main Tables:
users- Admin users (future)projects- GitHub repository dataproject_details- Custom project metadataarticles- Blog postsskills- Technology skillsexperience- Career timelinegithub_activity- API cachepage_analytics- Site analytics
Projects are automatically synced from GitHub every 6 hours:
- Fetches all repositories
- Categorizes game dev projects
- Updates statistics (stars, forks)
- Caches data in Redis for performance
Automatically identifies game development projects based on:
- Repository name/description keywords
- Programming languages (C#, C++, GDScript, etc.)
- Topics/tags (unity, godot, unreal, etc.)
Edit project categories in admin panel or directly in database:
UPDATE projects SET category = 'game-dev' WHERE is_game_dev = TRUE;
UPDATE projects SET featured = TRUE WHERE slug IN ('project1', 'project2');See .env.example for all required variables.
Critical Variables:
DATABASE_URL- PostgreSQL connection stringREDIS_URL- Redis connectionGITHUB_TOKEN- GitHub personal access tokenSENDGRID_API_KEY- Email service (optional)
GET /api/projects- List all projects (paginated, filtered)GET /api/projects/:id- Project detailsGET /api/projects/featured- Featured projectsGET /api/projects/game-dev- Game dev projects
GET /api/github/user- Current user infoGET /api/github/stats- GitHub statisticsPOST /api/github/sync- Manual sync (admin only)
GET /api/articles- List articlesGET /api/articles/:slug- Article content
GET /api/skills- Technology skillsGET /api/experience- Career timelinePOST /api/contact- Contact form
See API Documentation for full details.
# Run all tests
npm test
# Frontend tests
cd frontend && npm test
# Backend tests
cd backend && npm test
# Coverage report
npm run test:coveragegit push origin develop
# GitHub Actions automatically deploys to staginggit push origin main
# GitHub Actions automatically deploys to productionSee Deployment Guide for detailed instructions.
See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE
LgrappaG GitHub: https://github.com/LgrappaG Portfolio: https://portfolio.example.com
Last Updated: March 25, 2026 Status: π Phase 1 - Setup & Planning