know Whatsup - A social media driven Wikipedia viewer
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
models
routes
static
tests
utils
.gitignore
README.md
app.js
package.json

README.md

Wikipedia-Viewer

The purpose of this webpage is to help people learn more about the issues being discussed in their local and global community without reliance on any specific news provider. This is done by monitoring social media for trending topics and then finding popular Wikipedia articles relating to those discussions.

Technical Details

In addition to providing a Wikipedia search engine, this webpage generates 4 carousels dynamically as follows:

Trending near you:

get user IP => get user geolocation => get WOEID (Yahoo's area code needed for Twitter query) => check if data for that WOEID exists in MongoDB database and is less than 1 hour old => (if no recent data is found) search Twitter for top 50 trending topics => search Wikipedia for popular articles relating to each topic => select articles based on image availability and pageviews from the previous day => return data to frontend and cache to MongoDB

The 'Near You' carousel also features a map which allows the user to change their assumed position by clicking anywhere on the globe. This feature lets you quickly check out what is trending around the world!

Trending Worldwide:

The same as above but getting IP and geolocation is not necessary as the world WOEID is constant.

Popular

Generated based on top 10 most searched items and sorted by pageviews.

Most Liked

Every user had the ability to upvote an given page once. The most liked carousel displays these pages in descending order.

Performance

This page takes full advantage of Node.js' asynchronous nature by allowing many API calls (potentially 100 at a time) to run in parallel. Furthermore, care is taken to cache data whenever possible and images are compressed by middleware. To avoid 'callback hell', promises are used heavily and code is broken in several reusable functions.

Tests

Several automated tests have been written in Jest to test the asynchronous output of the various Express modules. These can be found in the 'tests' folder.