A modern, responsive portfolio website built with React, TypeScript, and Tailwind CSS.
- 🎨 Modern, minimalist design
- 🌙 Multiple theme modes (Light, Dark, Reader, Debug)
- 📱 Fully responsive design
- 🔄 Real-time news integration
- 🌤️ Weather widget
- 📸 Interactive gallery
- 📅 Timeline of achievements
- 🎯 Project showcase
- Node.js 18 or higher
- npm or yarn
-
Clone the repository
-
Install dependencies:
npm install
-
Create a
.envfile based on.env.example:cp .env.example .env
-
Add your API keys to the
.envfile:- Get a News API key from newsapi.org
- Get a Weather API key from weatherapi.com
- Get a Finnhub API key from finnhub.io for stock data
-
Start the development server:
npm run dev
npm run build- Connect your repository to Netlify
- Set build command:
npm run build - Set publish directory:
dist - Add environment variables in Netlify dashboard:
VITE_NEWS_API_KEYVITE_WEATHER_API_KEYVITE_FINNHUB_API_KEYVITE_NEWS_API_URL(optional)VITE_WEATHER_API_URL(optional)
| Variable | Description | Required |
|---|---|---|
VITE_NEWS_API_KEY |
News API key from newsapi.org | Yes |
VITE_WEATHER_API_KEY |
Weather API key from weatherapi.com | Yes |
VITE_FINNHUB_API_KEY |
Finnhub API key from finnhub.io | Yes |
VITE_NEWS_API_URL |
News API base URL | No |
VITE_WEATHER_API_URL |
Weather API base URL | No |
VITE_APP_URL |
Your deployed app URL | No |
- Provider: NewsAPI.org
- Free tier: 1000 requests/day
- Used for: Latest news section
- Provider: WeatherAPI.com
- Free tier: 1 million calls/month
- Used for: Weather widget in clock component
- Provider: Finnhub.io
- Free tier: 60 API calls/minute
- Used for: Real-time stock data in ticker component
- CORS Errors: Make sure you're using the correct API endpoints and have valid API keys
- Rate Limiting: Check if you've exceeded your API quotas
- Network Errors: Verify your internet connection and API service status
- Environment Variables: Ensure all required environment variables are set
- Dependencies: Run
npm installto ensure all dependencies are installed - TypeScript Errors: Run
npm run lintto check for type errors
MIT License - see LICENSE file for details