My very own portfolio website.
- ⚡️ Blazing fast with Vite
- 🎨 Styled with Tailwind CSS
- 🧩 Modular React components
- 🛠️ TypeScript for type safety
- ✨ Modern UI with shadcn-ui
- 📅 Cal.com booking (Book a Free Call)
- Clone the repository:
git clone <YOUR_GIT_URL> cd <YOUR_PROJECT_NAME>
- Install dependencies:
npm install
- Start the development server:
npm run dev
npm run build- React
- TypeScript
- Vite
- Tailwind CSS
- shadcn-ui
- lucide-react
Feel free to fork, star, or contribute! Don't forget to follow me as well.
The site uses a Cal.com embed for booking calls (see src/components/BookCall.tsx). No extra env vars are required—just ensure the link in the button points to your Cal.com username. The current link is anshgrover/meeting.
To display the GitHub contribution graph you need to provide the following environment variables:
GRAPHQL_TOKEN=your_personal_access_token
NEXT_PUBLIC_GITHUB_USERNAME=your_github_username # optional, defaults to Anshgrover23GRAPHQL_TOKENmust be a GitHub personal access token with theread:userscope (classic tokens work as well). It is used on the server to query the GraphQL API.NEXT_PUBLIC_GITHUB_USERNAMElets you override the username shown in the activity header while keeping the token private.
GEMINI_API_KEY=your_gemini_api_key
NEXT_PUBLIC_HOST_URL=host_url_of_environment
Uses Gemini 2.5 Flash with portfolio context. Get your key from Google AI Studio.
Add these environment variables in your hosting platform (Vercel, Netlify, etc.):
Required:
GEMINI_API_KEY- For chatbot functionalityGRAPHQL_TOKEN- For GitHub activity graphNEXT_PUBLIC_HOST_URL- For Sharing Blog URL
Optional:
NEXT_PUBLIC_GITHUB_USERNAME- Override GitHub username (defaults to Anshgrover23)
Add testimonials from Twitter, Discord, or GitHub in src/data/testimonials.ts:
Twitter: Copy tweet URL → Use https://unavatar.io/twitter/username for image
Discord: Right-click message → Copy message link
GitHub: Click comment timestamp → Copy permalink → Use https://github.com/username.png for image