Political polarization has increased significantly in the past years and months, especially in the USA, where Democrats and Republicans are as divided as ever. The goal of PurplePOV is to connect users on different sides of controversial issues, spark meaningful conversations, and expose users to fresh points of view.
What it does
Users choose a partisan issue in U.S. politics and mark their position on a numerical scale, and they’re matched with a user from anywhere in the country with an opposite viewpoint. They then engage in conversation using our real-time chat functionality. An extremely novel component of our project is the feature where users can set “banned words” for their conversation, which will be censored out along with any profanity in the chat. This ensures that conversations are as productive as possible, rather than both sides spewing conspiracy theories or ignorant statements that can be hurtful. Users can also generate recent news articles from unbiased media sources about the topic to spur conversation when it becomes stale and become more informed. Our Chrome browser extension parses users’ Twitter feeds for controversial topics, and will encourage users to engage in conversations about these topics through our application.
How we built it
We built the large majority of our project using Node.js, MongoDB, Express, and Vue.js, which altogether served as the frontend and backend of our project. We used Socket.io to implement our reactive chat functionality, and various other libraries and APIs to help with fuzzy-search, persistent log-in, news generation, etc. We used the Chrome Extension API to build our browser extension, AppSmith to create our political affiliation quiz, and the Google Cloud Platform — specifically Firebase Cloud Functions — to parse user’s twitter pages using Puppeteer.
Challenges we ran into
Accomplishments that we're proud of
We are proud of being able to implement real time chat using sockets as well as persisting our data to MongoDB. In addition, we are also proud of being able to complete this project together. As young adults coming of age during such a historic election and period of political/civil unrest, we were inspired to build this project in order to help bridge the gap between the two political parties. We're hopeful that through projects like PurplePOV, we'll be able to address the inequities that different groups of people in this country face on a daily basis, united as one nation.
What we learned
With most of our team being new to Vue, Socket.io, and MongoDB, this was a really great challenge for us, and we were able to grow our knowledge of this tech stack quite a bit! Specifically, we learned a lot about creating APIs and managing HTTP requests, organizing a well structured No-SQL DB schema, and integrating components like Socket.io into our web server to make our chat reactive. We also learned how to work with each other, and manage each of our strengths and weaknesses both technically and nontechnically. It was crazy how well we were able to work together given that we have never met each other in person. We definitely became really great friends through this project!
What's next for PurplePOV
We hope to implement a group chat feature with 3 or more users, which will hopefully allow for more engaging and enlightening conversations. In addition, we would like to have a question suggestion functionality, which will use machine learning and natural language processing to generate relevant insightful questions about the topic which will hopefully spark more discussion. We also plan to continue perfecting the Chrome Extension and possibly expand to other social media platforms beyond Twitter.
We are submitting this project to the Person-Person Vertical, and the Appsmith, Domain.com, and Google Cloud sponsored prizes.