Inspiration
“People don’t actually read newspapers. They step into them every morning like a hot bath.” -Marshall McLuhan, 1920 Newspapers in that era served a purpose greater than just a medium to share news, they had a character. A character that could grow the reader's creativity with short stories and poems or challenge their logical thinking by having them do crossword puzzles or sudoku. The charm of a newspaper has been lost as it has become more utilitarian in the modern period thanks to news aggregator apps like google news and apple news. Here's our attempt to use the latest technology to restore the flavor of the newspaper and make it as accessible as any other contemporary news aggregator.
What it does
Our web-app is designed to replicate the visualization of the newspaper on display along with the features that give it a character. The app gets its character by making the entire experience as personalized for the user as it gets. Starting with the general news section, which generates a profile about the user depending on how much they spend on each article and then suggest them with the latest news surround it.
We have noticed that contemporary news media has been portraying future in the dimmest of light possible. We as humans consuming this mass media have been unconsciously taking steps to make the future less worse rather than making it more exciting. We want to give a glimpse of the future to the user, so that they can look forward and be excited about the future with the help of predicted news . It also gives them an idea how the incremental change in their day to day life can have a monumental change in the future. The predicted news stories is personalized according to the user's profile.
The user can connect their Spotify, we will show them how the songs by their favorite artists are doing around the world.If the user connects their Spotify, we will use their top 10 artists and show them jokes around the artist, making it a personal experience. If the user decides not, we will use USA top 10 Artists to generate jokes. We realized how much we missed crossword puzzle in newspapers from our childhood, so we decided to bring it back with a twist. The crossword is made using words from the articles through the newspaper, along side crossword there are sudoku puzzles too. Along with puzzles, we also remembered how our creative thinking was challenged by reading short stories, it used to give out imagine a green light to expand on the story. We brought back short stories and poems with a twist. The short stories and poems are also personalized according to the user's profile. This allows the user to have a very personal experience when reading The Proprium Times.
Along with reading, we wanted to give the users ability to take aesthetic photos with their newspaper on their table. The ShARe feature allows the user to put a AR-3D visualization of the news article infront of them sharing a photo of it on social media.
We built the app keeping the accessibility features in mind, we have included text to voice feature for anyone who wants to experience the app through audio.
How we built it:
Client: For this project, we decided to create a Progressive Web Application using Netlify which helped us accelerate development by connecting to our GitHub repository. The front end of the entire application was programmed in ReactJS with the philosophy of giving users the authentic feeling of a vintage newspaper. We decided to revive certain components which were very common in olden newspapers but got lost in time to further enhance this feeling. We also used turn.js to complete the true sense of turning the newspaper.
Server: We have a python-based API with 12 end-points with an instance of postgre SQL database that handles most of the features for our web app. It utilizes a library that we wrote by ourselves to support it. The dev environment of the API is public without authentication : https://domusback.herokuapp.com/get/pred It allows us to showcase how our API works in the production environment. Library: newScrapper() : Handles all the features associated with gathering news articles for the user . |__updateGeneralNews(): populates the storage with news, articles that would fit the user's profile.
Predictive() : Handles all the features associated with AI-generated texts: |getPredictiveNews() : Generates a prompt from the user's profile and sends a request to GPT-3. Then it parses the request and populates the storage. |getJokes(): Generates a prompt from the user's Spotify top 10 artists and sends a request to GPT-3. Then it parses the request and populates the storage. |getShortStory(): Generates a prompt from the news article's associated with the user and sends a request to GPT-3. Then it parses the request and populates the storage. It also searches the internet associated with the story. |getPoem(): Generates a prompt from the user's profile and sends a request to GPT-3. Then it parses the request and populates the storage.
generator(): Handles the methods to generate a personalized crossword for the user. |___getCrossword(): Using NLTK, it searches for the pronouns from the contents of the news articles associated with the user and then scrapes the internet for the definition which is used a close. Then it class the methods from the crossword class to generate the legend for the personalized crossword for the user.
/post/userID=?/key=? : When the user loads the app, this request is sent to the API to populate the database with the information needed by the app. This reduces the latency and makes the user experience extremely fluid. /get/news/userID=?/key=?: it returns a response with the latest news /get/pred/userID=?/key=?: it returns a response with the predicted news /get/crossword/userID=?/key=? : it returns a response with legend for the crossword /get/jokes/userID=?/key=? : it returns a response with the personalized jokes for the user /get/poems/userID=?/key=? : it returns a response with the personalized poems for the user /get/top100 : it return a response with the top 100 songs in US.
Challenges we ran into
- Merge conflicts: At a point, The repo for the web app was being committed by 4 of us concurrently, it led us to having quite a few merge conflicts. Some of which took a lot of time to fix as it wasn't displaying the head and tail of the conflicts. However, because of our feature ownership we were able to mitigate through the situation very effectively.
- Lack of AR libraries for react: Because of the limited amount of options we had for react libraries for AR, and the ones that we found were mostly un-documented, we ended up spending a lot of time in figuring out the solution for the shARe feature. However, echo3D's asset delivery came in clutch to help us mitigate through the situation.
- deployment pipeline breaking: In the middle of the development, our dev environment started through issues and eventually collapsed. It broke our deployment pipeline and it took us another hour to get it up and running.
Accomplishments that we're proud of
- Feature ownership: After brainstorming the idea, everyone picked up a feature that closely aligned with their skillset and owned it, till it was integrated with the main app. This helped us achieve faster and effective development cycles.
- Rapid ideation-development-deployment pipeline: While we were brainstorming, we started setting the development pipeline
What we learned:
As a team we learned that planning and hackathon doesn't go hand in hand. There will be issues starting from deployment-pipeline failure to wifi, and we learned how to adapt and mitigate through the unexpected. Individually: Hasan, never worked on react web app, so it gave him the opportunity to be confident about his web development skills. Hruday, realized Red Bulls doesn't solve merge conflicts. He learned design 3D models and deploy them using echo3D. Sai, he learned how to develop a progressive web-app and the caveats that come alongside it. For Ano, it was the first time working with a API with 12 end-points, setting up an effective pipeline so that new features can be updated as soon as they came up, and the heroics of heroku. Six of us with unique skillets and different ideas regarding each feature learned how to get together and work for a better cause. With every other brilliant feature we pursued, we encountered new errors, bugs, and issues from which we had to bounce back with new creative solutions. With the time constraint along with being stuffed with classes and internships, every single one of us learned to push ourselves to the limit and beyond to make this vision come true.
What's next for The Daily Prophet
We want to optimize on certain features of the app, like the recommendation model, image generation for the predictive news. We would also like refresh the AR-share feature for the app and make it more polished. We envision at app as a solution that will help the users lead a more informed lifestyle
Built With
- fast-api
- gpt-3
- javascript
- python
- react
Log in or sign up for Devpost to join the conversation.