Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted 7 months ago

Password Generator WebApp | React | TypeScript

typescript, react
P
Serhii Orlenko•415
@grifano
A solution to the Password generator app challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


What are you most proud of, and what would you do differently next time?

What I’m most proud of:

  • I discovered a better approach to password generation and successfully improved the implementation.
  • I found a solution for styling a custom range input by conducting thorough research and adapting it to fit my needs.

What I would do differently next time:

  • I would try to spend less time overthinking at the beginning. Instead, I would focus on completing the first implementation quickly, then take a short break before revisiting the project with fresh eyes to spot potential improvements.
What challenges did you encounter, and how did you overcome them?

Challenges I faced:

  1. Password Generation Logic:
    The most challenging part was designing a solution to generate passwords while handling various options, such as lowercase, uppercase, numbers, and symbols.
    How I overcame it:
    I came up with the idea of generating an array containing random characters for each setting. However, I spent some time researching how to toggle these options effectively, which helped me refine my approach.

  2. Custom Range Slider Styling:
    Styling a custom range slider was quite difficult.
    How I overcame it:
    After conducting research, I found an article with a solution similar to what I needed. I adjusted the code to suit my project, which allowed me to style the slider successfully.

What specific areas of your project would you like help with?
  • Code Review:
    I believe feedback from more experienced developers is the best way to improve my skills and get closer to the job I’ve been dreaming of for so long. Please let me know if way that I was write a code is good enough for working as a developer, and how much time such a project should take according to the real life job?

  • State Management:
    I used a lot of states in my implementation. While this approach makes the code clear and understandable for me, I wonder if it's the best practice or if there’s a better way to handle it. I’d love to hear suggestions on improving state management in my project.

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • P
    Darkstar•1,420
    @DarkstarXDD
    Posted 6 months ago

    Hey nice solution. Couple of things i noted.

    • You could use word-break: break-all on the password text. I see you are using overflow on it, and it's currently causing a scrollbar to appear next to the password. You can remove the overflow and use break-all instead. I think it will look better.
    • In the button's SVG you are using a property called hanging which i am not familiar with. However that is causing a weird result i am not sure how to explain but you can see it your self by tabbing into the button using the tab key. I think instead of hanging you may have wanted to use height.
    • Currently it seems there is no way for me to get a Strong strength password. Pushing the scrollbar to the very end and checking all 4 checkboxes i am still getting the strength as Medium. You can either let the user chose more characters or tweak your conditions so that a 20 character password is Strong. I feel like a password with 20 characters and all 4 of those options selected should definitely be marked as Strong.
    • Currently the user can uncheck all 4 checkboxes and click the button. I think it's better if you displayed some error message when user tries to uncheck all 4 checkboxes. It's a bit weird when the button is clicked and an empty text is displayed on the password field since the user has unchecked all 4 options.
    • Another small idea. I think it would have been better if you made it in a way that whenever the user changes a parameter a new password is generated and displayed, rather than user needing to click the button. This is just a preference thing as that is how i implemented my solution and i have seen other password generators like Lastpass and Bitwarden doing the same thing in their products.

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

How does the accessibility report work?

When a solution is submitted, we use axe-core to run an automated audit of your code.

This picks out common accessibility issues like not using semantic HTML and not having proper heading hierarchies, among others.

This automated audit is fairly surface level, so we encourage to you review the project and code in more detail with accessibility best practices in mind.

How does the CSS report work?

When a solution is submitted, we use stylelint to run an automated check on the CSS code.

We've added some of our own linting rules based on recommended best practices. These rules are prefixed with frontend-mentor/ which you'll see at the top of each issue in the report.

The report will audit all CSS, SCSS and Less files in your repository.

How does the HTML validation report work?

When a solution is submitted, we use html-validate to run an automated check on the HTML code.

The report picks out common HTML issues such as not using headings within section elements and incorrect nesting of elements, among others.

Note that the report can pick up “invalid” attributes, which some frameworks automatically add to the HTML. These attributes are crucial for how the frameworks function, although they’re technically not valid HTML. As such, some projects can show up with many HTML validation errors, which are benign and are a necessary part of the framework.

How does the JavaScript validation report work?

When a solution is submitted, we use eslint to run an automated check on the JavaScript code.

The report picks out common JavaScript issues such as not using semicolons and using var instead of let or const, among others.

The report will audit all JS and JSX files in your repository. We currently do not support Typescript or other frontend frameworks.

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub