Welcome to my personal portfolio repository! This project is a responsive, interactive, and modern web application designed to showcase my projects, professional experience, skills, and technical insights.
This portfolio is built from the ground up using React, Vite, and Tailwind CSS. It serves not only as a display of my recent work—such as the Agentic Twitter Automation Workflow and Netflix Clone—but also as a testament to modern web development practices. It is engineered for blazing-fast performance, accessibility, and an exceptional user experience across all devices.
- Dynamic Dark/Light Mode: Full theme support managed via a custom React Context (
ThemeContext.jsx), utilizing CSS variables for seamless transitions between modes. - Interactive Navigation: A responsive top navigation bar that employs a custom
useActiveSectionhook to smoothly track and highlight the user's current scroll position. - Modern UI/UX: Implements a sleek interface featuring glassmorphism (backdrop filters), custom typography (Hanken Grotesk, Inter, and Geist), and tailored Material Design 3 inspired color tokens.
- Project Showcase & Insights: A dedicated portfolio section to display featured projects with external links, alongside a section for technical articles and insights.
- Performance Optimized: Built on Vite for instant server start and lightning-fast HMR (Hot Module Replacement), with optimized production builds.
- Framework: React 19
- Build Tool: Vite
- Styling: Tailwind CSS 4
- Custom plugins utilized:
@tailwindcss/container-queries,@tailwindcss/forms - Extensive custom configuration for colors, typography, and spacing in
tailwind.config.js.
- Custom plugins utilized:
- Icons: React Icons (Material Symbols)
The application follows a modular, feature-based directory structure to maintain scalability and clean code:
src/
├── assets/ # Static assets like images or SVGs
├── components/ # Reusable UI components
│ ├── common/ # Shared components (e.g., ProjectCard, StatWidget)
│ └── layout/ # Layout wrappers (e.g., TopNavBar, Footer)
├── context/ # React Context providers (e.g., ThemeContext)
├── data/ # Local data storage (portfolioData.js for projects, insights, social links)
├── features/ # Feature-specific components grouped by domain
│ ├── about/
│ ├── experience/
│ ├── hero/
│ ├── insights/
│ └── portfolio/
├── hooks/ # Custom React hooks (e.g., useActiveSection, useStats)
├── pages/ # Top-level page components (e.g., Home)
└── utils/ # Helper functions and utilities
useActiveSection: Tracks the user's scroll position using theIntersectionObserverAPI to dynamically update the active state of navigation links.useStats: Handles logic for calculating and animating statistics displayed in the Hero or About sections.
The project utilizes a comprehensive Tailwind CSS configuration. It maps custom CSS variables (defined in index.css) to Tailwind utility classes, allowing for granular control over the design system. Fonts include Hanken Grotesk for display/headlines, Inter for body text, and Geist for monospace labels.
To get a local copy up and running, follow these steps:
Make sure you have Node.js installed on your machine.
- Clone the repository:
git clone https://github.com/skullxcode/portfolio.git
- Navigate to the project directory:
cd portfolio - Install dependencies:
npm install
To start the local development server with Hot Module Replacement:
npm run devThe application will be available at http://localhost:5173/ by default.
To build the project for production:
npm run buildTo preview the production build locally:
npm run previewThis project is open for anyone to use as a template! To customize it for your own needs:
- Update Data: Navigate to
src/data/portfolioData.jsand replace the existing arrays (projects,insights,socialLinks) with your own content. - Modify Theme: Tweak the color tokens in
src/index.cssor adjust the Tailwind configuration intailwind.config.jsto match your personal brand. - Change Copy: Update the text in the various components within the
src/features/directory.
- Email: ujjwaljain146@gmail.com
- LinkedIn: Ujjwal Jain
- GitHub: skullxcode