A: Yes, it's built with Vue 3 using the Composition API. The build tool is Vite.
A: Yes! This project is MIT licensed. You can fork it and customize it for your own use. Just please give credit by keeping a link to the original or mentioning the inspiration.
A: Edit CSS variables in src/style.css:
:root {
--accent: #fbbf24; /* Change this to your brand color */
--bg-primary: #0d0d0d; /* Background color */
--text-primary: #ffffff; /* Text color */
}A: Yes! It's fully responsive and works on all devices - mobile, tablet, and desktop. It has 6 breakpoints to ensure optimal viewing on any screen size.
A: Edit src/data/projects.js and add your project:
{
title: 'Your Project Name',
description: 'Brief description of the project.',
tech: ['Technology1', 'Technology2', 'Technology3'],
link: 'https://your-project-url.com',
icon: 'icon-name',
color: '#hexcolor'
}A: Edit src/data/skills.js and add to the appropriate category:
{
name: 'Category Name',
icon: 'icon-name',
color: '#hexcolor',
skills: ['Skill1', 'Skill2', 'Skill3']
}A: Replace /public/lakshman.jpg with your own image. Keep the same filename or update the reference in HeroSection.vue.
A: Edit src/sections/ContactSection.vue and update the contactItems array with your links.
A: Yes, but it requires additional setup:
- Create a new view:
src/views/BlogView.vue - Add blog posts data file:
src/data/blogs.js - Add route in
src/router/index.js - Add navigation link in
NavBar.vue
A: See DEPLOYMENT.md for detailed instructions. Quick steps:
- Push to GitHub
- Import project on Vercel
- Auto-deploy on every push
A: In Vercel dashboard:
- Go to Project Settings → Domains
- Add your domain
- Update DNS records as instructed
- SSL certificate is auto-provisioned
A:
- Check build logs on Vercel
- Run
npm run buildlocally to see errors - Common issues:
- Missing dependencies: Run
npm install - Lint errors: Run
npm run lint:check - Type errors: Run
npm run typecheck
- Missing dependencies: Run
A: HTTPS is automatically enabled on Vercel. For other platforms, you may need to configure SSL certificates manually.
A: Check these:
- Image sizes - Compress images, use WebP format
- Bundle size - Run
npm run buildand check output - Third-party scripts - Remove unused scripts
- Font loading - Use
font-display: swap
A:
- Use
loading="lazy"on images below the fold - Compress images before adding to
/public - Remove unused code and dependencies
- Enable gzip/brotli compression (usually auto on Vercel)
A: The portfolio is optimized for:
- Performance: 90-100
- Accessibility: 95-100
- Best Practices: 95-100
- SEO: 90-100
Run your own audit in Chrome DevTools → Lighthouse.
A: You can:
- Use CSS animations (recommended for simple effects)
- Use Vue transitions
- Install GSAP for complex animations
A: This requires:
- Add a toggle button in the navbar
- Use CSS variables for theming
- Store preference in localStorage
- Toggle class on
<html>element
Example implementation:
const isDark = ref(localStorage.getItem('theme') === 'dark')
const toggleTheme = () => {
isDark.value = !isDark.value
document.documentElement.classList.toggle('dark', isDark.value)
localStorage.setItem('theme', isDark.value ? 'dark' : 'light')
}A: Add this to index.html head:
<!-- Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=YOUR_GA_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'YOUR_GA_ID');
</script>Or use privacy-focused alternatives like Plausible or Fathom.
A: Options:
- Netlify Forms - If using Netlify
- Formspree -
<form action="https://formspree.io/f/YOUR_ID" method="POST"> - Getform
- Custom backend - Build your own API
A:
- Check image path (case-sensitive on Linux)
- Ensure images are in
/publicfolder - Use relative paths:
/image.jpgnot../image.jpg
A:
- Check font URL is correct
- Use
font-display: swapto prevent FOIT - Preload critical fonts in
index.html
A:
- Configure SPA fallback on your hosting platform
- Vercel: Auto-configured
- Netlify: Add
_redirectsfile with/* /index.html 200
A:
rm -rf node_modules package-lock.json
npm install- Open an issue on GitHub
- Email: lakshmanp230@gmail.com
- Check SETUP.md for development setup
- Check ARCHITECTURE.md for technical details