Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted about 1 month ago

Responsive Password Generator App — HTML, Plain CSS, and Vanilla JS

van-js, bem
P
Jayco•470
@jayco01
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?

I’m most proud of how I built this app from scratch using only HTML, CSS, and JavaScript, no libraries or frameworks. I learned how to classify password strength based on both character length and variety using checkbox logic, and I created a fully responsive design without any media queries by using CSS clamp() and custom design tokens.

What I would do differently next time is refactor my generatePassword() function to be more efficient and DRY. It works, but it's repetitive.

What challenges did you encounter, and how did you overcome them?

One of the biggest challenges I faced was syncing the UI with live user input, especially tracking checkbox states and slider values to influence the password and its strength rating. I also initially struggled with event listeners on NodeLists and misunderstood when to use () => versus passing a function reference.

To overcome these, I spent time debugging step by step with console.log(), researched how .forEach() works with checkboxes, and learned to refactor functions into smaller, manageable pieces. I also gained a clearer understanding of when values need to be updated dynamically (instead of being set once at the top).

What specific areas of your project would you like help with?

I’d appreciate feedback on the JavaScript side of this project, specifically:

  • How I could refactor my generatePassword() function to be more efficient and DRY. Right now, it works, but I repeat a lot of if/else logic.

  • Whether my password strength algorithm is realistic or could be improved.

  • My overall use of DOM manipulation, are there ways I could make it more modular or scalable?

Any advice on structuring logic more cleanly or improving maintainability would be super helpful!

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • P
    Johnnie-Boy•250
    @Capt-Rong
    Posted 21 days ago

    You did a good job!!

    But I found some problems as tips:

    1. When page loaded, if users click checkbox without clicking submit button, the password doesn't generate but the strength updates. So you have to add function of generating password into every event of checkbox.
    2. If user don't choose any checkbox, it will not generate any password. It can prompt some alert to tell users must choose at least one.
    Marked as helpful

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
Frontend Mentor logo

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 1st-party linked stylesheets, and styles within <style> tags.

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.

Oops! 😬

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

Log in with GitHub