A modern, responsive personal portfolio website built with React and TypeScript, featuring contact form integration, Firebase backend, and Google Analytics tracking.
- React (v18.2) with TypeScript - UI framework
- Create React App - Build tooling
- Chakra UI - Component library & styling
- Firebase - Backend services
- Firestore - Database for projects
- Hosting - Deployment platform
- Analytics - User tracking
- EmailJS - Contact form email delivery
- Framer Motion - Animations
- Formik + Yup - Form handling & validation
- Jest & React Testing Library - Unit & integration tests
- GitHub Actions - Automated deployment
- MSW - API mocking for tests
- โจ Modern, responsive design with glassmorphism effects
- ๐ง Contact form with EmailJS integration & fallback mechanisms
- ๐๏ธ Dynamic projects section powered by Firestore
- ๐ Google Analytics integration
- ๐ Environment-based configuration
- โ Comprehensive test coverage
- ๐ Automated CI/CD pipeline
- Node.js (v20+)
- npm or yarn
- Firebase account
- EmailJS account (for contact form)
# Clone the repository
git clone <your-repo-url>
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your credentials
# Start development server
npm startVisit http://localhost:3000 to view the app.
| Command | Description |
|---|---|
npm start |
Start development server at localhost:3000 |
npm test |
Run tests in watch mode |
npm run test:ci |
Run tests with coverage for CI |
npm run build |
Build production bundle |
npm run format |
Format code with Prettier |
This project requires environment variables for external services. See detailed setup in:
- Quick setup:
SETUP_CHECKLIST.md - Detailed guide:
ENVIRONMENT_SETUP.md
Required variables:
- EmailJS configuration (3 variables)
- Firebase configuration (7 variables)
- Create a Firebase project at Firebase Console
- Enable Firestore Database
- Create a
projectscollection - Add Firebase config to your
.envfile
- Create account at EmailJS.com
- Set up email service (Gmail, Outlook, etc.)
- Create email template
- Add credentials to
.envfile
src/
โโโ components/ # React components
โ โโโ Header.tsx
โ โโโ LandingSection.tsx
โ โโโ ProjectsSection.tsx
โ โโโ ContactMeSection.tsx
โ โโโ ...
โโโ services/ # External integrations
โ โโโ emailService.ts # EmailJS integration
โ โโโ projectsService.ts # Firebase Firestore
โโโ context/ # React context providers
โ โโโ alertContext.tsx
โโโ hooks/ # Custom React hooks
โโโ config/ # Configuration files
โ โโโ firebase.ts # Firebase setup
โโโ __tests__/ # Test files
# Run tests in watch mode
npm test
# Run tests with coverage
npm run test:coverage
# Run tests for CI (non-interactive)
npm run test:ci# Build the project
npm run build
# Deploy to Firebase
firebase deployThe project includes GitHub Actions workflows for automated deployment:
- Push to
master/mainโ Automatically builds and deploys - Pull requests โ Preview deployment
Setup required:
- Add GitHub secrets (see
SETUP_CHECKLIST.md)- 10 environment variable secrets (EmailJS + Firebase config)
- 1 Firebase service account secret:
FIREBASE_SERVICE_ACCOUNT_[YOUR_PROJECT_ID]
- Push to trigger deployment
See .github/workflows/deploy.yml for workflow details.
The contact form includes:
- โ Real-time validation
- ๐ง EmailJS integration for sending emails
- ๐ Smart fallback mechanisms:
- Opens email client if EmailJS fails
- Copies to clipboard as final fallback
- ๐ฑ Responsive design
- โณ Loading states and notifications
Projects are stored in Firebase Firestore and can be:
- โ๏ธ Edited without code changes
- ๐ Ordered by priority
- ๐ผ๏ธ Include images and links
- ๐ท๏ธ Tagged with technologies
Firestore collection: projects
Document structure:
{
title: string;
description: string;
imageSrc: string;
url: string;
tech: string[];
order: number;
}- Firebase API keys are public by design (security via Firestore rules)
- EmailJS public keys are safe for client-side use
- Never commit
.envfiles - GitHub secrets are encrypted and injected at build time
- Service account keys should never be in frontend code
- Setup Guide:
ENVIRONMENT_SETUP.md - Quick Checklist:
SETUP_CHECKLIST.md - EmailJS Setup:
EMAILJS_SETUP.md - Firebase Setup:
FIREBASE_SETUP.md
- Create React App Documentation
- React Documentation
- Chakra UI Components
- Firebase Documentation
- EmailJS Documentation
- Glassmorphism design effects
- Smooth scroll animations
- Responsive navigation
- Dark theme optimized
- Accessible components (Chakra UI)
- Blog section with CMS
- Project filtering by technology
- Dark/light mode toggle
- Multi-language support
- Enhanced analytics dashboard
- PDF resume download
This project is for personal use and portfolio demonstration.
Built with โค๏ธ using React, TypeScript, and Firebase