Skip to content

chayan-1906/Padmanabha-Portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

88 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Padmanabha Das - Modern Portfolio

Next.js React TypeScript Tailwind CSS Vercel

A production-grade portfolio built with Next.js 16, React 19, and TypeScript, featuring Cache Components (PPR), CMS-driven content, GitHub integration, and structured data for SEO.

🌐 Live Demo Β· πŸ“‹ Report Bug Β· ✨ Request Feature

GitHub stars GitHub forks


Overview

A full-stack portfolio website showcasing my journey as a Full-Stack Developer specializing in Next.js 16, React 19, React Native, Flutter, and AI integration through Model Context Protocol (MCP) development.

πŸ† Key Highlights

  • 3+ years of professional development experience
  • 300+ active users across deployed applications
  • Real-time systems and AI-powered solutions
  • Cross-platform expertise in web and mobile development

πŸ› οΈ Tech Stack

Frontend

Next.js React TypeScript Tailwind

UI & Animation

Framer Motion Shadcn UI Lucide Icons

Data & APIs

GraphQL GitHub API Hygraph Google Sheets


✨ Features

🎨 Modern Design System

  • Dual Theme Support - Seamless light/dark theme switching with system preference detection
  • Responsive Design - Optimized for desktop, tablet, and mobile devices
  • Smooth Animations - Powered by Framer Motion with staggered, scroll-triggered, and hover animations
  • Custom CSS Variables - Dynamic theming with Tailwind CSS 4

Cache Components (PPR)

  • Partial Pre-Rendering - Combines static and dynamic rendering using Next.js 16 Cache Components
  • Tag-Based Revalidation - Granular cache invalidation via cacheTag and updateTag
  • Suspense Boundaries - Progressive rendering with skeleton loading states
  • Webhook Integration - Hygraph webhooks trigger instant cache revalidation on content publish

SEO

  • JSON-LD Structured Data - Person, WebSite, and ProfilePage schemas for rich search results
  • Dynamic Sitemap - Auto-generated sitemap.xml via Next.js file convention
  • Robots.txt - Crawler directives with sitemap reference
  • OpenGraph & Twitter Cards - Rich social sharing previews with generated OG images
  • Per-Page Metadata - Custom title and description for each route

Data Architecture

  • Hygraph CMS - Headless CMS for all portfolio content with multi-portfolio support
  • GitHub API - Live repository data enrichment (stars, forks, topics, collaborators)
  • Google Sheets API - Contact form submissions and page analytics tracking
  • GraphQL - Efficient data fetching with parallel Promise.all queries

πŸ—οΈ Architecture

graph TD
    A[User] --> B[Next.js 16 App]
    B --> C[Cache Components - PPR]
    C --> D[Server Components]
    C --> E[Client Components]
    D --> F[Hygraph CMS - GraphQL]
    D --> G[GitHub API]
    D --> H[Google Sheets API]
    E --> I[Framer Motion]
    B --> J[Vercel Deployment]
    B --> K[SEO - JSON-LD / Sitemap / OG]
Loading

πŸ–ΌοΈ Screenshots

Hero Section

Experience the modern, animated landing page with a dynamic tech stack display and social links.

Desktop - Light Theme

hero-section-light

Desktop - Dark Theme

hero-section-dark

Mobile Responsive

hero-section-light-mobile
Skills & Experience

Interactive skill categories with progress indicators and a comprehensive work timeline.

Skills Section

skills-section-light

Experience Timeline

experience-section-dark
Projects Showcase

GitHub-integrated project display with categorization and live data synchronization.

Featured Projects

projects-section-dark

Project Categories - Web Development

web-development-light

Project Categories - MCP Development

mcp-server-development-dark

Mobile Projects View

projects-light-mobile
Contact & Education

Functional contact form with Google Sheets integration and academic background display.

Contact Form - iPad

contact-section-light-iPad

Education Section

academic-background-section-dark

πŸ“ Project Structure

src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ globals.css              # Global styles with CSS variables
β”‚   β”œβ”€β”€ layout.tsx               # Root layout with metadata and theme provider
β”‚   β”œβ”€β”€ page.tsx                 # Home page with JSON-LD structured data
β”‚   β”œβ”€β”€ sitemap.ts               # Auto-generated sitemap.xml
β”‚   β”œβ”€β”€ robots.ts                # Crawler directives
β”‚   β”œβ”€β”€ opengraph-image.tsx      # Dynamic OG image generation
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ contact/route.ts     # Contact form submission endpoint
β”‚   β”‚   └── revalidate/route.ts  # Webhook cache revalidation endpoint
β”‚   └── projects/
β”‚       └── page.tsx             # All projects page with categorization
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                      # Reusable UI components (Button, Skeleton, GradientButton)
β”‚   β”œβ”€β”€ hero/                    # Hero section (server + client)
β”‚   β”œβ”€β”€ about/                   # About section
β”‚   β”œβ”€β”€ skills/                  # Skills showcase with progress bars
β”‚   β”œβ”€β”€ experiences/             # Work experience timeline
β”‚   β”œβ”€β”€ educations/              # Education cards
β”‚   β”œβ”€β”€ projects/                # Project grid and cards
β”‚   β”œβ”€β”€ certifications/          # Certification cards
β”‚   β”œβ”€β”€ contact/                 # Contact form with validation
β”‚   β”œβ”€β”€ footer/                  # Footer with navigation
β”‚   β”œβ”€β”€ navigation/              # Fixed navbar with theme toggle
β”‚   β”œβ”€β”€ cta/                     # Call-to-action sections
β”‚   β”œβ”€β”€ loading/                 # Skeleton loading states (Home, Projects)
β”‚   β”œβ”€β”€ analytics/               # Server-side analytics tracker
β”‚   β”œβ”€β”€ theme-provider.tsx       # next-themes wrapper
β”‚   └── theme-toggle.tsx         # Theme switcher dropdown
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ hygraph.ts               # Hygraph GraphQL queries with Cache Components
β”‚   β”œβ”€β”€ github.ts                # GitHub API integration with caching
β”‚   β”œβ”€β”€ google-sheets.ts         # Google Sheets append for forms and analytics
β”‚   β”œβ”€β”€ analytics.ts             # Page analytics with geolocation tracking
β”‚   └── utils.ts                 # cn() and utility functions
β”œβ”€β”€ types/                       # TypeScript type definitions
β”œβ”€β”€ constants/                   # App constants and static data
└── config/
    └── config.ts                # Environment variable exports

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm

Installation

  1. Clone the repository

    git clone https://github.com/chayan-1906/Padmanabha-Portfolio.git
    cd Padmanabha-Portfolio
  2. Install dependencies

    npm install
  3. Environment Setup

    cp .env.example .env

    Update your .env file with the following variables:

    GITHUB_TOKEN=your_github_personal_access_token
    HYGRAPH_ENDPOINT=your_hygraph_content_api_endpoint
    HYGRAPH_TOKEN=your_hygraph_permanent_auth_token
    REVALIDATE_SECRET=your_webhook_secret_key
    SITE_URL=your_deployed_portfolio_url
    GOOGLE_CREDENTIALS=your_google_service_account_json
  4. Run development server

    npm run dev
  5. Open http://localhost:3000


Cache Revalidation

The portfolio uses Cache Components with tag-based revalidation. Hygraph webhooks trigger the revalidation endpoint to refresh cached content instantly.

Webhook Configuration

Endpoint: https://your-domain.com/api/revalidate?secret=your_secret
Method: POST
Trigger: Content publish/update events

Cache Tags

Tag Content
personal-info Name, title, bio, contact details
tech-stacks Technology display in hero
sections Section metadata (titles, subtitles)
skills Skill categories and levels
work-experiences Employment history and roles
educations Academic background
featured-projects Home page project showcase
all-projects Projects page full listing
certifications Professional certifications
social-links Social media profile links
github-repos GitHub repository data
github-user-stats GitHub user profile stats

πŸ—„οΈ Hygraph Schema

View full schema
type Section {
  name: String!          # Unique section identifier
  title: String!         # Display heading
  subtitle: String!      # Section description
  order: Int!            # Sort order
  portfolioId: Enum!     # Multi-portfolio support
}

type PersonalInfo {
  name: String!
  title: String!         # Job title
  description: String!   # SEO description
  subtitle: String!
  email: String!
  phone: String!
  github: String!        # GitHub profile URL
  linkedin: String!
  location: String!
  company: String!
  bio: String!
  avatar: Asset!         # Profile image
  resumeUrl: String
  portfolioId: Enum!
}

type Skill {
  name: String!
  level: Int!            # Proficiency percentage
  icon: String!          # react-icons name
  category: SkillCategory
  order: Int!
  portfolioId: Enum!
}

type SkillCategory {
  title: String!
  icon: String!
  gradient: String!      # CSS gradient class
  color: String!
  order: Int!
}

type TechStack {
  name: String!
  order: Int!
  portfolioId: Enum!
}

type WorkExperience {
  company: String!
  icon: String!
  logo: Asset!
  location: String!
  period: String!
  color: String!
  role: [Role!]          # Multiple roles per company
  order: Int!
  portfolioId: Enum!
}

type Role {
  title: String!
  period: String!
  type: String!          # Full-time, Intern, etc.
  description: String!
  achievements: String!
  order: Int!
}

type Education {
  degree: String!
  institution: String!
  logo: Asset!
  location: String!
  period: String!
  cgpa: String!
  highlights: String!
  order: Int!
  portfolioId: Enum!
}

type Project {
  title: String!
  githubUrl: String!
  logoUrl: String!
  actionUrl: String!     # Live demo / download link
  actionType: Enum!      # Demo, Download, Guide, etc.
  featured: Boolean!
  order: Int!
  projectCategory: ProjectCategory
  portfolioId: Enum!
}

type ProjectCategory {
  title: String!
  icon: String!
  gradient: String!
  order: Int!
}

type Certification {
  name: String!
  issuer: String!
  date: Date!
  credentialId: String!
  url: String!
  order: Int!
  portfolioId: Enum!
}

type SocialLink {
  name: String!
  url: String!
  icon: String!          # react-icons name (FaGithub, FaDev, etc.)
  order: Int!
  portfolioId: Enum!
}

πŸ“± Responsive Design

The portfolio is fully responsive across all device types:

  • Desktop (1920px+) - Full featured experience
  • Tablet (768px-1919px) - Optimized layouts
  • Mobile (320px-767px) - Touch-friendly interface

🀝 Contributing

If you find this project useful, consider giving it a star! For suggestions or issues:

  1. Open an issue for bugs or feature requests
  2. Fork the repository for contributions
  3. Create pull requests with clear descriptions

πŸ‘¨β€πŸ’» About the Developer

Padmanabha Das

Full-Stack Developer | AI Integration Specialist

Email GitHub LinkedIn Dev.to Medium

Professional Highlights

  • 🎯 3+ years of full-stack development experience
  • πŸš€ 300+ active users across deployed applications
  • πŸ€– AI integration specialist with MCP development expertise
  • πŸ“± Cross-platform developer in React Native & Flutter

πŸ™ Acknowledgments


Built with Next.js 16, React 19, and modern web technologies.

About

πŸš€ Professional portfolio website for Full-Stack Developer specializing in Next.js, React, Flutter, and AI integration. Built with cutting-edge technologies including Next.js 16, React 19, Hygraph CMS, and real-time GitHub API integration. ✨ Responsive design with modern animations and server-side analytics.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages