Welcome to Project BFF, your personal space for staying connected with your best friends. It allows you to send and receive heartfelt letters to and from your selected friends, providing a secure and enjoyable way to maintain your most cherished bonds.
Project BFF ensures the privacy of your messages by securely encrypting the contents. Your letters are protected, making them accessible only to the intended recipient, ensuring a confidential and closest communication experience.
Life is busy, and sometimes you need to pause and come back to complete your thoughts. Project BFF automatically saves your messages as drafts, allowing you to pick up right where you left off. No need to worry about losing your heartfelt words. Take your time to pour out your feelings into words. Project BFF allows you to save your reading and writing progress, so you can continue where you left off. Whether you're composing a heartfelt letter or savoring a thoughtful message, your progress is safely stored, giving you the flexibility to express yourself at your own pace.
Project BFF provides a delightful reading experience for both senders and receivers. The user interface is thoughtfully designed to enhance the joy of reading and sharing letters, creating a unique and personalized experience.
Enhance your communication by attaching images to your letters. Whether it's capturing a special moment or sharing a memorable photograph, Project BFF allows you to enrich your messages with visual content. Share your experiences more vividly and add a personal touch to your letters with image attachments. Enjoy seamless integration and effortless sharing of images to deepen your connections with your friends.
Take Project BFF with you wherever you go! Our mobile-friendly Progressive Web App ensures that you can access your letters conveniently from your mobile device. Enjoy the same great features on the go as you do on your desktop.
- Installation:
- Clone the repository:
git clone https://github.com/spectrum705/projectbff.git
- Navigate to the project directory:
cd projectbff
- Setup: go to project directory
cd projectbff
create a new branch
git branch dev
git checkout dev
install requirements
pip3 install -r requirements.txt
- Run the application:
Running the server
python3 main.py
- The consumer instance needs to be run separately :
Running the consumer processing
cd consumer
python3 q_cons.py
create a .env file inside for main applicationa and consumer. Refer this
The project is built with simple html and css and certain parts of the project has javascript added to it. The main part, the backend is built using Flask in python. We are using MongoDB a NoSQL database for safely storing the data. And We are using QStash as task queue. During letter generation the flask backend gets user input, encrypts the letter data(Yes, even the images). The letter is encrypted using the a Unique letter key, which can used only by the intended receiver.In case the user attaches images as well, the image file is validate, the image data is compressed and then encrypted.
Letters(
letter_id,
title,
content,
symmetric_key,
author,
receiver,
status,
timestamp,
stamp_data,
)
All the required details of the letter are then used to form a json object, Which is then sent to the the QStash using it's API. The letter data is stored there for sometime and then safely delivered to the Consumer endpoint which is deployed separtely at another instance. At the consumer side, we Authenticate the data received using the JSON Web Token(JWT). When a request is validated, we process the task according to the task.
The point of using message queue was to reduce the time taken to process the request. There are various external APIs being used at the back, using the QStash to process the tasks at the back, helps save time and user can be freed As soon as we have gathered all the required user inputs.
Later when the receiver of the letter reads the new letter, the content is decripted using their private key. Only the reciver can read the content.
Twillio - for SMS Link
MongoBD - for database Link
AnimImagine AI API - Used for stamp generation Link
Upstash QStash - For Using the QStash as message Queue. Link
Project BFF is an open-source project and I don't think I can take care of it all, so we welcome contributions from the community. Feel free to submit bug reports, feature requests, or even pull requests to help improve the project for everyone.
Life goes on and sometimes people lose touch with each other. I never want to lose any of the precious friends I cherish and I don't want anyone else to get distant with your cherished friends either. This is a small way, to create a connection that can exist just between you and the people you cherish. If you support the initiative and sentiments or If you like the work and if you had a happy experience using it feel free to donate or support it any way (remember it's completely optional). It'd sure make me smile. I'm grateful for any of your support.
If you have any questions, encounter issues, or just want to share your feedback, please send a feedback using the site's feedback page. Thank you for using Project BFF. Strengthen your friendships, one letter at a time! ππ