Challenge Overview
The Planetary Data System (PDS http://pds.nasa.gov/) is an archive of data from NASA’s planetary missions. The mission data (called products) can be raw images, time-series data or text documents.
While this treasure trove of information is accessible to the public, utilization has been somewhat limited by barriers to entry such as required expertise on the domain, and familiarity with the data format.
The goal of this (PDS Storyboard) project is to develop a web application that will make the data easier to find and use by a wider range of people. PDS data is only as valuable as the ease of access and adoption – and NASA wants to make sure all this valuable mission data reaches a broader audience to further scientific discovery and research.
We are building a basic web application version. We are starting by reusing an open source web application called myyna. The point is to create a Pinterest-like social web application that address the need to make PDS data more accessible, and foster greater use of the available resources through collaboration and ease of distribution of data and research. By making PDS data easily accessible, and providing a Pinterest-like collaboration tool, the goal is to advance research and utilization of the data. This new web application will be called the “Planetary Data Storyboard” (Or PDS).
We will customize Myyna web application to include the features we need to implement in the first version of this PDS Storyboard web application.
Challenge Overview
In this challenge we are adding a Timeline feed and Activity Details feed features.
We are not giving technical details or directions in this challenge, we are open to your creativity and your design skills to implement the requirements.
Note that the Myyna web application require Mac OSX or Unix Environment, mongo <= 2.6, NodeJS 0.8.28.
Challenge Requirement
UI Changes
We are currently prototyping an update design to support the Timeline and Activity features, we are providing these mockup designs in this challenge to clarify what we need to accomplish. You are not expected to match the mockup, you will need to add new pages to demonstrate the functionality we are building, no UI required in this challenge.
Timeline Feed
Timeline Feed is a center column of users home page, it is a constantly updating list of stories from people, pins, boards, and categories that users follow/contribute to on Myyna web application. (By contribute we mean an owner, admin or a contributor).
What functionality need to be address in this challenge :
-
Implement a new logic that log all users activities in the web application.
-
Here is a list of activities :
-
Create category
-
Update category
-
Delete category
-
Add user to category
-
Remove user from category
-
Add board to category
-
Edit board in a category
-
Delete board from a category
-
Add user to board
-
Remove user from board
-
Add pin to board
-
Edit pin in a board
-
Delete pin from board
-
User follow a board
-
User unfollow a board
-
Like a pin
-
Dislike a pin
-
Re-pin a pin to board
-
Comment on a pin
-
-
All the above listed activities should be tracked properly in a new Stories model.
-
You need to log as much information as possible so that we don’t need to make multiple queries to pull required information. So adding fields for pin, board, category, user that get auto populated when fetching timeline will make performance better than making multiple queries.
-
-
The Timeline feed should send data grouped by date from recent to oldest.
-
The timeline should fetch 20 stories at a time, this should be enforced for performance considerations.
-
Some activities should be aggregated when building the feed by VERB and TYPE. i.e. User X create 3 categories, then we should see one timeline item for that “create” VERB by “User X” of type “Category” stating that the “User X created 3 categories” and list these three categories with images, name, and links to them.
-
We have following Activity Verbs :
-
create/add
-
delete/remove
-
edit/update
-
For this verb we need to provide additional information about what was edited, is it title ? description ? metadata ? image ? .. etc.
-
-
like
-
comment
-
pin
-
repin
-
follow
-
unfollow
-
anything else ?
-
-
Activity types :
-
Category
-
Board
-
Pin
-
User
-
anything else ?
-
-
-
Users should only see stories related to the category, boards, pins they follow/contribute/admin/own them.
-
Create a new page /timeline that show a real time Timeline feed.
-
The page will be populated and updated using web sockets as currently done in the web application.
-
The page should support progressive loading.
-
Notify user about new stories loaded in the timeline.
-
There is no UI requirement for the page. Placing this feature on a blank page is acceptable.
Track Activity
-
The purpose of this feature is to track history of changes that are being made to categories, boards, and pins.
-
The functionality will reuse timeline feed with difference that feed will be filtered based on the page accessed/viewed :
-
In /pins, most re-pined, and most liked page we display activity feed as user timeline, no filtering, user will see info as in /timeline feed page.
-
In /boards page we display activity feed as user timeline, no filtering, user will see info as in /timeline feed page.
-
In /categories page we display activity feed as user timeline, no filtering, user will see info as in /timeline feed page.
-
In Profile page we display feed filtered with only the activity that the profile’s user performed, and that the viewer have access to (follow/contribute/admin/own).
-
In Pin details page we display feed filtered by that pin.
-
In board details page we display feed filtered by that board.
-
In category details page we display feed filtered by the category.
-
Ask in forums if you have questions about this feed in pages not listed above.
-
-
The activity feed should also be a real time feed.
-
You can add a button to these pages that open up a popup or add a div that show the activity feed.
General Notes
-
Update data generator script to include test data for the stories.
-
This past challenge specification explains the role/user hierarchy of this web app.
-
Update readme with deployment and configuration information.
Gitlab Repository
We have cloned the Myyna github and placed it in gitlab, user the gitlab repository as basis for your work. https://gitlab.com/nasa-pds-storyboard/storyboard-frontend
You need to be logged in to view the repository.
Final Submission Guidelines
Deliverable
-
Patch file of changes.
-
Updated readme file with deployment and verification steps.
-
Text file for reviewers.