Welcome to PasswordStoreApp, a simple ASP.NET Core web application for managing passwords. PasswordStoreApp is a secure and user-friendly password management web application built with ASP.NET Core. It empowers users to effortlessly manage their passwords by providing essential features such as Create, Read, Update, and Delete (CRUD) operations. The application includes a robust search functionality, allowing users to easily find passwords associated with specific sites.
One of the standout features is the seamless integration with the OpenAI API. This integration enhances the application's capabilities by assessing password strength and generating strong passwords. The OpenAI API ensures that users maintain robust and secure credentials for their online accounts.
- Password Management: Perform CRUD operations on password entries. Easily add, view, edit, and delete passwords.
- Search Functionality: Easily find passwords related to specific sites.
- Security: Built on ASP.NET Core, ensuring robust security measures.
- OpenAI Integration: Receive password strength suggestions through OpenAI.
Please watch Demo here --> (https://www.youtube.com/watch?v=Mdk3rR7rHP8)
Follow these steps to get the PasswordStoreApp up and running on your local machine:
-
Clone the Repository:
git clone https://github.com/ajmalrasouli/PasswordStoreApp.git cd PasswordStoreApp
-
Install Dependencies:
dotnet restore
-
Update Connection String:
- Open
appsettings.json
and update the connection string if necessary.
- Open
-
Run the Application:
dotnet run
-
Open in Browser: Visit http://localhost:5000 in your web browser.
- ASP.NET Core
- Entity Framework Core
- OpenAI API
NOTE: for the app to work with OpenAI, replace the OPENAI_API_KEY in Details.cshtml file
async function askOpenAI() {
try {
// Make an asynchronous request to OpenAI API
const response = await fetch("https://api.openai.com/v1/engines/text-davinci-003/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer OPENAI_API_KEY",
},
body: JSON.stringify({
prompt: 'Suggest one 8 character length strong passwords',
}),
});
- Grateful acknowledgments to Microsoft for providing the training and affording us the opportunity to demonstrate our skills.
- Thanks to OpenAI for providing GPT models.
![1](https://private-user-images.githubusercontent.com/88502375/287693651-fb80d597-1a20-4f2e-b369-9073304fdb83.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyODYyOTIsIm5iZiI6MTcyMjI4NTk5MiwicGF0aCI6Ii84ODUwMjM3NS8yODc2OTM2NTEtZmI4MGQ1OTctMWEyMC00ZjJlLWIzNjktOTA3MzMwNGZkYjgzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDIwNDYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZmZjIxNzM2MWMzN2E1MWY5ZDYxMjNkNjYxNDRlOThmMWI1Mzg2YmRkY2ZjMTEwN2E0NmM4MjkzNDZhNmYxNTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tD9c84jlWjp4s-r-pgUt58oFclKdjOOHMArVR7zcsTY)
![2](https://private-user-images.githubusercontent.com/88502375/287693923-cbe45570-4a3e-45db-94d0-8006f6569123.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyODYyOTIsIm5iZiI6MTcyMjI4NTk5MiwicGF0aCI6Ii84ODUwMjM3NS8yODc2OTM5MjMtY2JlNDU1NzAtNGEzZS00NWRiLTk0ZDAtODAwNmY2NTY5MTIzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDIwNDYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMzYmNjZjhhZWI2ZjY5MDNhODViY2FhNGMzNGFjYzMxMDk4YjM2ZDVjY2I3ZDdmM2JlMzFmOGUwZDhlMjlhMzMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.GbvFhQLs2-wbzQDNJOfh-EfF4R1bQ071B0KwGhs3TDE)
![3](https://private-user-images.githubusercontent.com/88502375/287693755-511f6e00-7e9a-434f-bb51-fb2f7ba9e89d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyODYyOTIsIm5iZiI6MTcyMjI4NTk5MiwicGF0aCI6Ii84ODUwMjM3NS8yODc2OTM3NTUtNTExZjZlMDAtN2U5YS00MzRmLWJiNTEtZmIyZjdiYTllODlkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDIwNDYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAwYjU5ODhjZjRiNjE5MzBjMTEyNmM3ODJjNDA5ZWE2NmRhMGMwZmVjMzExZTA1ZDMxNDZkZjAzMTA2ZWM1NDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rii-A73n3opb-wuvp8IruzyR3prHsjBQSX0rt7PzO8M)
![4](https://private-user-images.githubusercontent.com/88502375/287693954-ed1be6fc-3a61-4dd2-bd3f-f2f783a99d1a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyODYyOTIsIm5iZiI6MTcyMjI4NTk5MiwicGF0aCI6Ii84ODUwMjM3NS8yODc2OTM5NTQtZWQxYmU2ZmMtM2E2MS00ZGQyLWJkM2YtZjJmNzgzYTk5ZDFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDIwNDYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJiMzMzZjYxZTJiMWY4NDAwZjY3YzlkMzg2YTQ3OWNiNzA3MWJhZWYxYjI1ODJhZDA4M2FmMTg4MzlmOWU3NDcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.0NaLZQeih5IH7_1beXKHMU4NudzxvCiSo2GLI2us5kI)
![5](https://private-user-images.githubusercontent.com/88502375/287693991-3f61bcf7-023a-4c4a-9312-d640991331ca.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyODYyOTIsIm5iZiI6MTcyMjI4NTk5MiwicGF0aCI6Ii84ODUwMjM3NS8yODc2OTM5OTEtM2Y2MWJjZjctMDIzYS00YzRhLTkzMTItZDY0MDk5MTMzMWNhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDIwNDYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZhZmEyYzlkM2YzMWVjMzNlZmU2ZDY5Y2VlZTAwMjRiYTliZjZmMWJmODcxNzZlMTVkYzliMmRiMDE1MWEzYzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.mm25tdgVfQkn6NHfMPvB_q_qexygzQutx4p6Sf77G6k)
![6](https://private-user-images.githubusercontent.com/88502375/287694016-8256877a-7e40-41b0-b697-c9b180ad4fd2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyODYyOTIsIm5iZiI6MTcyMjI4NTk5MiwicGF0aCI6Ii84ODUwMjM3NS8yODc2OTQwMTYtODI1Njg3N2EtN2U0MC00MWIwLWI2OTctYzliMTgwYWQ0ZmQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDIwNDYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZkNmQxOWExY2RmYmExNjY3NDExZjFlZmJiYzE0NTZjYzUyYTVhZjVhOTNkMDdlMjQyMTAyNzBmMTE0NmI4MjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.bvb_PXlkh1MVx1_nIjRJ09aYmRwz7m5_TIKx-PVL5mQ)
![7](https://private-user-images.githubusercontent.com/88502375/287694055-765bbbc2-5955-4530-8b2b-d9be7d446ed3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyODYyOTIsIm5iZiI6MTcyMjI4NTk5MiwicGF0aCI6Ii84ODUwMjM3NS8yODc2OTQwNTUtNzY1YmJiYzItNTk1NS00NTMwLThiMmItZDliZTdkNDQ2ZWQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDIwNDYzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcyNWU2ZWZhMjVlMzFkNTFhN2MwOTExNDhkNjA3ZWRhYWMyMTVjZmQ2NGFlNWI3Nzc4M2ExZTlkNWFlNWI2Y2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.62PbJ4fTMA5dl_L2E1yIaE_d30BVPV1CAsfVS76x9k8)