A modern, responsive portfolio website built with Astro, React islands, shadcn/ui components, and deployed on GitHub Pages.
- ⚡ Static Site Generation with Astro for optimal performance
- 🏝️ React Islands for selective interactivity (Hero animation, Project filtering)
- 🎨 shadcn/ui Components with Tailwind CSS for beautiful UI
- 📱 Fully Responsive design that works on all devices
- 🌐 GitHub Pages Ready with automated deployment
- 📝 Content Collections for easy project management
- ♿ Accessible with WCAG compliant components
- 🔍 SEO Optimized with proper meta tags
Before deploying, update the following with your information:
- Edit
astro.config.mjs- Replace 'username' with your GitHub username - Update site title and description in
src/pages/index.astro - Modify meta tags in
src/layouts/BaseLayout.astro
- Replace "Your Name" with your actual name
- Update roles array with your job titles
- Add your profile image to
public/profile.jpg - Update tech stack badges
- Add your social media links (GitHub, LinkedIn, Email)
- Write your bio/introduction
- Update years of experience
- Adjust project/client numbers
- Update Frontend skills
- Update Backend skills
- Update Tools & DevOps skills
- Update Design skills
- Update Marketing skills
- Update Soft skills
- Replace sample projects with your actual projects
- Add project descriptions
- Include demo and GitHub links
- Add project screenshots to
public/images/projects/
- Update email address
- Add phone number (optional)
- Update location
- Add social media links
- Framework: Astro 5.x
- UI Components: React with TypeScript
- Styling: Tailwind CSS + shadcn/ui
- Animation: Framer Motion
- Icons: Lucide React
- Deployment: GitHub Pages
- Clone the repository:
git clone https://github.com/yourusername/portfolio.git
cd portfolio- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser at
http://localhost:4321
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run check- Run Astro checksnpm run lint- Run TypeScript checks
portfolio/
├── src/
│ ├── components/
│ │ ├── ui/ # shadcn/ui components
│ │ ├── islands/ # React interactive components
│ │ └── sections/ # Page sections
│ ├── content/
│ │ └── projects/ # Project markdown files
│ ├── layouts/
│ │ └── BaseLayout.astro
│ ├── pages/
│ │ └── index.astro
│ ├── styles/
│ │ └── global.css
│ └── lib/
│ └── utils.ts
├── public/
│ └── images/
└── astro.config.mjs
-
Update Configuration:
- Edit
astro.config.mjs - Replace
usernamewith your GitHub username - If using a custom domain, update the
siteURL
- Edit
-
Create GitHub Repository:
git init git add . git commit -m "Initial portfolio setup" git branch -M main git remote add origin https://github.com/yourusername/portfolio.git git push -u origin main
-
Enable GitHub Pages:
- Go to Settings → Pages in your repository
- Under "Build and deployment", select "GitHub Actions"
- The workflow will automatically deploy on push to main
-
Access Your Site:
- Your site will be available at
https://yourusername.github.io/portfolio - First deployment may take a few minutes
- Your site will be available at
Edit CSS variables in src/styles/global.css to change the color scheme.
Update font imports in src/layouts/BaseLayout.astro.
All UI components are in src/components/ui/ and can be customized.
- Create a new markdown file in
src/content/projects/ - Follow the frontmatter schema defined in
src/content/config.ts - Add project images to
public/images/projects/ - The project will automatically appear in your portfolio
Feel free to fork this project and customize it for your own portfolio!
This project is open source and available under the MIT License.