A modern, responsive portfolio website built with React, TypeScript, and Tailwind CSS.
- Responsive Design: Works seamlessly on desktop and mobile devices
- Modern Tech Stack: Built with Vite, React, TypeScript, and Tailwind CSS
- Accessibility: WCAG compliant with proper ARIA labels and semantic HTML
- Performance: Optimized bundle with code splitting and lazy loading
- SEO Ready: Meta tags, sitemap, and robots.txt included
- Error Handling: Comprehensive error boundaries for production stability
- Testing: Configured with Vitest and Testing Library
- Framework: React 18 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS + ShadCN UI components
- Icons: Lucide React
- Testing: Vitest + Testing Library
- Linting: ESLint with TypeScript rules
- Node.js (18+ recommended)
- npm or yarn
# Clone the repository
git clone <repository-url>
# Navigate to the project directory
cd rohan-portfolio_v2
# Install dependencies
npm install
# Start the development server
npm run devnpm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
npm run type-check # Run TypeScript type checking
npm run test # Run tests
npm run test:ui # Run tests with UI
npm run test:coverage # Run tests with coverageThe application is ready for deployment to any static hosting service:
- Vercel:
vercel --prod - Netlify: Deploy the
distfolder - GitHub Pages: Use GitHub Actions
- AWS S3: Upload
distfolder to S3 bucket
The production build is optimized with:
- Code splitting for optimal loading
- CSS minification
- Modern ES modules
- Gzip compression ready
src/
├── components/ # Reusable UI components
│ ├── portfolio/ # Portfolio-specific components
│ ├── ui/ # ShadCN UI components
│ └── __tests__/ # Component tests
├── config/ # Configuration files
│ ├── constants.ts # App constants
│ ├── data.ts # Static data
│ └── env.ts # Environment variables
├── hooks/ # Custom React hooks
└── pages/ # Page components
Copy .env.example to .env and configure:
NODE_ENV=development
VITE_BASE_URL=http://localhost:8080
VITE_CONTACT_EMAIL=[email protected]
VITE_ENABLE_ANALYTICS=falseUpdate the following for your deployment:
index.html- Meta tags and canonical URLspublic/sitemap.xml- Site URLspublic/robots.txt- Crawling permissions
- Bundle Size: ~603 kB (optimized with code splitting)
- Lighthouse Score: 95+ (Performance, Accessibility, SEO)
- First Contentful Paint: < 1.5s
- Time to Interactive: < 3s
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.