User:Martyav/Apps

Brainstorming
Part of my Outreachy project involves creating a web app to demo how to make requests, parse JSON, and display images/text from the API. Such an app is aimed at helping beginner programmers, and people new to the API. Below is some brainstorming:


 * 1) Featured article multiple choice quiz. The first line from a random featured article is displayed, with the title and image obscured. The correct title, and 3 incorrect titles from related articles, are displayed on screen. The user clicks, touches, or types their choice. If they are confused (not all featured articles have great first lines), they can ask for a hint, and get the second line. After they choose, the title and image are revealed, and they can click on any of the titles on screen to visit the page.
 * 2) Match game. Display images and titles from 5 random articles. Make the user match them by dragging them together, or by typing into a field (if the titles are numbered 1 to 5, and the images are labeled A-E, the user types 1A to match title 1 with image A). Correct matches snap together and are added to a list. When all matches are correctly made, the user can visit the articles.
 * 3) Distance from philosophy. 97% of all articles link to the philosophy article. Display a (social media?) preview of a random article and make the user guess how far the article is from philosophy. After they guess, display the true distance, according to a web crawler. Display the articles and their images along the way in a list view (table view)

Adding a simple search and display feature to any of these apps would demonstrate basic functionality in a straightforward way for coders who need to cut to the chase. The game section would demonstrate more complicated features. We could also have a sign up and POST request feature to demonstrate this important functionality, but it might encourage (accidental or purposeful) wiki vandalism, so it needs to point to a page that people can use as a playground.

Language support

While most of the sample code hits the English Wikipedia, there is no reason why our app should be English-only. We should allow users to select their language so they can view articles from Wikis other than Wikipedia.en. We can reduce translation issues in the UI by sticking to icons and clear affordances, with text not from API hits kept to a minimum. Documentation for the apps should be translation tagged.

User flow/rough mockups

 * Wikiquiz
 * User contribution visualizer
 * Feature feed

Existing apps
Edit counter - a highly thorough data analysis of user contributions per wiki

Frameworks/libraries
We'll be using Flask, and Bootstrap for styling.

Spellchecker
Pyspellchecker - supports German, Spanish, English, Portuguese, and French

Data visualization tools
Pandas - very popular, basic functions for charting

Seaborn - more choices in terms of presentation

Bokeh - designed for integration with web browsers

Pygal - pretty Python charting, with fairly simple syntax & web integration