A modern, interactive CV website built with React and Vite, featuring dark mode design, smooth animations, and deployable to GitHub Pages.
- 🎨 Dark Mode Design - Sleek, professional dark theme
- ✨ Smooth Animations - Scroll-reveal animations and transitions
- 📱 Responsive - Mobile-first, works on all devices
- 🔄 Interactive Timeline - Expandable work experience and education
- 🏷️ Filterable Projects - Filter projects by technology
- 🎯 Expandable Sections - Collapsible content sections
- 🤖 AI Attribution - Very subtle AI credit indicator
- Node.js (v18 or higher)
- npm or yarn
- Git
- Clone the repository:
git clone <your-repo-url>
cd cv- Install dependencies:
npm install- Start the development server:
npm run dev- Open http://localhost:5173 in your browser
- Open
src/data/cvData.js - Fill in your information:
- About: Name, title, summary, contact info
- Experience: Work history with achievements
- Education: Educational background
- Skills: Categorized skills (languages, frameworks, tools, other)
- Projects: Portfolio projects with technologies
- Certifications: Professional certifications (optional)
export const cvData = {
about: {
name: "Your Name",
title: "Software Engineer",
summary: "Your professional summary...",
location: "City, Country",
email: "your.email@example.com",
linkedin: "https://linkedin.com/in/yourprofile",
github: "https://github.com/yourusername",
},
experience: [
{
id: 1,
company: "Company Name",
position: "Job Title",
location: "City, Country",
startDate: "2020-01",
endDate: "2023-12", // or "Present"
description: "Job description",
achievements: [
"Achievement 1",
"Achievement 2",
],
technologies: ["React", "Node.js", "TypeScript"],
}
],
// ... more sections
};You can use the LinkedIn parser utility to import your LinkedIn export:
- Export your LinkedIn data from LinkedIn settings
- Use
src/utils/linkedinParser.jsto parse the data - Update
cvData.jswith the parsed data
npm run buildThe built files will be in the dist/ directory.
Preview the production build:
npm run preview-
Create GitHub Repository
- Create a new repository on GitHub
- Push your code to the
mainbranch
-
Configure GitHub Pages
- Go to repository Settings → Pages
- Source: Select "GitHub Actions"
- The workflow will automatically deploy on push to
main
-
Update Base Path (if needed)
- If your repository name is not
cv, updatebaseinvite.config.js:
base: '/your-repo-name/',
- If your repository name is not
-
Custom Domain Setup (Optional)
- Create
public/CNAMEfile with your subdomain:
cv.yourdomain.com- In Squarespace DNS settings, add:
- Type: CNAME
- Host: cv (or your subdomain)
- Points to:
username.github.io
- Or use A records pointing to GitHub Pages IPs:
- 185.199.108.153
- 185.199.109.153
- 185.199.110.153
- 185.199.111.153
- Create
Once set up, every push to the main branch will automatically:
- Build the site
- Deploy to GitHub Pages
- Update your live site in 1-2 minutes
cv/
├── public/ # Static assets
├── src/
│ ├── components/ # React components
│ │ ├── Header.jsx
│ │ ├── About.jsx
│ │ ├── Experience.jsx
│ │ ├── Education.jsx
│ │ ├── Skills.jsx
│ │ ├── Projects.jsx
│ │ ├── Contact.jsx
│ │ ├── Timeline.jsx
│ │ ├── ExpandableSection.jsx
│ │ ├── FilterableGrid.jsx
│ │ └── AICredit.jsx
│ ├── styles/ # CSS files
│ │ ├── theme.css
│ │ ├── animations.css
│ │ └── global.css
│ ├── utils/ # Utility functions
│ │ ├── animations.js
│ │ └── linkedinParser.js
│ ├── data/ # CV data
│ │ └── cvData.js
│ ├── App.jsx
│ └── main.jsx
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions workflow
├── vite.config.js
└── package.json
Edit src/styles/theme.css to customize the color scheme:
:root {
--bg-primary: #0a0a0a;
--accent-primary: #6366f1;
/* ... more variables */
}Modify animation timings in src/styles/animations.css or adjust transition speeds in theme.css.
Components are modular - edit individual component files in src/components/ to customize layout and behavior.
- React - UI library
- Vite - Build tool
- CSS3 - Styling with custom properties
- GitHub Actions - CI/CD
- GitHub Pages - Hosting
This project is open source and available for personal use.
Built with AI assistance - see the subtle indicator in the bottom-right corner.