Skip to content

Secure Password Generator and Strength Checker for all your online accounts. Mix letters, numbers and symbols to get a random password and check its strength against a brute force attack.

Notifications You must be signed in to change notification settings

rafitajaen/generatify

Repository files navigation

Generatify - Strong and Secure Passwords Generator for Online Accounts


Generatify is an open source Angular 14 SPA (Single Page Application) written in Typescript and built with TailwindCSS.

The main purpose of the application is to generate strong and secure passwords by randomly combining letters, numbers and characters.

In this way, the application prevents patterns that can make the password an easy target for brute force attacks.


Getting Started

You can visit a LIVE Demo here: Generatify LIVE Website

Run Generatify locally

If you prefer to run this application locally you must first make sure you have the latest LTS version of nodejs installed.

By the time you have already installed a version of nodejs :

  1. Open your IDE

  2. Clone this repository

      git clone https://github.com/rafitajaen/generatify.git
    
  3. IMPORTANT: Do no skip this step because npm < v7 don't install peerDependencies by default. More info.

      npm install --legacy-peer-deps
    
  4. Build and serve your application. Run the following command on your console:

      ng serve
    
  5. Open your browser http://localhost:4200


Documentation

Architecture

The source code follows a feature-driven structure proposed by Shijin Nath to make medium-sized applications easily scalable and maintainable. You can read more about his vision here.

src
├───app
│   ├───core
│   │   ├───components
│   │   │   ├───footer
│   │   │   └───navbar
│   │   ├───models
│   │   └───services
│   ├───features
│   │   ├───generator
│   │   │   └───components
│   │   │       ├───password-input
│   │   │       ├───password-strength
│   │   │       └───strength-score-badge
│   │   ├───hero
│   │   │   └───components
│   │   └───illustration
│   │       └───components
│   │           ├───larry-good
│   │           ├───larry-secure
│   │           ├───larry-strong
│   │           ├───larry-vulnerable
│   │           └───larry-weak
│   └───shared
│       └───components
│           ├───logo-icon
│           └───logo-text
├───assets
└───environments

Password Service

This is the main service of the application. It depends on two npm packages:

  • generate-password-ts: This library was forked from the original Node.js version generate-password. This forked version was totally re-written in TypeScript from the original JS version and supports not only Node.js but also browsers without need of crypto-browserify. It generates random and unique passwords.

  • @zxcvbn-ts: It is a password strength estimator inspired by password crackers. It recognizes and analyzes over 40 thousand common passwords using pattern matching and conservative estimation and filters out common first names, last names, popular words from Wikipedia and common words in many cultures, and recognizes common patterns like dates, repetitions (e.g. 'aaa'), sequences (e.g. 'abcd'), keyboard smashes (e.g. 'qwertyuiop'), and l33t speak.

The password service encapsulates in a single object all the necessary information obtained from the packages mentioned above:

interface Password {
  value: string;
  crackTime: string;
  score: number;
}

This service is also responsible of the state management and is consumed by the components through an observable.


🚨 Forking this Repo (please read!)

Many people have contacted me asking me if they can use this code for their own website, and the answer to that question is usually yes, with attribution.

I value keeping this site open source, but as you all know, plagiarism is bad. I spent a non-trivial amount of effort building and designing this app for my portfolio, and I am proud of it!

All I ask of you is to not claim this effort as your own.

TL;DR

Yes, you can fork this repository. Please give me proper credit by linking back to my github account. Thanks!


Screenshots

generatify-screenshot


Credits and Resources Links

Angular File Structure and Best Practices by Shijin Nath

Larry Character Illustrations.

Google Font to SVG


🧐 Let's Get in Touch!

I look forward to gaining new knowledge, sharing my experiences, collaborating and creating amazing products to make the world a better place!

Linkedin Badge

🧠🏭🤝🌍

About

Secure Password Generator and Strength Checker for all your online accounts. Mix letters, numbers and symbols to get a random password and check its strength against a brute force attack.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published