This is a personal portfolio website built with React, TypeScript, and Material-UI. It showcases the developer's skills, work experience, and projects.
- Responsive design with Material-UI
- Dark/Light mode theme toggle
- Internationalization (English and German)
- Smooth animations using Framer Motion
- Sections for:
- About Me with experience highlights
- Interactive Tech Stack showcase
- Work Timeline
- Projects Portfolio
- Contact Form with EmailJS integration
- React 18
- TypeScript
- Material-UI (MUI) v6
- Firebase (Auth, Hosting, Firestore)
- Framer Motion for animations
- i18next for internationalization
- Rsbuild for building and development
- ESLint & Prettier for code quality
- EmailJS for contact form
src/
├── components/
│ ├── layout/ # Layout components
│ │ ├── components/
│ │ ├── context/
│ │ ├── styles/
│ │ └── types/
│ └── sections/ # Feature-based sections
│ ├── aboutMe/
│ ├── contactForm/
│ │ ├── components/
│ │ ├── constants/
│ │ ├── context/
│ │ ├── styles/
│ │ ├── types/
│ │ └── index.ts
│ ├── notFound/
│ ├── projectsOverview/
│ ├── techStack/
│ └── workTimeline/
├── config/ # App configuration
├── contexts/ # React contexts
├── hooks/ # Custom hooks
├── locales/ # i18n translations
├── resources/ # Static resources
│ ├── icons/
│ └── images/
├── styles/ # Global styles
│ ├── animations.ts
│ └── theme.ts
├── types/ # Global TypeScript types
├── utils/ # Utility functions
└── App.tsx # Root component
-
Clone the repository:
git clone https://github.com/ibhf13/portfolio.git
-
Install dependencies:
npm install
-
Set up Firebase:
- Create a Firebase project
- Enable Authentication and Firestore
- Add your Firebase config to the project
-
Start the development server:
npm run dev
npm run dev: Start development servernpm run build: Build for productionnpm run preview: Preview production buildnpm run lint: Run ESLintnpm run lint:fix: Fix ESLint issuesnpm run format: Format with Prettiernpm run deploy: Build and deploy to Firebase
This project is configured for deployment on Firebase Hosting.
-
Install Firebase CLI if not already installed:
npm install -g firebase-tools
-
Login to Firebase:
firebase login
-
Initialize Firebase (first time only):
firebase init
-
Deploy to Firebase:
npm run deploy
The project supports English and German languages. Language files are located in src/locales/.
To add or modify translations, edit:
English.jsonDeutsch.json
The useTranslation hook from src/hooks/useCustomTranslation.ts is used to access translations throughout the application.
- ESLint configuration for TypeScript and React
- Prettier for consistent code formatting
- Strict TypeScript configuration
- Git hooks for pre-commit checks