A modern, responsive portfolio website built with React and Material-UI, showcasing professional experience, projects, and skills.
- Node.js (version 14 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/abhinavchat/abhinavchat-portfolio.git cd abhinavchat-portfolio -
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to
http://localhost:3000to view the portfolio
npm start- Runs the app in development modenpm run build- Builds the app for productionnpm test- Launches the test runnernpm run deploy- Deploys to GitHub Pages
The portfolio generates two types of resume PDFs:
- Simple black text on white background
- Standard Times font for maximum compatibility
- Single-column layout with clear section headers
- Minimal formatting - no graphics, colors, or complex layouts
- Structured text with consistent spacing and alignment
- Contact information clearly labeled and separated
- Skills listed as comma-separated text for easy parsing
- Standard bullet points (dashes) instead of special characters
- Styled formatting with colors and visual elements
- Multi-column layouts for skills section
- Professional typography with varied font sizes
- Visual separators and design elements
- Better for networking and in-person interviews
All portfolio content is managed through the src/portfolio.js file. This file contains several configuration objects that control different sections of your portfolio.
const about = {
name: 'Your Full Name',
role: 'Your Job Title',
description: 'Your professional summary...',
resume: process.env.PUBLIC_URL + '/resume',
social: {
linkedin: 'https://www.linkedin.com/in/yourprofile/',
github: 'https://github.com/yourusername',
},
}Located in the resume object, add/edit work experience:
{
position: 'Job Title',
company: 'Company Name',
url: 'https://company-website.com',
period: 'Start Date - End Date',
location: 'City, State/Country',
summary: 'Brief description of the role...',
achievements: [
'Achievement or responsibility 1',
'Achievement or responsibility 2',
// Add more achievements as needed
]
}{
degree: 'Degree Name',
institution: 'University/Institution Name',
url: 'https://institution-website.com',
period: 'Start Year - End Year',
location: 'City, State/Country',
studyType: 'Type of degree'
}{
title: 'Certification Name',
id: 'Certificate ID (optional)',
issuer: 'Issuing Organization'
}{
name: 'Project Name',
description: 'Project description...',
stack: ['Technology1', 'Technology2', 'Technology3'],
sourceCode: 'https://github.com/username/repo',
livePreview: 'https://project-demo-url.com',
}Organized by categories:
const skills = {
// List your skills by category
'Programming Languages': ['JavaScript', 'Python', 'Java'],
'Frontend': ['React', 'Angular', 'Vue.js'],
'Backend': ['Node.js', 'Express', 'Django'],
'Databases': ['MongoDB', 'PostgreSQL', 'MySQL'],
// Add more categories as needed
}-
Open the portfolio configuration file
src/portfolio.js
-
Update personal information
- Modify the
aboutobject with your details - Update social media links
- Modify the
-
Add/Update work experience
- Navigate to the
resume.experiencearray - Add new positions or edit existing ones
- Use the format shown above
- Navigate to the
-
Update education
- Modify the
resume.educationarray - Add your educational background
- Modify the
-
Add certifications
- Update the
resume.certificationsarray - Include relevant professional certifications
- Update the
-
Update projects
- Modify the
projectsarray - Showcase your best work with descriptions and links
- Modify the
-
Update skills
- Edit the
skillsobject - Organize skills by relevant categories
- Edit the
-
Test your changes
npm start
Review your changes at
http://localhost:3000 -
Build for production
npm run build
const contact = {
email: 'your.email@example.com',
phone: '+1234567890',
location: 'Your City, State/Country'
}The theme object controls the visual appearance:
- Colors, typography, spacing
- Component styling
- Responsive breakpoints
The uiConfig object controls:
- Animation settings
- Section visibility
- Layout preferences
The portfolio provides multiple download formats:
- ATS-Friendly PDF - Optimized for Applicant Tracking Systems
- Professional PDF - Styled version for human readers
- JSON Resume - Machine-readable format following JSON Resume standard
- Print Option - Browser print dialog
The ATS-friendly PDF includes:
- Plain text formatting without graphics or colors
- Standard fonts (Times) recognized by all ATS systems
- Left-aligned text for consistent parsing
- Clear section headers in ALL CAPS
- Contact information with descriptive labels
- Skills organized by category with comma separation
- Simple dash bullet points instead of special characters
- Single-column layout to prevent parsing errors
- Consistent spacing and line heights
- Update the
homepagefield inpackage.jsonwith your GitHub Pages URL - Run the deployment command:
npm run deploy
- Build the project:
npm run build
- Deploy the
buildfolder to your hosting provider
src/
βββ components/ # React components
βββ pages/ # Page components
βββ portfolio.js # Main configuration file
βββ App.js # Main application component
βββ index.js # Application entry point
- Hot Reloading: Changes to
portfolio.jswill automatically refresh the browser - Data Validation: The app includes built-in validation for required fields
- Responsive Design: All components are mobile-responsive by default
- SEO Friendly: Includes meta tags and structured data for better search engine visibility
- Open
src/portfolio.js - Locate
resume.experiencearray - Add a new object with your job details
- Save and check the preview
- Find the
skillsobject insrc/portfolio.js - Add new categories or update existing ones
- Skills are automatically organized and displayed
- Locate the
projectsarray - Add project objects with name, description, stack, and links
- Projects support GitHub links and live previews
- 70%+ of resumes are initially screened by ATS software
- Complex formatting can cause parsing errors and rejection
- ATS systems prefer simple, text-based formats
- Keywords are more easily extracted from plain text
- Standard fonts that don't require special rendering
- Clear section headers that ATS systems recognize
- Contact information in a predictable format
- Skills listed as searchable text rather than graphics
- No embedded images, charts, or complex graphics
- Consistent formatting throughout the document
- ATS-Friendly PDF: Online job applications, recruiter submissions
- Professional PDF: Networking events, in-person interviews, portfolio presentations
- JSON Resume: Developer tools, automated processing, API integrations
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
Need help? Check the src/portfolio.js file for examples and detailed comments on each configuration option.