Skip to content

gitit24x7/MyPortfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

81 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Portfolio Preview

Aditya Ojha β€” Developer Portfolio

A premium, full-stack portfolio with an integrated blog system β€” built with React 19, Express, and MongoDB

🌐 Live Site β€’ ✨ Features β€’ πŸ›  Tech Stack β€’ πŸ“ Architecture β€’ πŸš€ Getting Started β€’ ☁️ Deployment


🎨 Design Philosophy

This portfolio follows a "Technical Precision" aesthetic β€” a grid-based, high-contrast design language inspired by:

  • Bloomberg Terminal β€” Information density with clarity
  • Linear β€” Clean, systematic design with subtle animations
  • Vercel β€” Minimalist elegance with purposeful whitespace

Theme Concept

Aspect Implementation
Layout Strict grid system with consistent 5xl max-width container
Typography Inter font family with tight tracking for headings
Colors Slate-based palette with emerald/amber accents
Borders Unified border-grid utility with centralized control
Dark Mode Full dark mode support with smooth drop transition
Motion Subtle, purposeful animations using Framer Motion

✨ Features

πŸŒ“ Liquid Drop Theme Transition

A beautiful, instant theme switch with a liquid drop animation that expands from the toggle button:

  • Smooth clip-path animation using custom easing
  • Spring-based icon rotation with glow effects
  • Ripple feedback on the toggle button

🎯 Interactive Elements

  • Custom Cursor Follower β€” A playful, context-aware cursor that responds to hoverable elements
  • Smooth Scroll β€” Lenis-powered butter-smooth scrolling experience
  • Command Palette β€” Spotlight-style search with Cmd+K / Ctrl+K
  • Gradient Switcher β€” Switchable hero gradients (Deep Space, Obsidian Luster, Aurora Borealis)

πŸ“Š Portfolio Sections

Section Description
Hero Split-row layout with profile image, status indicators, and social links
Selected Work Bento grid showcasing projects with live/code links
Experience Timeline-style professional experience display
Technical Arsenal 4Γ—4 grid of technologies with shimmer hover effects
Figma Designs Gallery of design work with "pop" hover animations
About Personal introduction with CTA button
Visitor Counter Real-time visitor tracking with animated display

πŸ“ Blog System (Full Stack)

  • Blog Feed (/blog) β€” Grid of posts fetched from the API
  • Single Post (/blog/:slug) β€” Dynamic post pages with full content
  • Admin Login (/admin) β€” Secured admin authentication with JWT
  • Admin Dashboard (/admin/dashboard) β€” Create, Edit, and Delete posts
  • 404 Page β€” Custom animated "Signal Lost" page for missing routes

πŸ” SEO & Optimization

  • React Helmet β€” Dynamic <title> and <meta> tags per page
  • Open Graph / Twitter Cards β€” Rich social sharing previews
  • Sitemap & Robots.txt β€” Search engine indexing support
  • Vercel Analytics β€” Built-in traffic tracking

πŸ›  Tech Stack

Frontend

React 19.2.0            β€” UI Library
React Router DOM 7.x    β€” Client-side routing
Vite 6.0.0              β€” Build tool
Tailwind CSS 4.0.0      β€” Utility-first styling (v4 with @theme)
Framer Motion 12.x      β€” Animation library
Lenis 1.3.17            β€” Smooth scroll engine
react-helmet-async      β€” Dynamic SEO meta tags
Lucide React            β€” Icon library
clsx + tailwind-merge   β€” Conditional class utilities
@vercel/analytics       β€” Traffic analytics

Backend

Express 5.x             β€” Node.js web framework
Mongoose 9.x            β€” MongoDB ODM
bcryptjs                β€” Password hashing
jsonwebtoken (JWT)      β€” Authentication tokens
cors                    β€” Cross-origin resource sharing
dotenv                  β€” Environment variable management

Database

MongoDB Atlas            β€” Cloud-hosted NoSQL database

πŸ“ Architecture

Professional_Portfolio/
β”œβ”€β”€ src/                           # Frontend Source
β”‚   β”œβ”€β”€ App.jsx                    # Root component & routing
β”‚   β”œβ”€β”€ main.jsx                   # Entry point (HelmetProvider)
β”‚   β”œβ”€β”€ index.css                  # Global styles & Tailwind config
β”‚   β”‚
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ common/
β”‚   β”‚   β”‚   └── SEO.jsx            # Reusable SEO meta tag component
β”‚   β”‚   β”œβ”€β”€ layout/
β”‚   β”‚   β”‚   β”œβ”€β”€ Nav.jsx            # Navigation with theme toggle & search
β”‚   β”‚   β”‚   β”œβ”€β”€ GridBackground.jsx # Full-page grid overlay
β”‚   β”‚   β”‚   └── Footer.jsx         # Site footer with links
β”‚   β”‚   β”œβ”€β”€ sections/
β”‚   β”‚   β”‚   β”œβ”€β”€ Hero.jsx           # Hero with gradient switcher
β”‚   β”‚   β”‚   β”œβ”€β”€ Projects.jsx       # Bento grid project showcase
β”‚   β”‚   β”‚   β”œβ”€β”€ Experience.jsx     # Professional timeline
β”‚   β”‚   β”‚   β”œβ”€β”€ TechStack.jsx      # Technology grid
β”‚   β”‚   β”‚   β”œβ”€β”€ FigmaDesigns.jsx   # Design portfolio
β”‚   β”‚   β”‚   β”œβ”€β”€ About.jsx          # Personal introduction
β”‚   β”‚   β”‚   └── CodeShowcase.jsx   # Code snippet display
β”‚   β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   β”‚   β”œβ”€β”€ CursorFollower.jsx # Custom cursor component
β”‚   β”‚   β”‚   β”œβ”€β”€ SearchCommand.jsx  # Command palette modal
β”‚   β”‚   β”‚   β”œβ”€β”€ VisitorCounter.jsx # Analytics display
β”‚   β”‚   β”‚   β”œβ”€β”€ SectionSeparator.jsx
β”‚   β”‚   β”‚   └── CodeBlock.jsx      # Syntax-highlighted code blocks
β”‚   β”‚   └── utils/
β”‚   β”‚       └── SmoothScroll.jsx   # Lenis scroll wrapper
β”‚   β”‚
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Home.jsx               # Main portfolio page
β”‚   β”‚   β”œβ”€β”€ Blog.jsx               # Blog feed (fetches from API)
β”‚   β”‚   β”œβ”€β”€ BlogPost.jsx           # Single post page (dynamic)
β”‚   β”‚   β”œβ”€β”€ AdminLogin.jsx         # Admin authentication
β”‚   β”‚   β”œβ”€β”€ AdminDashboard.jsx     # Post management (CRUD)
β”‚   β”‚   └── NotFound.jsx           # 404 page with animation
β”‚   β”‚
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── useCalEmbed.js         # Cal.com scheduling integration
β”‚   └── utils/
β”‚       └── cn.js                  # clsx + tailwind-merge utility
β”‚
β”œβ”€β”€ blog/server/                   # Backend API
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ server.js              # Express app entry point
β”‚   β”‚   β”œβ”€β”€ controllers/           # Route handlers
β”‚   β”‚   β”œβ”€β”€ models/                # Mongoose schemas (Post, Admin)
β”‚   β”‚   β”œβ”€β”€ routes/                # API route definitions
β”‚   β”‚   └── middleware/            # Auth middleware (JWT)
β”‚   β”œβ”€β”€ vercel.json                # Vercel serverless config
β”‚   └── package.json
β”‚
β”œβ”€β”€ public/                        # Static assets
β”‚   β”œβ”€β”€ tech/                      # Technology icons
β”‚   β”œβ”€β”€ robots.txt                 # Search engine rules
β”‚   └── sitemap.xml                # SEO sitemap
β”‚
└── vercel.json                    # Frontend SPA routing config

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm
  • MongoDB Atlas account (for the blog backend)

Frontend Setup

# Clone the repository
git clone https://github.com/gitit24x7/MyPortfolio.git

# Navigate to frontend
cd Professional_Portfolio

# Install dependencies
npm install

# Create .env file
echo "VITE_API_URL=http://localhost:3001" > .env

# Start development server
npm run dev

Backend Setup

# Navigate to backend
cd Professional_Portfolio/blog/server

# Install dependencies
npm install

# Create .env file with your credentials
# DATABASE_URL=mongodb+srv://your-connection-string
# JWT_SECRET=your-secret-key

# Start backend server
npm run dev

Available Scripts

Command Location Description
npm run dev Frontend Start Vite dev server with HMR
npm run build Frontend Production build to dist/
npm run preview Frontend Preview production build locally
npm run dev Backend Start Express server with watch mode
npm start Backend Start Express server (production)

☁️ Deployment

This project is a Monorepo β€” both Frontend and Backend live in one repository. Deploy both to Vercel for free.

1. Deploy Frontend (Vercel)

  1. Push code to GitHub.
  2. Import repository to Vercel.
  3. Root Directory: Professional_Portfolio
  4. Build Command: npm run build
  5. Output Directory: dist
  6. Environment Variables:
    • VITE_API_URL β†’ Your Backend URL (from Step 2)

2. Deploy Backend (Vercel)

  1. Import the same repository to Vercel as a new project.
  2. Project Name: my-portfolio-backend
  3. Root Directory: Professional_Portfolio/blog/server
  4. Framework Preset: Other
  5. Environment Variables:
    • DATABASE_URL β†’ Your MongoDB Atlas connection string
    • JWT_SECRET β†’ A random secret string
  6. Click Deploy and copy the domain.

3. Connect Them

  1. Go to your Frontend project on Vercel β†’ Settings β†’ Environment Variables.
  2. Set VITE_API_URL to your Backend URL (e.g., https://my-backend.vercel.app).
  3. Redeploy the Frontend.

🎭 Customization

Changing Gradients

Edit the gradients array in Hero.jsx:

const gradients = [
    { name: "Deep Space", class: "bg-gradient-to-br from-black via-indigo-950 ..." },
    { name: "Custom", class: "bg-gradient-to-br from-..." }
]

Adding Projects

Update the projects array in Projects.jsx:

{
    title: "New Project",
    description: "...",
    tech: ["React", "Node.js"],
    size: "large", // or "small"
    liveUrl: "https://...",
    githubUrl: "https://github.com/..."
}

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.


πŸ™ Acknowledgments


Built with ❀️ by Aditya Ojha

About

The portfolio template of intersecting div style made in react and tailwindcss

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors