Searchable news feed with clickable links
Filter representatives by address and get contact info
According to Forbes, only 34 percent of American voters can name the three branches of the federal government. When it comes to making informed political decisions, the statistics are even more frightening. Political ignorance and low turnout are on the rise and are threatening the foundations of democracy. We created Dēmos (the root word for democracy in greek) because we recognize the need for an easy way for citizens to 1. Make real-world change, 2. Vote securely, and 3. Make more informed decisions.
What it does
Dēmos offers three services - blockchain and GPG-based secure voting, curated and searchable news about the most important recent events from hundreds of sources (using Elasticsearch), and an easy way to make political change by contacting your representatives (Phone2Action). All of these features are integrated into one clean, user-friendly UI.
How we built it
We used Flask on a Google Cloud server as our python backend for both the blockchain and search portions. The frontend was made with Vue.js and the backend for the contacting representatives portion was made with JS. We integrated them using HTTP methods.
Challenges we ran into
We had to figure out how to efficiently parse news sites (Newsapi) and extract key information, as well as learn how to use the Elasticsearch-py API to retrieve relevant articles. Initially, we spent several hours experimenting with different scraping APIs and backend options before finding ones that fit our needs. We also faced challenges when integrating our Python and JS backend with the Vue.js frontend, which we had never done before.
Accomplishments that we're proud of
We effectively split up our portions and managed to seamlessly integrate them into a cohesive, beautiful, full-stack application. Our successful ground-up implementation of blockchain with RSA signing of votes was also an accomplishment that we're very proud of.
What we learned
This project taught us how to create a full-stack web app and about the challenges that pop up while doing so. We also became very familiar with Elasticsearch and now feel confident in our abilities to use it in future projects. We also learned how to use Postman to make requests and Vue.js, something none of us had used prior to this competition.
What's next for Dēmos
For the search, abstractive text summarization would enable readers to get a quick summary
The 'contact your representatives' functionality could be expanded to provide information about their voting history and positions on common issues. We attempted this but soon realized no large, up to date dataset was easily parsable in the time we had.
The blockchain voting functionality has an obvious next step of upgrading to PGP signing for true security.