Skip to content

Project BFF: Craft Moments, Share happiness! πŸ’Œ Connect with your besties in a whole new(no, actually OLD) way! Project BFF lets you send securely encrypted letters to your chosen friends. Enjoy a delightful reading experience, and make every connection special. Because some friendships are meant to last forever! πŸš€

License

spectrum705/projectbff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

70 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

projectbff

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.

Features

1. Secure Messaging πŸ”’πŸ”‘

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.

2. Draft Saving πŸ§™πŸ½β€β™‚οΈ

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.

3. Optimized Reading Experience πŸ“ƒ

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.

4. Image Attachment πŸ“Έ

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.

5. Mobile-Friendly Progressive Web App (PWA) πŸ“±

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.

Demo

ProjectBff Two demo Accounts with the following credentials have been created so you can test it out if you want.

username: alpha
password: test1234
username: beta
password: test1234

Technical Details and Local Development

  1. Installation:
  • Clone the repository:
git clone https://github.com/spectrum705/projectbff.git
  • Navigate to the project directory:
cd projectbff
  1. Setup: go to project directory
cd projectbff

create a new branch

git branch dev
git checkout dev

install requirements

pip3 install -r requirements.txt 
  1. Run the application:

Running the server

python3 main.py
  1. The consumer instance needs to be run separately :

Running the consumer processing

cd consumer
python3 consumer.py

Environment Variables

create a .env file inside for main applicationa and consumer. Refer this

Working of the Project

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.

LETTER OBJECT
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.

External APIs Used

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

Screenshots

Home page

home page

Writing page

write Page

Letter page

Letter Page

Gallery view

gallery Page

Ecncryption Steps

Encryption steps

Application Structure

Application structure

Contributing

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.

Support

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! πŸ’ŒπŸŒŸ

About

Project BFF: Craft Moments, Share happiness! πŸ’Œ Connect with your besties in a whole new(no, actually OLD) way! Project BFF lets you send securely encrypted letters to your chosen friends. Enjoy a delightful reading experience, and make every connection special. Because some friendships are meant to last forever! πŸš€

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published