A modern, full-stack portfolio template built with React and Express. Features a stunning UI, admin dashboard, GitHub integration, and easy customization through a single configuration file.
| About | Portfolio | Contact |
|---|---|---|
![]() |
![]() |
![]() |
- Modern UI - Glassmorphism design with smooth animations (Framer Motion)
- Single Config File - Customize all content through
portfolio.config.ts - Admin Dashboard - Manage projects, blog posts, and skills
- GitHub Integration - Auto-sync projects from your GitHub repositories
- Blog System - Rich text editor with comments
- Analytics - Built-in page view tracking
- Responsive - Looks great on all devices
- Dark Mode - Built-in dark theme
- SEO Ready - Optimized for search engines
git clone https://github.com/Xza85hrf/Modern-portfolio-template.git my-portfolio
cd my-portfolio
npm installcp .env.template .envEdit .env with your database credentials. At minimum, you need:
DATABASE_URL=postgresql://user:password@host:port/dbname
JWT_SECRET=your-secret-key-at-least-64-characters
ADMIN_PASSWORD=your-admin-passwordEdit portfolio.config.ts with your information:
const config: PortfolioConfig = {
personal: {
name: "Your Name",
email: "your@email.com",
title: "Your Title",
// ...
},
// See portfolio.config.sample.ts for all options
};npm run db:push
npm run db:seed-sample # Optional: add sample datanpm run devVisit http://localhost:5000 to see your portfolio!
All personal content is managed through portfolio.config.ts:
| Section | Description |
|---|---|
personal |
Name, email, location, title |
hero |
Landing page headline and CTAs |
about |
Introduction and stats |
services |
Your services/expertise |
timeline |
Career journey events |
social |
GitHub, LinkedIn, Twitter links |
site |
SEO metadata and logo |
navigation |
Menu items and CTA button |
contact |
Contact page content |
See portfolio.config.sample.ts for a complete reference.
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ └── lib/ # Utilities and config context
├── server/ # Express backend
│ ├── lib/ # Server utilities
│ └── routes.ts # API routes
├── db/ # Database schema and seeds
├── shared/ # Shared types
├── docs/ # Documentation
├── portfolio.config.ts # Main configuration file
└── .env.template # Environment template
Access the admin dashboard at /admin with the password set in ADMIN_PASSWORD.
Features:
- Projects - Add, edit, delete portfolio projects
- Blog - Create and manage blog posts
- Skills - Manage skill ratings
- GitHub Sync - Import projects from GitHub
- Analytics - View page statistics
To auto-sync projects from GitHub:
- Set
GITHUB_USERNAMEin.env - Create a Personal Access Token
- Set
GITHUB_TOKENin.env - Use "Sync GitHub" in the admin dashboard
- Push to GitHub
- Import in Vercel
- Set environment variables
- Deploy
See docs/DEPLOYMENT.md for:
- Railway
- Render
- DigitalOcean
- Traditional VPS
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm start |
Start production server |
npm run db:push |
Push schema to database |
npm run db:seed-sample |
Seed with sample data |
npm run setup |
Interactive setup wizard |
- Customization Guide - Detailed customization instructions
- Deployment Guide - Platform-specific deployment guides
- Admin Guide - Using the admin dashboard
- Architecture - Technical architecture overview
- Frontend: React, TypeScript, Tailwind CSS, Framer Motion, Shadcn/ui
- Backend: Express.js, Node.js
- Database: PostgreSQL, Drizzle ORM
- Auth: JWT, bcrypt
- API: GitHub API, Gemini AI (optional)
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
MIT License - feel free to use this template for your own portfolio!
Need help? Open an issue on GitHub or check the documentation.




