Professsional Portfolio is my first project, consist in recreate a Portfolio with specific design guidelines that allows you to make your work shine. Built with CSS, HTML, Responsive approach and with a little piece of JavaScript for make it looks better.

  • By Angel Uray
  • Last update: Aug 23, 2022
  • Comments: 11

HTML & CSS3 & JavaScript Course

If you are not familiar with linters, read root level README.

Set-up GitHub Actions

Please do the following steps in this order:

  1. In the first commit of your feature branch create a .github/workflows folder and add a copy of .github/workflows/linters.yml to that folder.
    • Remember to use the file linked above
    • Remember that .github folder starts with a dot.
  2. Do not make any changes in config files - they represent style guidelines that you share with your team - which is a group of all Microverse students.
  3. When you open your first pull request you should see the result of the GitHub actions checks:

gh actions checks

Click on the Details link of each action to see the full output and the errors that need to be fixed:

gh actions failing checks

Set-up linters in your local env

Note: The npm package manager is going to create a node_modules directory to install all of your dependencies. You shouldn't commit that directory. To avoid that, you can create a .gitignore file and add node_modules to it:

# .gitignore
node_modules/

Lighthouse

An open-source, automated tool for improving the quality of web pages. It has audits for performance, accessibility, progressive web apps, SEO and more.

You can get the Lighthouse report by any of the following ways:

To access the report generated by Lighthouse on your pull request, click the Details link for the Linters/Lighthouse check and you will see the full output of the action:

lighthouse report

Webhint

A customizable linting tool that helps you improve your site's accessibility, speed, cross-browser compatibility, and more by checking your code for best practices and common errors.

NOTE: If you are running on Windows, you need to initialize npm to create package.json file.

npm init -y
  1. Run
    npm install --save-dev [email protected]
    
    not sure how to use npm? Read this.
  2. Copy .hintrc to the root directory of your project.
  3. Do not make any changes in config files - they represent style guidelines that you share with your team - which is a group of all Microverse students.
  4. Run
    npx hint .
    
  5. Fix validation errors.

Stylelint

A mighty, modern linter that helps you avoid errors and enforce conventions in your styles.

  1. Run

    not sure how to use npm? Read this.

  2. Copy .stylelintrc.json to the root directory of your project.

  3. Do not make any changes in config files - they represent style guidelines that you share with your team - which is a group of all Microverse students.

  4. Run npx stylelint "**/*.{css,scss}" on the root of your directory of your project.

  5. Fix linter errors.

  6. IMPORTANT NOTE: feel free to research auto-correct options for Stylelint if you get a flood of errors but keep in mind that correcting style errors manually will help you to make a habit of writing a clean code!

ESLint

  1. Run

    not sure how to use npm? Read this.

  2. Copy .eslintrc.json to the root directory of your project.

  3. Do not make any changes in config files - they represent style guidelines that you share with your team - which is a group of all Microverse students.

  4. Run npx eslint . on the root of your directory of your project.

  5. Fix linter errors.

  6. IMPORTANT NOTE: feel free to research auto-correct options for Stylelint if you get a flood of errors but keep in mind that correcting style errors manually will help you to make a habit of writing a clean code!

Github

https://github.com/angeluray/professional-portfolio

Comments(11)

  • 1

    Initialize Form Validation

    Basic Check✔

    • Created a new branch according to the Github Flow rules.
    • Added form validation functions in JS file.
    • Added a .css file that includes styles for Form Validation.
    • Set up linters for HTML/CSS and JS making sure they work correctly.
    • Added a .gitignore file to make sure any irrelevant files are ignored by git.
    • Added changes doing pair programming according to the requirements.

    Project Requirements check ✔

    • When the user submits the form, you check if the email is in lower case. - Done.
    • If the validation is OK, the form is sent. - Done.
    • If the validation is not OK, you show an error message to the user near the submit button informing them of the error and the form is not sent. - Done.

    Image Check ✔

    photo_5107519244219820796_y photo_5107519244219820797_y *

  • 2

    Image lacks description

    The image on line 111 of index.html file lacks a description.

    I think it would be better if the author included a description for the <img> tag located on line 111 of the index.html file.

  • 3

    Set up Data storage feature

    Basic Check✔

    • Created a new branch according to the Github Flow rules.
    • Added form validation functions in JS file.
    • Added a .css file that includes styles for Form Validation.
    • Set up linters for HTML/CSS and JS making sure they work correctly.
    • Added a .gitignore file to make sure git ignores any irrelevant files.
    • Added changes doing pair programming according to the requirements.

    Project requirements check✔

    When the user changes the content of any input field, the data is saved to the local storage. - Done. When the user loads the page if there is any data in the local storage the input fields are pre-filled with this data. - Done.

  • 4

    Set Up Dynamic feature to Portfolio Project

    Basic Check✔

    • Created a new branch according to the Github Flow rules.
    • Added cards of work section to HTML dynamically using JS.
    • Added a .css file that includes styles for the portfolio project including Mobile and Desktop version, Menu Mobile and Modal window.
    • Set up linters for HTML/CSS and JS making sure they work properly.
    • Added a .gitignore file to make sure any irrelevant files are ignored by git.
    • Added changes doing pair programming according to the requirements.

    Project Requirements check ✔

    • When the user clicks (or taps) the button to check project details, the popup with details about the project appears. - Done.
    • When the user clicks (or taps) the close (X) button, the popup disappears. - Done.
    • For each project you need to store the following pieces of data in a JavaScript object, at a minimum: name, description, featured image, technologies, link to live version, and link to source. - Done.
    • You need to update the main page so that the projects section is created dynamically using the information stored in that JavaScript object. Remember, all of the HTML in that section is created when the page loads. - Done.
  • 5

    Peer to Peer code Review

    • maybe instead to add one event listener for each of the six projects buttons, you can add directly to the document an even listener in that way you will listen whatever element which has been clicked in all the document, and inside of that function get the id of the button and use that id to access to the position of the array.

    ` document.addEventListener('click', (event) => { const targetId = event.target.id; //you get the id of the element that was pressed console.log(targetId); //print the element to see what it was

    and then you can check ok my id is equals to the button of a project and use that to get the thata

    const regex = /(?<=buttonProject)\d+$/; // regex to match the las number at the end, all my projects buttons has a number at the end

    if (regex.test(targetId)) { // if the button presed was the button of any project we get the number and use that number to populate the modal event.preventDefault(); const match = targetId.match(regex)[0]; modalProject.style.display = 'flex'; populateModal(match, arrProjects); } }, false); `

    because what is going to happen when there were 20 projects add 20 eventliesteners?

  • 6

    Set up Mobile Menu features

    Basic Check

    • Created a new branch according to the Github Flow rules.
    • Added a new container to the nav tag in the HTML file for the hamburger button.
    • Added a .css file that includes additional styles for the mobile menu.
    • Set up linters for HTML/CSS and JS making sure they work properly.
    • Added a .gitignore file to make sure any irrelevant files are ignored by git.
    • Added a descriptive and professional README file description.
    • Added changes doing pair programming according to the requirements.

    Task checks

    • When the user clicks (or taps) the hamburger button, the mobile menu appears. - Done
    • When the user clicks (or taps) the close (X) button, the mobile menu disappears. - Done
    • When the user clicks (or taps) any of the mobile menu options, the mobile menu disappears. - Done
    • When the user clicks (or taps) any of the mobile menu options, a correct part of the page is displayed. - Done
  • 7

    Accessibility changes to HTML structure and CSS file.

    Basic check

    • Created a new branch according to the Github Flow rules.
    • Added a .html file that includes accessibility features.
    • Added a .css file that includes new style to buttons and new size properties to work section images and cards.
    • Set up linters for HTML and CSS making sure they work correctly.
    • Added a .gitignore file to make sure any irrelevant files are ignored by git.
    • Added changes doing pair programming, according to activity requirements.

    Report check

    1. Page titles - Removed old name with a new more accessible one.
    2. Image text alternatives - Added descriptive alt text properties to images.
    3. Text headings - No issues found.
    4. Color contrast - Optimized color contrast of buttons.
    5. Resize - Adapted text and images changing the work section sizing properties.
    6. Interaction - Added labels tags to form with a "Display: none" property.
    7. Moving content - No issues found.
    8. Multimedia - No issues found.
    9. The basic structure of the page - No issues found.

    Line changes links

    • https://github.com/angeluray/professional-portfolio/pull/10/files#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051R7 - Page title change.
    • https://github.com/angeluray/professional-portfolio/pull/10/files#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051R25-R26 - Nav bar icons changes.
    • https://github.com/angeluray/professional-portfolio/pull/10/files#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051R122 - Work section images changes.
    • https://github.com/angeluray/professional-portfolio/pull/10/files#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051R200-R201 - Labels changes.
    • https://github.com/angeluray/professional-portfolio/pull/10/files#diff-b78be019f1dc6d57753ea900c3805b114cd53ab7c0db836cc081836df1b99b7aR11 - Buttons color contrast changes.
    • https://github.com/angeluray/professional-portfolio/pull/10/files#diff-b78be019f1dc6d57753ea900c3805b114cd53ab7c0db836cc081836df1b99b7aR562 - Work section cards changes.
    • https://github.com/angeluray/professional-portfolio/pull/10/files#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051R94-R98 - Social media icons changes
  • 8

    Update README.md file

    • Created a new branch according to the Github Flow rules.
    • Set up linters for HTML and CSS making sure they work correctly.
    • Added a descriptive and professional README file description with the last update, my professional portfolio's link live demo.
  • 9

    Add animations and transitions to Mobile and Desktop Version

    • Created a new branch according to the Github Flow rules.
    • Added transitions to work's section images in Mobile and Desktop versions.
    • Added transitions to See Project buttons and Form Button.
    • Set up linters for HTML and CSS making sure they work properly.
    • Made changes doing pair programming according to activity requirements.
  • 10

    Set up portfolio Desktop version

    • Created a new branch according to the Github Flow rules.
    • Added a .html file that includes additional containers for implementing the desktop version.
    • Added a .css file that includes mobile version style and desktop version style using media query.
    • Set up linters for HTML and CSS making sure they work properly.
    • Added a .gitignore file to make sure any irrelevant files are ignored by git.
    • Added a descriptive and professional README file description with the last updates.
  • 11

    Set up Professional Portfolio last features.

    • Created a new branch according to the Github Flow rules.
    • Added a .html file that includes the Professional Portfolio structure.
    • Added a .css file that includes styles to my Professional Portfolio according to the Mobile version.
    • Set up linters for HTML and CSS making sure they work correctly.
    • Added a .gitignore file to make sure any irrelevant files are ignored by git.
    • Added a descriptive and professional README file description.
    • Added proper changes to Professional Portfolio files doing Pair Programming actively according to the requirements.