A full-stack personal portfolio showcasing my projects, skills, and interests — built with modern web technologies and deployed to production.
🌐 Live Site:
https://my-portfolio-nine-chi-cm2sfdh0gx.vercel.app
- React (Vite)
- Tailwind CSS
- React Router
- Deployed on Vercel
- FastAPI
- Pydantic
- REST APIs
- Deployed on Render
- Responsive, minimal UI
- Project showcase with detailed descriptions
- Contact form with backend validation
- Live deployment (frontend + backend)
- Environment-based configuration (local vs production)
my-portfolio/ ├── client/ # React + Vite frontend │ ├── src/ │ ├── public/ │ └── vite.config.js │ ├── server/ # FastAPI backend │ ├── main.py │ ├── requirements.txt │ └── render_start.sh │ └── README.md
yaml Copy code
git clone https://github.com/AdarshAlex751/My_Portfolio.git
cd My_Portfolio
2️⃣ Backend setup (FastAPI)
cd server
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python -m uvicorn main:app --reload --port 8000
Backend will run at:
cpp
Copy code
http://127.0.0.1:8000
3️⃣ Frontend setup (React)
cd client
npm install
npm run dev
Frontend will run at:
http://localhost:5173
4️⃣ Environment Variables
Create a .env file inside client/:
VITE_API_BASE=http://127.0.0.1:8000
For production, this variable is set in Vercel to point to the Render backend.
Deployment
Frontend (Vercel)
Root directory: client
Build command: npm run build
Output directory: dist
Environment variable:
VITE_API_BASE=https://my-portfolio-ed4q.onrender.com
Backend (Render)
Root directory: server
Build command:
pip install -r requirements.txt
Start command:
bash render_start.shThe contact form:
Sends validated data to the FastAPI backend
Uses CORS-restricted production endpoints
Prints messages to server logs (can be extended to email or DB)
Email notifications for contact submissions
Database-backed message storage
Admin dashboard
Custom domain
Analytics