This is a Portfolio Application built using React, TypeScript, and Vite. The project showcases various projects, skills, and experiences, acting as a personal portfolio for Kerolos.
- Project Showcase: List and showcase projects with details, screenshots, and links to repositories or live demos.
- Skills Overview: Present key skills with proficiency levels.
- Contact Form: A contact form integrated with email notifications.
- Interactive Charts: Display data such as skills and project statistics through dynamic charts.
- Mobile Friendly: Responsive design for all screen sizes.
- Frontend: React, TypeScript, Vite, Zustand
- UI Components: Material UI
- Forms: React Hook Form, Zod for validation
- Charts: React-Chartjs-2
- Date Handling: date-fns
- State Management: Zustand
- API Calls: Axios
- Routing: React Router Dom
- Notifications: React-Toastify
To run this project locally, follow these steps:
-
Clone the repository:
git clone https://github.com/Kerolos2000/kerolos_portfolio
-
Navigate to the project folder:
cd kerolos_portfolio
-
Install the dependencies:
yarn install
To start the development server, run:
yarn dev
This will start the app at http://localhost:5173
.
To create an optimized production build, run:
yarn build
The production-ready files will be in the dist
folder.
You can also preview the production build locally by running:
yarn preview
This will serve the build at http://localhost:5173
.
This project uses custom ESLint and Prettier configurations to maintain code quality and consistency.
-
Lint the project:
yarn lint
-
Fix lint issues:
yarn lint --fix
-
Format the code:
yarn format
The folder structure of the project is organized as follows:
kerolos_portfolio/
├── public/ # Static public assets (index.html, favicon, etc.)
├── src/
│ ├── assets/ # Images and static assets
│ ├── components/ # Reusable components (e.g., buttons, headers)
│ ├── features/ # Feature-specific modules (e.g., project showcase, skills)
│ ├── hooks/ # Custom hooks
│ ├── layouts/ # Layout components
│ ├── pages/ # Pages for routing (e.g., Home, Projects, Contact)
│ ├── services/ # API calls and external services
│ ├── store/ # Zustand store for state management
│ └── utils/ # Utility functions and helpers
├── .eslintrc.json # ESLint configuration
├── .prettierrc # Prettier configuration
└── tsconfig.json # TypeScript configuration
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch: `git checkout -b feature-name`.
- Make your changes and commit them: `git commit -m 'Add new feature'`.
- Push to the branch: `git push origin feature-name`.
- Submit a pull request.
Kerolos Portfolio is built with ❤️ by Kerolos.