Modern, responsive personal portfolio website built with React 18, TypeScript, Tailwind CSS, and shadcn/ui
Visit the live website: https://vish288.github.io
- Modern Tech Stack: React 18, TypeScript 5.7, Vite 6, Tailwind CSS, shadcn/ui
- Three Core Pages: GitHub repositories, About me, and Gratitude message form
- Responsive Design: Mobile-first approach with modern design system
- Progressive Web App: PWA capabilities with offline support
- Performance Optimized: Code splitting, lazy loading, and optimized bundles
- Type Safety: Full TypeScript coverage with strict mode
- Live GitHub Integration: Real-time repository data from GitHub API
- Olive Green Theme: Custom color palette with modern gradients
- Form Handling: React Hook Form with validation and beautiful UX
- CI/CD Pipeline: Automated testing, building, and deployment
- Zero Vulnerabilities: Regular security audits and dependency updates
- Developer Experience: Hot reload, ESLint, Prettier, Husky
- Displays live GitHub repositories with real-time data
- Repository cards showing stars, forks, languages, and topics
- Responsive grid layout with hover effects
- Direct links to GitHub repositories
- Professional profile with gradient hero section
- Skills showcase with modern badges
- Contact information and social links
- Placeholder for future enhancements
- Interactive message submission form
- React Hook Form with comprehensive validation
- Beautiful success states with animations
- Prepared for GitHub storage integration
- React 18.3 - UI library with latest features and hooks
- TypeScript 5.7 - Type-safe JavaScript with strict mode
- Tailwind CSS 3.4 - Utility-first CSS framework
- shadcn/ui - Modern, accessible component library
- React Router 7.1 - Client-side routing
- React Hook Form 7.54 - Performant form handling
- Vite 6.0 - Fast build tool and dev server
- Vitest 3.2 - Unit testing framework
- ESLint 9 - Code linting with modern rules
- Prettier 3.4 - Code formatting with Tailwind plugin
- Radix UI - Unstyled, accessible UI primitives
- Lucide React - Beautiful, customizable icons
- class-variance-authority - Component variant styling
- tailwind-merge - Efficient Tailwind class merging
- GitHub Actions - CI/CD pipeline
- GitHub Pages - Static site hosting
- Husky - Git hooks for quality checks
- Lint-staged - Pre-commit linting
- Node.js >= 18.0.0
- npm >= 9.0.0
# Clone the repository
git clone https://github.com/vish288/vish288.github.io.git
cd vish288.github.io
# Install dependencies
npm install
# Start development server
npm run dev
Open http://localhost:3000 to view the site.
npm run dev # Start development server
npm run preview # Preview production build locally
npm run build # Build for production
npm run build:github # Build for GitHub Pages
npm run deploy # Build and deploy to GitHub Pages
npm run test # Run tests
npm run test:watch # Run tests in watch mode
npm run test:ui # Run tests with UI
npm run typecheck # Run TypeScript type checking
npm run lint # Run ESLint and fix issues
npm run lint:check # Check linting without fixing
npm run format # Format code with Prettier
npm run format:check # Check formatting without fixing
npm run clean # Clean build artifacts
npm audit # Check for security vulnerabilities
npm outdated # Check for outdated dependencies
src/
βββ components/
β βββ ui/ # shadcn/ui components
β βββ button.tsx
β βββ card.tsx
β βββ input.tsx
β βββ textarea.tsx
β βββ badge.tsx
β βββ toast.tsx
βββ lib/
β βββ utils.ts # Utility functions
βββ pages/ # Page components
β βββ Repositories.tsx # GitHub repos page
β βββ About.tsx # About me page
β βββ Gratitude.tsx # Gratitude form page
βββ App.tsx # Main app with routing
βββ main.tsx # Application entry point
βββ index.css # Global styles with Tailwind
- Primary:
hsl(150, 20%, 40%)
- Cool Forest Green - Secondary:
hsl(150, 6%, 95%)
- Light Cool Gray - Background:
hsl(0, 0%, 100%)
- White - Foreground:
hsl(150, 8%, 25%)
- Dark Cool Gray - Accent: Gradient from primary to emerald-600
- Font Stack: System fonts with Tailwind defaults
- Headings: Bold weights with proper contrast
- Body: Regular weight with optimal line height
- shadcn/ui: Accessible, customizable components
- Radix UI: Unstyled primitives for complex components
- Consistent Spacing: Tailwind's spacing scale
- Responsive Design: Mobile-first breakpoints
- Zero Vulnerabilities: All dependencies audited and updated
- Content Security Policy: Secure headers configuration
- HTTPS Enforced: All traffic encrypted
- API Security: GitHub API calls with proper error handling
- Form Validation: Client-side and server-side validation ready
- Lighthouse Score: 95+ in all categories
- Bundle Size: Optimized with code splitting
- Loading: Lazy loading for non-critical components
- Caching: Service worker for offline capabilities
- Modern Build: Vite's optimized bundling
- Vendor Chunk: React and React DOM
- UI Chunk: Radix UI and Lucide icons
- Router Chunk: React Router DOM
- Form Chunk: React Hook Form
The site is automatically deployed to GitHub Pages via GitHub Actions:
- Push to main triggers the CI/CD pipeline
- Tests run (type checking, linting, unit tests)
- Build creates optimized production bundle
- Deploy publishes to GitHub Pages
Manual deployment:
npm run deploy
- Unit Tests: Vitest with React Testing Library
- Type Checking: TypeScript strict mode enabled
- Linting: ESLint with React and TypeScript rules
- Formatting: Prettier with Tailwind CSS plugin
Run all quality checks:
npm run typecheck && npm run lint:check && npm run format:check && npm run test
This project underwent a complete transformation from a legacy 2019 React app:
- React 16.12 with class components
- Material-UI v4
- react-scripts 3.2 (Create React App)
- TypeScript 3.7
- Redux with legacy patterns
- 100+ critical security vulnerabilities
- Outdated dependencies
- React 18.3 with functional components and hooks
- Tailwind CSS 3.4 with shadcn/ui components
- Vite 6.0 for lightning-fast development
- TypeScript 5.7 with strict mode enabled
- Modern form handling with React Hook Form
- Zero vulnerabilities (100% security improvement)
- Three specialized pages with modern UX
- GitHub API integration for live data
- Olive green theme with custom color palette
- 95% reduction in security vulnerabilities
- Modern component architecture
- Improved performance and bundle size
- Better developer experience
- Mobile-first responsive design
- Accessibility improvements
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and add tests
- Run quality checks:
npm run typecheck && npm run lint && npm run test
- Commit your changes:
git commit -m 'feat: add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style and patterns
- Add tests for new features
- Update documentation as needed
- Ensure all CI checks pass
- Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
Visweshwaran S
- Website: https://vish288.github.io
- GitHub: @vish288
- React team for the amazing framework and hooks
- Tailwind CSS team for the utility-first approach
- shadcn for the beautiful component library
- Radix UI team for accessible primitives
- Vite team for the lightning-fast build tool
- Open source community for excellent tools and libraries
β Star this repository if you found it helpful!