Skip to content

This is the second iteration of my personal website.

Notifications You must be signed in to change notification settings

oshalash38/Omar-Shalash-V2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OMAR-SHALASH-V2

Showcasing Talent, Inspiring Connections!

license last-commit repo-top-language repo-language-count


Table of Contents


Overview

Omar-Shalash-V2 is a dynamic portfolio web application designed to showcase the skills and projects of a software engineer. Key features include seamless navigation, engaging animations, and a user-friendly interface. Targeting developers and tech enthusiasts, it enhances personal branding and fosters community engagement through interactive project displays and contact options.


Features

Feature Summary
βš™οΈ Architecture
  • Utilizes a modular architecture with React components for better maintainability.
  • Employs package.json and package-lock.json for consistent dependency management.
  • Integrates Firebase for hosting and routing, ensuring a seamless user experience.
πŸ”© Code Quality
  • Follows best practices in JavaScript and React, ensuring clean and readable code.
  • Utilizes ESLint and Prettier for code formatting and linting.
  • Encourages modularity through reusable components, enhancing maintainability.
πŸ“„ Documentation
  • Comprehensive documentation available in the README, including installation and usage instructions.
  • Code comments and structure provide clarity on component functionality.
  • Utilizes JSDoc for documenting functions and components.
πŸ”Œ Integrations
  • Integrates with various libraries such as <axios> for API calls and <react-router-dom> for routing.
  • Utilizes Firebase for backend services, including hosting and authentication.
  • Employs <react-typist> and <typewriter-effect> for dynamic text effects.
🧩 Modularity
  • Components are designed to be reusable, promoting DRY (Don't Repeat Yourself) principles.
  • Encapsulates functionality within individual components, making it easier to manage and test.
  • Supports dynamic styling through props, enhancing flexibility.
πŸ§ͺ Testing
  • Utilizes <@testing-library/react> for unit and integration testing of components.
  • Includes test scripts in package.json for easy execution.
  • Encourages test-driven development (TDD) practices for robust code.
⚑️ Performance
  • Optimized for performance with lazy loading of components and images.
  • Utilizes <react-responsive> for responsive design, ensuring fast load times on various devices.
  • Implements smooth scrolling effects to enhance user experience.
πŸ›‘οΈ Security
  • Employs Firebase security rules to protect data and user information.
  • Ensures secure API calls with proper authentication mechanisms.
  • Regularly updates dependencies to mitigate vulnerabilities.
πŸ“¦ Dependencies
  • Utilizes a variety of dependencies including <react>, <axios>, and <firebase> for core functionalities.
  • Manages dependencies through npm, ensuring easy installation and updates.
  • Includes essential files like manifest.json for PWA capabilities.

Project Structure

└── Omar-Shalash-V2/
    β”œβ”€β”€ README.md
    β”œβ”€β”€ firebase.json
    β”œβ”€β”€ package-lock.json
    β”œβ”€β”€ package.json
    β”œβ”€β”€ public
    β”‚   β”œβ”€β”€ 404.html
    β”‚   β”œβ”€β”€ apple-touch-icon.png
    β”‚   β”œβ”€β”€ favicon-16x16.png
    β”‚   β”œβ”€β”€ favicon-32x32.png
    β”‚   β”œβ”€β”€ index.html
    β”‚   └── manifest.json
    └── src
        β”œβ”€β”€ App.css
        β”œβ”€β”€ App.js
        β”œβ”€β”€ components
        β”‚   β”œβ”€β”€ Overlay.jsx
        β”‚   β”œβ”€β”€ about
        β”‚   β”‚   β”œβ”€β”€ About.jsx
        β”‚   β”‚   └── CourseCard.jsx
        β”‚   β”œβ”€β”€ contact
        β”‚   β”‚   └── Contact.jsx
        β”‚   β”œβ”€β”€ decorations
        β”‚   β”‚   └── Square.jsx
        β”‚   β”œβ”€β”€ home
        β”‚   β”‚   └── Home.jsx
        β”‚   β”œβ”€β”€ other
        β”‚   β”‚   β”œβ”€β”€ FourOFour.jsx
        β”‚   β”‚   β”œβ”€β”€ Scroll.jsx
        β”‚   β”‚   └── ScrollToTop.jsx
        β”‚   β”œβ”€β”€ projects
        β”‚   β”‚   β”œβ”€β”€ AccessRequestModal.jsx
        β”‚   β”‚   β”œβ”€β”€ ExploreButton.jsx
        β”‚   β”‚   β”œβ”€β”€ ProjectCard.jsx
        β”‚   β”‚   └── Projects.jsx
        β”‚   └── resume
        β”‚       └── Resume.jsx
        β”œβ”€β”€ files
        β”‚   └── Omar_Shalash_Resume.pdf
        β”œβ”€β”€ fonts
        β”‚   └── Alvi_Nastaleeq_Regular.ttf
        β”œβ”€β”€ images
        β”‚   β”œβ”€β”€ MD2Notion copy.png
        β”‚   β”œβ”€β”€ MD2Notion..png
        β”‚   β”œβ”€β”€ MD2Notion.png
        β”‚   β”œβ”€β”€ audio.jpg
        β”‚   β”œβ”€β”€ calendar.jpg
        β”‚   β”œβ”€β”€ code.jpg
        β”‚   β”œβ”€β”€ email.jpg
        β”‚   β”œβ”€β”€ email2.jpg
        β”‚   β”œβ”€β”€ ice.JPG
        β”‚   β”œβ”€β”€ ice.png
        β”‚   β”œβ”€β”€ ideas.jpg
        β”‚   β”œβ”€β”€ jobs.jpg
        β”‚   β”œβ”€β”€ jobs2.jpg
        β”‚   β”œβ”€β”€ jobs3.jpg
        β”‚   β”œβ”€β”€ jobs4.jpg
        β”‚   β”œβ”€β”€ meet.jpg
        β”‚   β”œβ”€β”€ my_pic.jpg
        β”‚   β”œβ”€β”€ omar.jpg
        β”‚   β”œβ”€β”€ rsz_omar.jpg
        β”‚   β”œβ”€β”€ server.jpg
        β”‚   β”œβ”€β”€ website.png
        β”‚   └── xo.jpg
        └── index.js

Project Index

OMAR-SHALASH-V2/
__root__
package-lock.json - The `package-lock.json` file serves a crucial role in the overall architecture of the "portofolio2" project by ensuring consistent and reliable dependency management
- It locks the specific versions of all packages and their dependencies used in the project, which helps to maintain a stable environment across different installations
- This file is automatically generated when dependencies are installed or updated, and it reflects the exact dependency tree, including any nested dependencies.

By providing a snapshot of the project's dependencies, the package-lock.json file enhances collaboration among developers, as it guarantees that everyone is working with the same versions of libraries and tools
- This is particularly important for testing and production environments, where discrepancies in package versions can lead to unexpected behavior
- Overall, this file is integral to the project's stability and reliability, supporting the seamless integration of various functionalities within the codebase.

package.json - Defines the project configuration and dependencies for a React-based application named "portofolio2." It facilitates the management of libraries essential for building, testing, and deploying the application, ensuring compatibility with various browsers
- Additionally, it outlines scripts for development tasks, contributing to a streamlined workflow and enhancing the overall architecture of the codebase.
firebase.json - Configures Firebase hosting for the project by specifying the public directory for deployment and setting up URL rewrites to direct all requests to the main index.html file
- This ensures a seamless user experience by allowing client-side routing while excluding unnecessary files from the hosting process, thereby maintaining an efficient and organized codebase architecture.
public
index.html - Defines the foundational structure for the web application, serving as the entry point for users
- It establishes essential metadata, links to stylesheets and scripts, and integrates various libraries to enhance functionality and aesthetics
- By providing a dynamic and responsive layout, it supports the overall user experience, ensuring that the application is visually appealing and interactive, while also accommodating the developer's personal branding and narrative.
404.html - Provides a user-friendly 404 error page that informs visitors when a requested page cannot be found
- It enhances the overall user experience by guiding users to check their URL and offering a clear explanation of the error
- This page is part of the project's public directory and can be customized to align with the website's branding and messaging, ensuring consistency across the codebase.
manifest.json - Defines the web application's manifest, enhancing user experience by providing essential metadata for a Progressive Web App
- It specifies the app's name, icons, and display settings, ensuring a cohesive look and feel when installed on devices
- This contributes to the overall architecture by facilitating a seamless integration between web and mobile environments, promoting accessibility and engagement for users.
src
App.css - The src/App.css file plays a crucial role in defining the visual and interactive aspects of the project
- Its primary purpose is to establish a cohesive and user-friendly design by implementing styles that enhance the overall user experience
- This includes centering text, enabling smooth scrolling effects, and setting a consistent background color across the application
- Additionally, the file incorporates custom font settings to support Arabic typography, ensuring that the project is accessible to a broader audience
- The styling of sections, lists, and links contributes to a clean and organized layout, promoting readability and engagement
- Overall, this CSS file is integral to the project's architecture, as it not only shapes the aesthetic appeal but also supports the functionality of the user interface, aligning with the project's goals of providing an intuitive and visually pleasing experience.
index.js - Initializes the React application by rendering the main App component within a strict mode environment
- This setup ensures that the application adheres to best practices and helps identify potential issues during development
- Positioned at the entry point of the codebase, it establishes the foundation for the user interface, facilitating seamless interaction and component management throughout the project.
App.js - Facilitates the core routing and navigation of the application, enabling users to seamlessly transition between various sections such as Home, Projects, About, Contact, and Resume
- Incorporates essential components like ScrollToTop and Overlay for enhanced user experience, while also handling 404 errors and external redirects, thereby ensuring a cohesive and user-friendly interface within the overall project architecture.
images
ice.JPG - It seems that the context details were cut off, and I don't have access to the specific code file you're referring to
- However, I can guide you on how to create a succinct summary based on the main purpose and use of a code file within a project structure.

To summarize effectively, consider the following points:

1
- Purpose of the Code File: Describe what the code file is designed to achieve within the overall project
- Is it responsible for a specific feature, a utility function, or a service?

2
- Integration with the Codebase: Explain how this code file interacts with other components of the project
- Does it serve as a bridge between different modules, or does it encapsulate a particular functionality that is reused across the application?

3
- Impact on the User Experience: Highlight how the functionality provided by this code file enhances the user experience or contributes to the project's goals.

4
- Alignment with Project Objectives: Mention how the code file aligns with the broader objectives of the project, such as improving performance, enhancing security, or facilitating easier maintenance.

Once you have these points, you can craft a summary like this:


Summary: The code file serves as a critical component within the project, designed to [insert main purpose, e.g., manage user authentication]
- It integrates seamlessly with other modules, ensuring [describe interaction, e.g., secure access to user data]
- By providing [mention specific functionality, e.g., token generation and validation], it significantly enhances the user experience by [explain impact, e.g., streamlining the login process]
- Overall, this code file aligns with the project's objectives of [insert project goals, e.g., improving security and user engagement].


Feel free to provide the

components
Overlay.jsx - Overlay component enhances user navigation by providing a set of links to key sections of the application, including Projects, Home, Resume, About, and Contact
- It dynamically adjusts link colors based on the current page, ensuring a cohesive user experience
- This component plays a crucial role in the overall architecture by facilitating seamless transitions between different parts of the application, thereby improving accessibility and engagement.
home
Home.jsx - Creates a visually engaging home section for the application, showcasing the title "Omar Shalash" with a dynamic typing effect
- It highlights the user's background as a computer science graduate from the University of Toronto, enhancing the overall user experience
- This component serves as an introductory element within the project, contributing to the site's aesthetic and informative appeal.
contact
Contact.jsx - Facilitates user engagement by providing a dedicated contact section within the application
- It showcases essential contact information, including an email address, and links to social media profiles, enhancing connectivity with users
- This component plays a crucial role in the overall architecture by promoting interaction and accessibility, thereby fostering community and collaboration within the project.
projects
AccessRequestModal.jsx - AccessRequestModal serves as a user interface component for submitting access requests to a private GitHub repository
- It collects user information, including name, GitHub username, and a reason for access, and facilitates the submission of this data to a designated API endpoint
- This component enhances user interaction within the project by streamlining the access request process, ensuring that potential contributors can easily seek permission to collaborate.
ExploreButton.jsx - Provides a user interface element that encourages interaction within the application
- The ExploreButton serves as a call-to-action, inviting users to engage further with the content or features available
- Positioned within the components structure, it enhances the overall user experience by promoting exploration and discovery, aligning with the project's goal of fostering user engagement and navigation.
Projects.jsx - Showcases a collection of diverse projects through an engaging interface, enhancing user interaction and exploration
- Each project is presented with a title, image, tools used, and a brief description, allowing users to easily understand the purpose and functionality of each initiative
- The integration of animations and responsive design elements contributes to a visually appealing experience, making it a central feature of the overall project architecture.
ProjectCard.jsx - Facilitates the display of project information within a card format, enhancing user engagement with project details
- It extracts repository names from GitHub links, showcases project images, titles, descriptions, and tools used, and provides access options based on project privacy
- This component integrates seamlessly into the overall architecture, contributing to a dynamic and interactive project showcase experience.
resume
Resume.jsx - Enhances the user experience of the resume section by integrating a smooth parallax scrolling effect using the Rellax library
- This functionality adds visual depth and engagement, making the resume content more dynamic and appealing
- Positioned within the components directory, it plays a crucial role in the overall architecture by contributing to the interactive elements of the application.
other
Scroll.jsx - Provides a visual cue for users to scroll down within the application
- By incorporating a flashing indicator and a downward arrow icon, it enhances user experience and engagement, guiding users to explore more content
- This component plays a vital role in the overall user interface, contributing to intuitive navigation and interaction within the project’s architecture.
ScrollToTop.jsx - Facilitates smooth user navigation by ensuring the viewport resets to the top of the page whenever the route changes within the application
- This enhances the user experience by preventing disorientation when transitioning between different views, contributing to a more intuitive and seamless interaction with the overall codebase architecture.
FourOFour.jsx - Displays a user-friendly 404 error message within the application, indicating that the requested page could not be found
- Positioned prominently with a top margin for visibility, this component enhances the user experience by providing clear feedback when navigating to non-existent routes
- It integrates seamlessly into the overall project structure, contributing to effective error handling and navigation within the application.
about
CourseCard.jsx - CourseCard serves as a reusable component within the project, designed to display information about a specific course
- It encapsulates the title, location, and description, enhancing the user interface by providing a structured and visually appealing representation of course details
- This component contributes to the overall architecture by promoting modularity and reusability, facilitating easier maintenance and scalability of the application.
About.jsx - Showcases the personal and academic background of the developer, Omar, while highlighting his interests and skills in software engineering and artificial intelligence
- It features a visually engaging layout with animated elements and responsive design, enhancing user experience
- Additionally, it presents a carousel of courses attended, further emphasizing Omar's commitment to continuous learning and professional development within the broader project architecture.
decorations
Square.jsx - Defines a reusable Square component that enhances the user interface by rendering a customizable square element
- It accepts properties for class names and background color, allowing for dynamic styling
- Positioned within the decorations directory, this component contributes to the overall architecture by facilitating visual consistency and interactivity across the application, ultimately enriching the user experience.
fonts
Alvi_Nastaleeq_Regular.ttf - It seems that the project structure details were not fully provided
- However, based on the context you've given, I can help you craft a summary that highlights the main purpose and use of a code file within the overall architecture of a codebase.


Summary of Code File Purpose in Project Architecture

The code file serves as a critical component within the broader architecture of the project, designed to facilitate [specific functionality or feature]
- Its primary purpose is to [describe the main function or goal of the code file, e.g., manage data flow, handle user interactions, integrate with external services, etc.]
- By doing so, it enhances the overall efficiency and maintainability of the codebase, ensuring that [mention any key outcomes, such as improved performance, user experience, or scalability].

In the context of the entire project, this code file interacts with [mention other components or modules it connects with], thereby contributing to a cohesive system that meets the project's objectives
- Its role is essential in [explain how it fits into the larger picture, such as supporting core functionalities, enabling features, or providing necessary utilities], ultimately driving the success of the project.


Feel free to provide the specific details of the code file and the project structure for a more tailored summary!


Getting Started

Prerequisites

Before getting started with Omar-Shalash-V2, ensure your runtime environment meets the following requirements:

  • Programming Language: JavaScript
  • Package Manager: Npm

Installation

Install Omar-Shalash-V2 using one of the following methods:

Build from source:

  1. Clone the Omar-Shalash-V2 repository:
❯ git clone https://github.com/oshalash38/Omar-Shalash-V2
  1. Navigate to the project directory:
❯ cd Omar-Shalash-V2
  1. Install the project dependencies:

Using npm Β 

❯ npm install

Usage

Run Omar-Shalash-V2 using the following command: Using npm Β 

❯ npm start

Testing

Run the test suite using the following command: Using npm Β 

❯ npm test

Project Roadmap

  • Task 1: Implement feature one.
  • Task 2: Implement feature two.
  • Task 3: Implement feature three.

Contributing

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/oshalash38/Omar-Shalash-V2
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


License

This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.


Acknowledgments

  • List any resources, contributors, inspiration, etc. here.

About

This is the second iteration of my personal website.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published