A modern, responsive personal portfolio website built with React, TypeScript, and TailwindCSS.
- Responsive Design: Looks great on all devices - mobile, tablet, and desktop
- Dark Mode UI: Elegant dark theme for a modern look
- Dynamic Data: Fetches real-time data from GitHub and other sources
- Project Showcase: Displays your projects with details and links
- Skills Section: Visual representation of your technical skills
- Contact Form: Working contact form for visitor inquiries
- Performance Optimized: Fast loading and smooth animations
- SEO Ready: Built with search engine optimization in mind
- Quick Start
- Project Structure
- Technologies Used
- Customization
- Data Integration
- Deployment
- Contributing
- License
- Node.js (v14+)
- npm or yarn
- Clone the repository:
git clone https://github.com/ant3869/portfolio.git
cd portfolio
- Install dependencies:
npm install
# or
yarn install
- Create a
.env
file in the root directory:
REACT_APP_GITHUB_USERNAME=your_github_username
REACT_APP_FORMSPREE_ID=your_formspree_id
- Start the development server:
npm start
# or
yarn start
- Open http://localhost:3000 to view it in the browser.
portfolio/
βββ public/ # Public assets
β βββ icons/ # Icon SVGs
β βββ images/ # Image assets
β βββ projects/ # Project screenshots
βββ src/ # Source code
β βββ components/ # UI components
β β βββ About.tsx
β β βββ Contact.tsx
β β βββ Hero.tsx
β β βββ Projects.tsx
β β βββ Skills.tsx
β β βββ ...
β βββ context/ # React Context API
β β βββ DataContext.tsx
β βββ hooks/ # Custom React hooks
β β βββ useGithubData.ts
β βββ services/ # API services
β β βββ github.ts
β β βββ formspree.ts
β βββ types/ # TypeScript types
β β βββ index.ts
β βββ utils/ # Utility functions
β β βββ skillsExtractor.ts
β βββ App.tsx # Main App component
β βββ index.tsx # Entry point
βββ .env # Environment variables
βββ package.json # Dependencies and scripts
βββ tailwind.config.js # TailwindCSS configuration
βββ tsconfig.json # TypeScript configuration
- Frontend Framework: React
- Type System: TypeScript
- Styling: TailwindCSS
- Data Fetching: Axios
- Form Handling: Formspree
- Animations: Framer Motion
- Icons: Hero Icons
- Deployment: Vercel/GitHub Pages
Update your personal information in the .env
file or directly modify the src/data/personal.ts
file:
// src/data/personal.ts
export const personalInfo = {
name: "Your Name",
role: "Your Job Title",
bio: "Your short biography",
// Additional info...
};
By default, projects are fetched from your GitHub repositories. You can manually add projects by modifying:
// src/data/projects.ts
export const additionalProjects = [
{
id: 'custom-project-1',
title: 'Custom Project',
description: 'Description of your custom project',
image: '/projects/custom-project.png',
tags: ['React', 'TypeScript'],
sourceCode: 'https://github.com/yourusername/project',
liveDemo: 'https://project-demo.com'
},
// More projects...
];
This project uses TailwindCSS for styling. You can customize colors, fonts, and other design elements in the tailwind.config.js
file:
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
primary: {
light: '#4F46E5',
DEFAULT: '#4338CA',
dark: '#3730A3',
},
// Other custom colors...
},
// Add custom fonts, sizes, etc.
},
},
// ...
};
This portfolio is designed to fetch and display real data from:
- GitHub API: Projects, skills (based on repository languages), and profile information
- Formspree: For the contact form functionality
- DEV.TO API (optional): For displaying blog posts
You can replace these with your own data sources or use static data if preferred.
By default, the portfolio fetches data from your GitHub profile. Set your GitHub username in the .env
file:
REACT_APP_GITHUB_USERNAME=your_github_username
The contact form uses Formspree. Create a form at formspree.io and add your form ID to the .env
file:
REACT_APP_FORMSPREE_ID=your_formspree_id
- Update the
homepage
inpackage.json
:
"homepage": "https://yourusername.github.io/portfolio"
- Deploy:
npm run deploy
- Install Vercel CLI:
npm install -g vercel
- Deploy:
vercel
Contributions are welcome! Feel free to open issues or submit pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the 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.
If you have any questions or feedback, feel free to reach out:
- GitHub: @ant3869
- Email: your.email@example.com
- Website: your-website.com