A modern, interactive portfolio website built with React, featuring AI-powered chatbot, blog integration, games, and more.
- AI-Powered Chatbot: Interactive assistant powered by Google's Gemini AI to answer questions about experience and skills
- Blog Integration: Automatically syncs posts from Dev.to, Medium, and Substack
- Interactive Games: Includes Tic Tac Toe with AI and classic Snake game
- Code Playground: Live code editor with syntax highlighting
- Responsive Design: Fully responsive with Neubrutalism and Glassmorphism design systems
- Performance Optimized: Code splitting, lazy loading, and optimized builds
- Frontend: React 18 with React Router
- Styling: Tailwind CSS with custom design tokens
- Build Tool: Vite
- AI Integration: Google Gemini API
- Animation: Framer Motion
- Code Highlighting: Prism.js
- Markdown: React Markdown
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Lint code
npm run lintCreate a .env file based on .env.example:
VITE_GEMINI_API_KEY=your_gemini_api_key_herenpm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm run lint:fix- Run ESLint with auto-fixnpm run format- Format all code with Prettiernpm run format:check- Check if code is formatted correctlynpm run test:security- Run security testsnode scripts/sync-blogs.js- Sync blog posts from external platforms
This project uses ESLint and Prettier for code quality and consistency:
- ESLint: Configured for React 18 with modern JavaScript (ES2020+)
- Prettier: Enforces consistent code formatting across all files
- Pre-commit: Code is automatically linted and formatted
Configuration files:
eslint.config.js- ESLint v9 configuration.prettierrc.json- Prettier configuration.prettierignore- Files to exclude from formatting
├── src/
│ ├── components/ # React components
│ │ ├── games/ # Game components
│ │ ├── home/ # Home page components
│ │ ├── layout/ # Layout components
│ │ ├── pages/ # Page components
│ │ └── shared/ # Shared/reusable components
│ ├── data/ # Static data and content
│ ├── services/ # API and service integrations
│ ├── utils/ # Utility functions
│ ├── App.jsx # Main app component
│ ├── main.jsx # App entry point
│ └── index.css # Global styles
├── scripts/ # Build and utility scripts
├── public/ # Static assets
└── ...config files # Configuration files
Bold, high-contrast design with thick borders and offset shadows for a playful, brutalist aesthetic.
Frosted glass effect with blur and transparency, providing a modern look in dark mode.
- XSS prevention with safe JSON stringification
- URL validation to prevent javascript: protocol attacks
- Input validation and sanitization
- Rate limiting on API requests
- Content Security Policy
This is a personal portfolio project. Feel free to fork and use as inspiration for your own portfolio!
© 2024 Rishabh Agrawal. All rights reserved.
- GitHub: @saint2706
- Portfolio: saint2706.github.io
Built with ❤️ and lots of ☕