The Safe Notes App is a web application developed using ASP.NET Core and Angular, providing users with a secure platform to store and manage their text notes. The key features include:
- Note Storage: Users can securely store text notes with the flexibility to categorize them as public, private, or encrypted. Public notes are accessible to all users, private notes are only visible to the note owner, and encrypted notes require a password for access.
- Authentication: The application requires Two-Factor Authentication (TOTP) in addition to JWT (JSON Web Tokens) for user authentication.
- Note Sharing: Users can selectively share their notes with others, either to specific users or publicly. Sharing options include making notes public or sharing them with specific users.
- Text Formatting: The note editor allows basic text styling, including bold, italic, headers, links, and external images.
- Password Management: Secure password storage is ensured through the use of HMAC-SHA for hashing and salting. The system also checks the strength of passwords to enhance user security.
- Secure Connection: All communications with the application are secured through SSL/TLS certificates, ensuring data integrity and privacy.
- Brute-force Protection: To enhance security, the system incorporates delays and limits on login attempts to prevent remote guessing and brute-force attacks.
- Login Attempt Monitoring: The application monitors and notifies users about login attempts, providing insights into account activity and enhancing security awareness.
- Docker Containerization: The application is containerized using Docker, facilitating easy deployment and scalability.
- .NET Core: A cross-platform, high-performance framework for building modern, cloud-based, and internet-connected applications.
- Angular: A powerful and widely-used frontend framework for building dynamic web applications.
- PostgreSQL: An open-source, powerful, and scalable relational database system.
- Nginx: A high-performance HTTP server and reverse proxy server.
- SSL/TLS Certificate: For secure communication, the application will use an SSL/TLS certificate.
- Authentication:
- JWT (JSON Web Tokens): A compact, URL-safe means of representing claims to be transferred between two parties.
- TOTP (Time-based One-Time Password): An algorithm that involves a time-based component in addition to a user's secret key to generate unique and time-limited passwords.
- Password Hashing (HMAC-SHA): Utilize HMAC-SHA as the password hashing algorithm along with a unique salt for each user to enhance password security.
- Encryption:
- AES (Advanced Encryption Standard): Utilize AES encryption to secure notes. Encrypt sensitive data before storing it in the database and decrypt it when retrieved.
- Docker: A platform for developing, shipping, and running applications in containers.
To run the Safe Notes App locally, you can use Docker Compose for a straightforward setup. Follow the steps below:
- Ensure that Docker and Docker Compose are installed on your system.
-
Clone the repository to your local machine:
git clone https://github.com/MaciejKuzmicki/Safe-Notes cd Safe-Notes
-
Build and run the application using Docker Compose:
docker-compose up --build
This command will download the necessary images, build the application, and start the containers.
-
Access the application in your browser:
Open your web browser and navigate to http://localhost:4200 to access the SecureNotes App.
-
The application frontend is hosted on port 4200 by default. If you encounter any issues, ensure that the port is available and not in use.
-
Ensure that Docker Compose is properly configured and running on your machine.
-
In case you need to stop the application, you can use
Ctrl + C
in the terminal where Docker Compose is running.
Enjoy using the Safe Notes App locally!
- Register form
- Login form
- Public Notes
- My Notes Encrypted
- My Notes After Decryption
- Login attempts
- Add Public Note
- Add Encrypted Note
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/Register_Incorrect_data.png)
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/Register.png)
After registration you will be given your totp secret as a QR Code, add this into your authenticator
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/QR_Code.png)
There is a limit on login attempts. Users are allowed to attempt login three times within a minute. Then you need to wait one minute to try again.
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/Login_Limit.png)
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/Public_Notes.png)
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/My_Notes_Encrypted.png)
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/My_Notes_Decrypted.png)
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/Login_Attempts.png)
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/Add_Note.png)
![](/MaciejKuzmicki/Safe-Notes/raw/main/Images/Add_Note_Encrypted.png)