Git Product home page Git Product logo

iturres / iturres-reactive-portfolio Goto Github PK

View Code? Open in Web Editor NEW
17.0 17.0 0.0 87.03 MB

πŸ’Ό Discover my 2023/24 βš›οΈReactive Portfolioβš›οΈ, featuring projects from 2022 to today. Explore my work, access my resume, and connect with me using the contact form! Let's collaborate and create something amazing together.

Home Page: https://iturres.github.io/iturres-reactive-portfolio/

License: MIT License

HTML 1.20% TypeScript 57.07% JavaScript 0.45% SCSS 41.28%
awesomeness portfolio-website potfolio react react-hooks react-router reactportfolio reactts

iturres-reactive-portfolio's Introduction

banner quoting 'learning to be the best version of myself'

GitHub Stats is experiencing some issues... GitHub Streaks is experiencing some issues...

Typing SVG

Typing SVG


const profileData = {
  aboutMe: [
    'πŸ‘¨β€πŸ’» I am a Full-stack web developer.',
    'πŸ“š Fond of technical, business, self-help and travel books, and more.',
    'πŸš€ I thrive on collaborating, organizing, and working with peers.',
    "πŸ€ I'm on my way to realizing my second dream, having accomplished the first.",
    '⌚ I do a bit of watchmaking.',
    'πŸ–₯ I enjoy designing web applications.',
    'πŸ™‡πŸ»β€β™‚οΈ Currently learning TypeScript, Angular and DSA.'
  ],
  futureLearningGoals: [
    'πŸ₯– French.',
    '🐦 Swift.',
    'πŸ€– Kotlin.',
    '🎀 Give technical and soft skills talks.',
    'πŸ‚ Snowboarding.'
  ]
};

Do you enjoy reading? πŸ€“

πŸ“š Here is a curated list of the books I read, that I would like to share with you... πŸ“š

πŸ“– = Books I'm currently reading

πŸ› οΈ Technical Books:
  • πŸ“– "The Pragmatic Programmer" - By Andrew Hunt and David Thomas.
  • πŸ“˜ "ProGit" - By Scott Chacon and Ben Straub.
  • πŸ“˜ "Think Like a Programmer" - By V. Anton Spraul.
  • πŸ“– "Javascript The Definitive Guide" - By David Flanagan.
  • πŸ“˜ "Learning React" - By Alex Banks and Eve Porcello.
  • πŸ“– "Redux in Action" - By Marc Garreau and Will Faurot.
  • πŸ“˜ "The Ruby programming language" - By David Flanagan and Yukihiro Matsumoto.
  • πŸ“– "A Common Sense Guide to DSA - 2nd Edition" - By Jay Wengrow.
  • πŸ“– "You Dont Know JavaScript" - By Kyle Simpson.
πŸ’Ό Business Books:
  • πŸ“• "The Phoenix Project, A novel about IT, DevOps and helping your business win" - By Gene Kim, George Spafford and Kevin Behr.
  • πŸ“• "The Five Dysfunctions of a Team" - By Patrick Lencioni.
  • πŸ“– "The Effective Engineer" - By Edmond Lau.
🧠 SelfHelp Books:
  • πŸ“— "Feel The Fear And Do It Anyway" - By Susan Jeffers.
  • πŸ“— "Ego is the Enemy" - By Ryan Holiday.
  • πŸ“— "Growth Mindset" - By Carol S. Dweck.
  • πŸ“— "Declutter Your Mind" - By S.J. Scott and Barrie Davenport.
πŸ—ΊοΈ Travel Books:
  • πŸ“™ "Hitchhiking in The Axis of Evil" - By Juan Pablo Villarino.
  • πŸ“™ "Always the West" - By J.M. Romero.
  • πŸ“™ "Magic is travelling" - By Aldana Chiodi and Dino Feldman.
  • πŸ“™ "A Tango in Tibet" - By Juan Pablo Villarino.
  • πŸ“™ "The Alchemist" - By Paulo Coelho.


Github contributor rank is experiencing some issues...

Top Languages

Profile Views

iturres-reactive-portfolio's People

Contributors

iturres avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

iturres-reactive-portfolio's Issues

[2pt] Migration Plan for Converting ES6 Arrow Function Components to ES5 Function Components

Overview:

In this issue, I will outline the migration plan for converting functional components written in ES6 arrow function syntax to ES5 function syntax within this project's React application.

Motivation:

The motivation behind this migration stems from the need for improved compatibility, readability, and debugging capabilities within this project's React codebase. By transitioning from ES6 arrow functions to ES5 function syntax, I aim to enhance the maintainability and accessibility of the code, particularly for developers who may be less familiar with ES6 features.

Benefits of Migration:

  1. Improved Compatibility: ES5 function syntax has broader compatibility with older browsers and environments compared to ES6 arrow functions. This ensures that the code remains functional across a wider range of platforms without requiring transpilation.

  2. Enhanced Readability: Some developers find ES5 function syntax clearer and easier to understand, especially those who are less familiar with ES6 features. The function keyword explicitly defines a function, making it more apparent where the function begins and ends.

  3. Simplified Debugging: ES5 function syntax may make debugging easier in some cases, as function names are explicitly declared, aiding in stack traces and error messages. Additionally, when using React DevTools, arrow function components appear as anonymous functions, making it challenging to identify them during debugging. By migrating to ES5 function syntax, functional components will have explicit names, improving the clarity and ease of debugging within React DevTools. This enhancement streamlines the debugging process and enhances developer productivity by providing clearer insights into component hierarchies and interactions.

Proposed Steps:

  1. Identify Components: Begin by identifying functional components within the React codebase that are currently written using ES6 arrow function syntax.

  2. Convert to ES5 Syntax: For each identified component, refactor the code to use ES5 function syntax instead of arrow functions.

By following these proposed steps, I can successfully migrate the functional components to ES5 function syntax within this project's React application, thereby improving compatibility, readability, and debugging capabilities.


[5pt] Accessibility issues found in portfolio

Status

The portfolio has some critical accessibility issues that must be addressed.

Tools for the job

  • Google Lighthouse.
  • Contrast Checker.

Areas to focus on:

  • Semantics.
  • Text Contrast.
  • Links.
  • Labels.
  • Aria live regions.
  • Programmable focus management (investigate further).

Notes:

  • Navbar toggle needs a clear role and keyboard focus.
  • Announce toggle state (open/close) to assistive technologies.

[4pt] Assess portfolio for JSR - follow rubric

Possible changes

Content

  • List of skills: Showcase which tools and technologies you’re familiar with (and any other skill).
  • Contact details: email address.
  • Call-to-action (CTA): There is at least 1 CTA that brings the user to the β€œcontact” section.
  • Update form placeholders.

Personal Extra ones

  • Update the Apple icon.
  • set ENV at repo settings and add deploy file.
  • re-deploy.

Rubric

[3pt] Excessive Involvement API Requests Triggered by -LikeButton- Component

Description:

Issue: 1. When the user goes to the ProjectsPage, and the projects are rendered along with their respective LikeButton component, each of these like buttons triggers a request to the involvement API to get all the likes, i.e. 18 requests for the same likes array.
Issue: 2. When the user likes a project, this will too trigger a new request to fetch all the likes, again, a redundant network request.

Steps to Reproduce:

  1. Open the application.
  2. Navigate to the 'Projects' page.
  3. Open DevTools' Network tab and refresh the projects page.
  4. Observe the redundant multiple requests for each project's likes (refer to 'likes/' requests).

Expected Behavior:

Only one request should be made to retrieve all current project likes.

Actual Behavior:

Each 'LikeButton' component triggers a request for the entire likes array. Consequently, there are -18 unnecessary requests- totalling 19 requests for all projects.


Proposed Solution:

Issue 1:

Since fetching each project's likes by ID is not currently supported by the Involvement API, alternative approaches are required.

I propose fetching the total likes in the parent container. Since this involves fetching the likes at the most parent node, which in this case is 'ProjectsPage', I suggest the following three potential solutions for handling the data thereafter:

  • A. Pass the data down the component hierarchy to every button. The prop flow would be: ProjectsPage => SplideCarousel => SplideCarouselSlide => LikeButton.

  • B. Store the likes in localStorage at 'ProjectsPage' for subsequent retrieval in each 'LikeButton'.

  • C. Implement Redux: dispatch an action to store all the likes.

Regardless of the chosen approach, each 'LikeButton' will need to filter the likes array to retrieve the likeCount corresponding to that project ID. Alternatively, an additional reducer could be set up to obtain the like count for each project ID.

Issue 2:

The issue described in the description occurs within the handleLikeSubmit async function. I suggest removing the invocation of the updateLikeCount async function.
Currently, at line 83, we flip the boolean value of the local state variable wasLiked to true to apply the desired styles and provide user feedback that their like has been set. To allow the user to continue liking the project and see the count increase, we need to do the same within the conditional at line 86 to reset this variable to false. This will trigger setLikeCount again.
Also, rename the functional argument liked with wasLiked when setting the new state.

Note:

❗This issue is critical as it significantly affects the efficiency and performance of the application by causing redundant network requests for project likes.

[3pt] Update projects json and re-deploy

Update Projects json data

  • Add all rails project data.

  • Add all project screenshots.

  • Improve any UI that needs improvement.

  • re-deploy from development once PR has been merged.


[4pt] 404 not found -page- component and migrate BrowserRouter to HashRouter

  • **Custom 404 Page component for Better UX: ** At the moment when the user uses the URL bar and hard enters a new path, it will trigger the 404.html page that will refresh the page redirecting the user to the portfolio root path aka accessPage i.e /iturres-reactive-portfolio/ path. This is fine but a custom not found page will be better UX.

  • Migrate from BrowserRouter to HashRouter: Basically, when deploying with gh-pages, the wildcard (*) won't work, if the user goes to an unsupported URL the NotFoundPage component WILL NOT render, instead, GitHub pages default 404 page will show up. To support the redirection to the custom 404 component, we need HashRouter's technology to render after triggering the wildcard char to route all requests to the index.html.


[2pt] Waving Alien when form submitted (Contact Page)

The current behaviour is the following, once the user fills out the whole contact form, it will proceed to click submit, if all the validations are correct, it sends the data to the server and renders a 'Thank you' message in the submit button.

I want to also render a small alien waving hello next to the thank you button, or even better, within the button.


[2pt] Migration Plan for Converting ES6 Arrow Function Components to ES5 Function Components

Overview:

In this issue, I will outline the migration plan for converting functional components written in ES6 arrow function syntax to ES5 function syntax within this project's React application.

Motivation:

The motivation behind this migration stems from the need for improved compatibility, readability, and debugging capabilities within this project's React codebase. By transitioning from ES6 arrow functions to ES5 function syntax, I aim to enhance the maintainability and accessibility of the code, particularly for developers who may be less familiar with ES6 features.

Benefits of Migration:

  1. Improved Compatibility: ES5 function syntax has broader compatibility with older browsers and environments compared to ES6 arrow functions. This ensures that the code remains functional across a wider range of platforms without requiring transpilation.

  2. Enhanced Readability: Some developers find ES5 function syntax clearer and easier to understand, especially those who are less familiar with ES6 features. The function keyword explicitly defines a function, making it more apparent where the function begins and ends.

  3. Simplified Debugging: ES5 function syntax may make debugging easier in some cases, as function names are explicitly declared, aiding in stack traces and error messages. Additionally, when using React DevTools, arrow function components appear as anonymous functions, making it challenging to identify them during debugging. By migrating to ES5 function syntax, functional components will have explicit names, improving the clarity and ease of debugging within React DevTools. This enhancement streamlines the debugging process and enhances developer productivity by providing clearer insights into component hierarchies and interactions.

Proposed Steps:

  1. Identify Components: Begin by identifying functional components within the React codebase that are currently written using ES6 arrow function syntax.

  2. Convert to ES5 Syntax: For each identified component, refactor the code to use ES5 function syntax instead of arrow functions.

By following these proposed steps, I can successfully migrate the functional components to ES5 function syntax within this project's React application, thereby improving compatibility, readability, and debugging capabilities.


[4pt] Migrate from Create React App (CRA) to Vite

Overview:

Migrate the portfolio project from Create React App (CRA) to Vite for enhanced development experience and improved performance.

Motivation:

Create React App has been a reliable tool for bootstrapping React applications, but with the evolution of frontend development tools, Vite has emerged as a promising alternative. Vite offers several advantages over CRA, including faster initial bundling, instant hot module replacement (HMR), and a more flexible configuration approach.

Benefits of Migration:

  1. Improved Performance: Vite leverages ES module imports and native ES features for faster bundling and development server startup.
  2. Faster Development: Instantaneous HMR speeds up development cycles, providing a smoother developer experience.
  3. Simplified Configuration: Vite's simple and intuitive configuration reduces boilerplate and allows for easier customization.
  4. Ecosystem Support: Vite has gained significant traction within the React ecosystem, with growing community support and compatibility with popular plugins and tools.

Proposed Steps:

  1. Evaluation: Assess the compatibility of the project dependencies and third-party libraries with Vite.
  2. Configuration: Set up Vite configuration to match the existing project setup and build requirements.
  3. Migration: Gradually migrate components, styles, and configurations from CRA to Vite, ensuring functionality and performance are maintained.
  4. Documentation: Update project documentation to reflect the migration process and provide guidance for future development.

[4pt] Horizontal IDE like Navbar (Desktop Navbar).

For mobile we have the cool opening flower like navbar, However, I would like to develop a navbar that resembles an IDE's files tab.

  • This navbar needs to be render only for Desktop version and it will contain all the portfolio pages links.
  • The current navbar will contain the links to the pages only for mobile and for desktop it will only have the social media links.
  • Follow VScode layout for guidance.
  • This will impact the overal layout of the current project, so, make necessary changes on every stylesheet to maintain a nice and delicate design.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.