{"id":15603429,"url":"https://github.com/alexwebgr/password_manager","last_synced_at":"2025-07-11T05:02:38.620Z","repository":{"id":152130298,"uuid":"423738170","full_name":"alexwebgr/password_manager","owner":"alexwebgr","description":null,"archived":false,"fork":false,"pushed_at":"2021-11-04T17:11:50.000Z","size":231,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-06T04:45:30.929Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexwebgr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-11-02T06:59:37.000Z","updated_at":"2021-11-04T17:11:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"7f966d91-b27e-473d-a1be-16843a5a9232","html_url":"https://github.com/alexwebgr/password_manager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexwebgr/password_manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexwebgr%2Fpassword_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexwebgr%2Fpassword_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexwebgr%2Fpassword_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexwebgr%2Fpassword_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexwebgr","download_url":"https://codeload.github.com/alexwebgr/password_manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexwebgr%2Fpassword_manager/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264734271,"owners_count":23655631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T03:03:16.507Z","updated_at":"2025-07-11T05:02:38.604Z","avatar_url":"https://github.com/alexwebgr.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Password manager\n\n### Task\nYour task is to create a single page app for uploading user data. \nApplication [url](https://frozen-chamber-90652.herokuapp.com/)\n\n### Requirements\nThe app must implement the following functionality.\n\nThere is only one entity, a user, which has the following two attributes:\n* name - this is a required attribute\n* password - this is required and must be \"strong\"\n\nA password is considered \"strong\" if all of the following conditions are met:\n* It has at least 10 characters and at most 16 characters.\n* It contains at least one lowercase character, one uppercase character and one digit.\n* It cannot contain three repeating characters in a row (e.g. \"...zzz...\" is not strong, but \"...zz...z...\" is strong, assuming other conditions are met).\n\nFor example, the following passwords are \"strong\":\n* Aqpfk1swods\n* QPFJWz1343439\n* PFSHH78KSM\n\nAnd the following passwords are not \"strong\":\n* Abc123 (this is too short)\n* abcdefghijklmnop (this does not contain an uppercase character or a digit)\n* AAAfk1swods (this contains three repeating characters, namely AAA)\n\n### User data upload flow\n\n* When I visit the homepage of the website, I can upload a CSV file of names and passwords (this is all that I can do when I visit the homepage).\n* After uploading the CSV file, I see the results of the uploaded CSV.\n* For each row in the CSV file, the system will attempt to create a User in the database and display the result of each row on the homepage\n\n  * If a row leads to a valid User, then the User is saved and the result for this row is a success.\n  * If a row leads to an invalid User, the User should not be saved and an error should be shown in the results on the website. \n   If the password provided is not strong, then the minimum number of character changes required to make it a strong password must be displayed on the website. \n   Insertion, deletion or replacement of any one character is considered one change.\n\nFor example, uploading the attached CSV file should result in one user being saved to the database and the following result being displayed:\n\n    Muhammad was successfully saved\n\n    Change 1 character of Maria Turing's password\n\n    Change 4 characters of Isabella's password\n\n    Change 5 characters of Axel's password\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexwebgr%2Fpassword_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexwebgr%2Fpassword_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexwebgr%2Fpassword_manager/lists"}