A fully dynamic, Google Sheets-powered portfolio website that showcases skills, projects, work experience, and achievements. Built with vanilla JavaScript and modern CSS animations, this portfolio automatically updates content from Google Sheets without requiring code changes.
- Hero Section: Animated profile with status indicator and interactive "Let's Connect" button
- About Me: Dynamic summary fetched from Google Sheets
- Projects: Hover-expandable project cards with images and descriptions
- Work Experience: Timeline of professional roles and responsibilities
- Positions of Responsibility: Leadership and volunteer positions
- Education: Academic background and qualifications
- Skills: Interactive skill tags with proficiency levels
- Certificates: Showcase of certifications and achievements
- Contact: Social links and call-to-action buttons
- Google Sheets Integration: All content managed via spreadsheet (no code edits needed)
- Animated CTA Button: Two-stage hover animation with rotating circles and text transition
- Pulsing Status Indicator: Live availability status with spreading shadow effect
- Responsive Design: Mobile-first approach with breakpoints for all devices
- Smooth Animations: CSS transitions and keyframe animations throughout
- HTML Support: Rich text formatting support in sheet cells
- Modern gradient backgrounds
- Glassmorphism effects
- Hover state interactions
- Smooth scroll navigation
- Optimized image loading (lazy load)
- Accessibility-friendly markup
- HTML5: Semantic markup
- CSS3: Custom properties, Grid, Flexbox, animations
- Vanilla JavaScript: ES6+, async/await, Fetch API
- Google Sheets: Backend-as-a-Service for content management
- CSV Export: Real-time data fetching via published sheet URLs
- GitHub Pages: Fast, free static hosting
- Custom Domain: Optional custom domain support
The portfolio fetches data from 9 sheets with specific GIDs:
| Sheet Name | GID | Columns |
|---|---|---|
| Summary | 0 | summary |
| Social Links | 546184029 | platform, url, icon |
| Projects | 2043840442 | title, description, link, image |
| Certificates | 682957323 | title, issuer, date, link, image |
| Skills | 405041665 | name, category, level |
| Education | 1434705904 | degree, institution, duration, description |
| Work Experience | 1922006196 | title, company, location, duration, description |
| Details | 851669658 | name, role, status, profile_image, resume_link |
| Positions of Responsibility | 1487468481 | position, organisation, duration, description |
git clone https://github.com/deepak4728/Portfolio.git
cd Portfolio- Create a Google Sheet with the tabs listed above
- Publish the sheet: File > Share > Publish to web > CSV
- Copy the sheet ID from the URL
- Update
SHEET_IDinapp.js:const SHEET_ID = "YOUR_SHEET_ID_HERE";
- Fill your Google Sheets with your content
- For profile images, use Google Drive links converted to:
https://lh3.googleusercontent.com/d/FILE_ID=w400
- Push to GitHub
- Go to Settings > Pages
- Select branch:
main, folder:/root - Save and visit
https://yourusername.github.io/Portfolio
# Use a local server (required for CORS)
python -m http.server 8000
# or
npx serveVisit http://localhost:8000
Portfolio/
βββ index.html # Main HTML structure
βββ portfolio.css # Styles and animations
βββ app.js # Dynamic data fetching and rendering
βββ static/
β βββ profile.jpg # Fallback profile image
βββ README.md # Documentation
βββ .gitignore
Edit CSS custom properties in portfolio.css:
:root {
--primary: #007bff;
--secondary: #0056b3;
--text: #0f172a;
--bg: #f7f9fc;
}Adjust timing in keyframes:
@keyframes circle-left-move {
/* Customize duration, easing */
}Modify responsive breakpoints:
@media (max-width: 768px) { /* ... */ }- Ensure Google Drive links use
lh3.googleusercontent.comformat - Check file sharing permissions (Anyone with link can view)
- Verify sheet is published as CSV
- Check Console (F12) for fetch errors
- Confirm GID matches sheet tab
- Must use a web server (not
file://) - Use GitHub Pages or local server
Contributions welcome!
- Fork the repo
- Create feature branch:
git checkout -b feature/AmazingFeature - Commit changes:
git commit -m 'Add AmazingFeature' - Push:
git push origin feature/AmazingFeature - Open a Pull Request
This project is open source and available under the MIT License.
- Portfolio: [Your Live Site URL]
- Email: dy19363@gmail.com
- LinkedIn:
- GitHub: @deepak4728
- Google Sheets API for backend-as-a-service
- GitHub Pages for hosting
- Inspiration from modern portfolio designs
Made with β€οΈ and β | Last Updated: January 2026
β Star this repo if you find it helpful!