A cutting-edge, responsive portfolio built with Next.js 15, TypeScript, GSAP animations, and Tailwind CSS that automatically showcases your GitHub repositories with stunning animations and interactive features.
π Live Website: rudrasahoo.live
- GitHub Integration: Automatically fetches and displays your repositories with real-time data
- Organization Support: Shows repositories from organizations you're part of with custom badges
- Interactive Terminal: Built-in terminal with AI chat capabilities powered by Google Gemini
- GSAP Animations: Professional-grade animations with scroll triggers and smooth transitions
- Smooth Scrolling: Buttery smooth page transitions and element animations
- Responsive Design: Mobile-first approach with pixel-perfect responsive layouts
- Dark Theme: Modern dark theme with consistent color palette and accessibility features
- Performance Optimized: Built with Next.js 15 App Router and optimized for speed
- GSAP Timeline Animations: Complex animation sequences with precise timing
- Scroll-Triggered Animations: Elements animate as they enter the viewport
- Floating Dock: Smooth hover animations for social media links
- Text Flip Animations: Eye-catching text reveal animations
- Sparkle Effects: Interactive sparkle animations on hover
- Container Parallax: Smooth parallax scrolling effects
- Stagger Animations: Coordinated animations across multiple elements
- README Rendering: Full GitHub-flavored markdown with syntax highlighting
- Mermaid Diagrams: Supports complex Mermaid diagrams in README files
- Tech Stack Visualization: Interactive language breakdown with animated progress bars
- Organization Badges: Clean visual indicators for organization repositories
- Live Links: Direct links to GitHub repositories and live demos
- Repository Filtering: Smart filtering and categorization of projects
- Real-time Data: Fresh repository data fetched from GitHub API
- Gemini Integration: Advanced AI-powered chat assistance with context awareness
- Command System: Full Unix-like command interface with autocomplete
- Contact Form: Integrated email functionality with form validation
- Interactive Shell: Realistic terminal simulation with command history
- Custom Commands: Extensible command system for portfolio navigation
- Chat Mode: Seamless transition between command and chat modes
- Vercel Analytics: Real-time website analytics and performance monitoring
- Speed Insights: Page performance tracking and optimization
- Custom CSS Variables: Consistent theming system across all components
- Modular Architecture: Clean, maintainable component structure
- TypeScript: Full type safety and enhanced developer experience
- SEO Optimized: Meta tags, Open Graph, and structured data
Built with modern web technologies and best practices:
graph TB
A[Next.js 15 App Router] --> B[Server Components]
A --> C[Client Components]
A --> D[GSAP Animations]
B --> E[API Routes]
E --> F[GitHub API]
E --> G[Email Service]
E --> H[Gemini AI]
C --> I[Terminal Engine]
C --> J[Scroll Animations]
C --> K[Project Showcase]
C --> L[Floating Dock UI]
D --> M[Timeline Animations]
D --> N[Scroll Triggers]
D --> O[Interactive Effects]
F --> P[Repository Data]
F --> Q[README Content]
F --> R[Language Stats]
F --> S[Organization Info]
G --> T[Contact Form]
I --> U[AI Chat Mode]
style A fill:#0070f3
style F fill:#24292e
style H fill:#4285f4
style D fill:#88CE02
Automated testing, building, and deployment pipeline powered by GitHub Actions:
graph TB
Start([Push/PR Event]) --> Draft{Is PR Draft?}
Draft -->|Yes| Skip[Skip Workflow βοΈ]
Draft -->|No| Lint[Lint & Type Check π]
Lint --> ESLint[ESLint Check]
Lint --> Prettier[Prettier Check]
Lint --> TypeCheck[TypeScript Check]
ESLint --> LintPass{All Pass?}
Prettier --> LintPass
TypeCheck --> LintPass
LintPass -->|No| LintFail[β Workflow Failed]
LintPass -->|Yes| Test[Test & Coverage π§ͺ]
Test --> RunTests[npm run test:coverage]
RunTests --> Coverage{Coverage Check}
Coverage --> Codecov[Upload to Codecov π]
Coverage --> Artifact1[Upload Coverage Reports]
Coverage --> PRComment[Comment PR with Results π¬]
Codecov --> CovThreshold{Meets Thresholds?}
CovThreshold -->|Statements β₯ 80%| Build
CovThreshold -->|Branches β₯ 70%| Build
CovThreshold -->|Functions β₯ 68%| Build
CovThreshold -->|Lines β₯ 80%| Build
CovThreshold -->|No| Warning[β οΈ Coverage Warning]
Warning --> Build[Build Application ποΈ]
Build --> InstallDeps[npm ci]
InstallDeps --> NextBuild[npm run build]
NextBuild --> Artifact2[Upload Build Artifacts]
Artifact2 --> BuildPass{Build Success?}
BuildPass -->|No| BuildFail[β Build Failed]
BuildPass -->|Yes| Security[Security Audit π]
Security --> NPMAudit[npm audit]
Security --> Outdated[Check Outdated Packages]
NPMAudit --> SecurityPass{Security OK?}
Outdated --> SecurityPass
SecurityPass -->|Yes| PRCheck{Is PR?}
SecurityPass -->|No| SecurityWarn[β οΈ Security Issues Found]
SecurityWarn --> PRCheck
PRCheck -->|Yes| PRStatus[PR Status Check β
]
PRCheck -->|No| Deploy
PRStatus --> PRSuccess[All Checks Passed! π]
PRSuccess --> ReadyMerge[Ready to Merge]
Deploy[Deploy to Production π] --> Vercel[Vercel Deployment]
Vercel --> VercelBuild[Build on Vercel]
VercelBuild --> VercelDeploy[Deploy to Edge Network]
VercelDeploy --> Live[β
Live at rudrasahoo.live]
Live --> Analytics[Vercel Analytics π]
Live --> SpeedInsights[Speed Insights β‘]
style Start fill:#4CAF50
style Skip fill:#9E9E9E
style LintFail fill:#f44336
style BuildFail fill:#f44336
style Warning fill:#FF9800
style SecurityWarn fill:#FF9800
style Live fill:#4CAF50
style Codecov fill:#F01F7A
style Vercel fill:#000000
style PRSuccess fill:#4CAF50
style ReadyMerge fill:#2196F3
- ESLint: Code quality and style enforcement
- Prettier: Code formatting validation
- TypeScript: Type safety verification
- Node Version: 20.x with npm cache
- Test Runner: Jest with React Testing Library
- Coverage Thresholds:
- Statements: β₯ 80%
- Branches: β₯ 70%
- Functions: β₯ 68%
- Lines: β₯ 80%
- Coverage Tools: Codecov integration with PR comments
- Test Count: 278 comprehensive tests across 19 suites
- Framework: Next.js 15 with App Router
- Output: Optimized static and server bundles
- Artifacts: Build output uploaded for deployment
- Environment: Production-ready configuration
- npm audit: Vulnerability scanning
- Dependency Check: Outdated package detection
- Severity Level: Moderate and above
- Auto-remediation: Continuous monitoring
- Platform: Vercel Edge Network
- Trigger: Automatic on main branch push
- Preview: PR preview deployments
- Analytics: Real-time monitoring
- Performance: Speed Insights tracking
- Status Checks: All jobs must pass
- Coverage Reports: Automatic PR comments
- Build Verification: Ensures production readiness
- Merge Protection: Enforced via branch rules
- Frontend: Next.js 15, React 18, TypeScript 5
- Styling: Tailwind CSS, CSS Modules, Custom CSS Variables
- Animations: GSAP 3, Framer Motion, CSS Transitions
- APIs: GitHub REST API, Google Gemini AI, Resend Email
- Deployment: Vercel with Edge Functions
- Analytics: Vercel Analytics & Speed Insights
- Performance: Image optimization, Code splitting, Edge caching
- Node.js 18+
- npm/yarn/pnpm
-
Clone the repository
git clone https://github.com/rudra-sah00/portfolio.git cd portfolio -
Install dependencies
npm install
-
Configure Environment Variables
Create a
.env.localfile in the root directory:cp .env.local.example .env.local
Then add your tokens:
# Required: GitHub Personal Access Token # Get from: https://github.com/settings/tokens # Scopes: repo, read:org GITHUB_TOKEN=your_github_pat_here # Optional: Email configuration for contact form EMAIL_USER=[email protected] EMAIL_PASS=your-app-password EMAIL_TO=[email protected] # Optional: Gemini AI for terminal chat GEMINI_API_KEY=your_gemini_api_key # Site URL NEXT_PUBLIC_SITE_URL=https://rudrasahoo.live
-
Configure GitHub Username Update the username in
src/components/ProjectsSection.tsx:const username = "your-github-username";
-
Start Development Server
npm run dev
-
Open in Browser Navigate to http://localhost:3000
portfolio/
βββ src/
β βββ app/ # Next.js App Router
β β βββ api/ # API routes
β β β βββ contact/ # Email functionality
β β β βββ repositories/ # GitHub API integration
β β βββ globals.css # Global styles
β β βββ layout.tsx # Root layout
β β βββ page.tsx # Home page
β βββ components/ # React components
β β βββ projects/ # Project showcase components
β β β βββ ProjectInfo.tsx
β β β βββ ReadmeViewer.tsx
β β β βββ TechStack.tsx
β β β βββ *.module.css
β β βββ ui/ # Reusable UI components
β β βββ Hero.tsx # Hero section
β β βββ ProjectsSection.tsx
β β βββ TerminalPopup.tsx
β β βββ Footer.tsx
β βββ lib/ # Utilities and services
β β βββ api/ # API clients
β β βββ terminal/ # Terminal engine
β β βββ utils.ts
β βββ types/ # TypeScript definitions
β βββ hooks/ # Custom React hooks
βββ public/ # Static assets
βββ .env.local # Environment variables
βββ package.json # Dependencies
The portfolio comes with a pre-configured GitHub token for fetching repository data. If you need to use your own token, update it in:
src/app/api/repositories/route.ts(line 23)
The Gemini AI chat feature is pre-configured and ready to use.
Contact form emails are configured to work out of the box.
- CSS Variables: Located in
src/app/globals.css - Component Styles: Individual
.module.cssfiles - Responsive Design: Mobile-first approach with breakpoints
- Username: Update in
ProjectsSection.tsx - Repository Filtering: Modify API route logic
- README Rendering: Customize in
ReadmeViewer.tsx
- Add Commands: Extend
src/lib/terminal/commands/index.ts - AI Integration: Configure in
src/lib/terminal/chat/
sequenceDiagram
participant Client
participant API
participant GitHub
Client->>API: Request repositories
API->>GitHub: Fetch user repos
API->>GitHub: Fetch org repos
API->>GitHub: Fetch README content
API->>GitHub: Fetch language stats
API->>Client: Return processed data
Note over Client: Render with animations
- Language percentage calculation
- Color-coded progress bars
- Responsive layout
- Automatic detection of organization repositories
- Visual badges with organization names
- Separate filtering and display logic
-
Connect Repository
vercel --prod
-
Deploy The application will deploy automatically without any environment variable configuration needed.
-
Domain Setup Configure custom domain in Vercel settings
Build the project:
npm run buildThe output will be in the .next folder, ready for deployment.
# Type checking
npm run type-check
# Linting
npm run lint
# Build verification
npm run buildAll API keys are pre-configured in the application:
| Service | Status | Location |
|---|---|---|
| GitHub API | β Configured | src/app/api/repositories/route.ts |
| Gemini AI | β Configured | src/lib/terminal/chat/gemini.ts |
| Email Service | β Configured | src/app/api/contact/route.ts |
Note: API keys are hardcoded for easy deployment. For production use with sensitive data, consider using environment variables.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - React framework
- GitHub API - Repository data
- Google Gemini - AI chat capabilities
- Mermaid - Diagram rendering
- Resend - Email service
- π Live Website: rudrasahoo.live
- π§ Email: [email protected]
- πΌ LinkedIn: Rudra Sahoo
- π GitHub: @rudra-sah00
- π· Instagram: @rudra_sah_00
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
Made with β€οΈ using Next.js 15, TypeScript, GSAP & Modern Web Technologies
π Live at: rudrasahoo.live