💡 Inspiration

Sometimes, things are hard. We might feel discouraged and lack confidence to stand up for ourselves. Having a supportive environment to get advice or share our thoughts is important for our well-being.

However, some of us might not have this support system. We might not have the resources available to reach out for help.

Therefore, Planet Support is here to help. Planet Support is an online application that aims to spread positivity and encouragement all across the world.

When someone is feeling down, they can visit Planet Support to read uplifting messages from other visitors. Because, there are many people in this world that believe and support us. We are not alone in this world.

Visitors can visit Planet Support to send an encouraging message for everyone.

Little by little, with each and everyone’s support, we can build a supportive place on the Internet!

🔍 What it does

Planet Support is a platform for people around the world to show their support to others, by leaving positive messages for others to read. Users can sign up for an account and create new messages, posting them to the database.

These messages can then be retrieved from the database and displayed on the world map, where visitors can view these messages and visibly see that there are many people from different walks of life who want to show their support.

🔧 How we built it

The posting page is built with Flask. The session management is handled with Flask-Login. In order to increase security, bcrypt is used to hash passwords before storing it into the MongoDB.

It uses the hate speech detection by pysentimiento (credits below) to prevent hate messages from being sent.

Geoapify’s Address Autocomplete API is used to create the autocomplete address bar. This way, users are able to easily find the location they want their message to be sent from.

The backend API was built with Flask. A GET request is used to get all the messages saved from the MongoDB database into the frontend.

Both the posting page and API is deployed into a droplet on DigitalOcean.

For the public view part of the frontend, it is built using Vue, and hosted on Vercel. The design is meant to look futuristic and cool. We display positive messages from people all around the world, and have it appear in the messages log. We use Planetary.js to display the locations from which the poster sent the message, to show that people from around the world are trying to show their support.

🏃‍♂️ Challenges we ran into

We ran into issues trying to get planetary.js to work on Vue, as the code provided was meant to read from a static file of Planetary.js. We managed to find a workaround by digging through the source code and copying the relevant plugin code into Vue so it could be used directly.

We also had issues trying to connect our frontend and backend, where the Vercel hosting prevented us from accessing our backend API as it originally used http instead of https. We managed to find a fix by using a domain name, and changing the previous references to http site for d3 to the https version.

🏅 Accomplishments that we're proud of

Deploying our applications onto DigitalOcean Making use of PyMongo to work with MongoDB Figuring out how to use Planetary.js with Vue and make it visually appealing.

🧠 What we learned

Understanding the importance of hashing passwords and how the process works Learning what is session management and how to implement it with Flask-Login Learning how to use MongoDB to help use with storing data in our project Learn more on NLP, it’s capabilities and methods to detect hate messages

⏭️ What's next for Planet Support

We hope to add more specific support pages for different groups of people, so that the people posting support messages can write to show their support for more specific topics. This would also improve the experience as users would have an easier time to find messages that would help them the most.

🗎 Documentation

Repositories in our Github Organization

  • PlanetFrontend for our Vue frontend code
  • mapper where our hate message detection, and location autocomplete parts are

Hosted links

Credits

@misc{perez2021pysentimiento, title={pysentimiento: A Python Toolkit for Sentiment Analysis and SocialNLP tasks}, author={Juan Manuel Pérez and Juan Carlos Giudici and Franco Luque}, year={2021}, eprint={2106.09462}, archivePrefix={arXiv}, primaryClass={cs.CL} } % Hate Speech Detection % Spanish & English
@inproceedings{hateval2019semeval, title={SemEval-2019 Task 5: Multilingual Detection of Hate Speech Against Immigrants and Women in Twitter}, author={Basile, Valerio and Bosco, Cristina and Fersini, Elisabetta and Nozza, Debora and Patti, Viviana and Rangel, Francisco and Rosso, Paolo and Sanguinetti, Manuela}, booktitle={Proceedings of the 13th International Workshop on Semantic Evaluation (SemEval-2019)}, year={2019}, publisher= {Association for Computational Linguistics} }

Built With

Share this project:

Updates