
Encrypt is a full stack application created as a university project for a cybersecurity course. I had often heard about end-to-end encryption (E2EE) in the context of secure messaging apps such as Telegram and Signal. After learning how E2EE works in theory during lectures I decided to implement it in a real world web application.
Encrypt was built with the MERN stack (MongoDB, Express.js, React, Node.js). The core idea is simple: demonstrate how users can encrypt and decrypt messages using public private key pairs. The application generates two keys for each user. A public key is stored in the database, while a private key is stored on the client side. When one user wants to send an encrypted message to another, the message is encrypted with the recipient's public key and can only be decrypted with the recipient's private key. This was achieved with the help of bcrypt and openpgp libraries.
Finally, the project was deployed using two services: Render for the backend and Vercel for the frontend.