This is going to be a fairly detailed outline of what appears on which page of the site. I may have taken some liberties with how I expect some features to work. Open issues if you disagree, or just push your changes and see if anybody complains.
API requests' URLs are in code
style. Client-facing, in-browser URLS are bold. Comments are in block quotes.
API URLs are currently idealized. Whatever works.
Main navigation: "Home" (logo), "Projects", "Discussion", "About"
Requests /me
, or whatever the route is to check current login.
-
If no user is signed in, show "Sign in" and "Register" buttons to open the sign-in dialog.
-
Unread messages count. Includes private messages and replied in threads you're watching. Polls/subscribes to
/messages?involved={current_user.login}&state=unread
. Links to /messages.Current user info (login, avatar). Links to /settings
"Classify with {group.name}" Menu to show and change association to a group when classifying.
Checking for a logged-in user probably happens at a higher level; this'd just be the first place it's used.
Two tabs: "Register" and "Sign in"
Register with login, password, confirmed password, real name, agreement to privacy policy, consent to inform about new projects.
Sign in with login, password.
Third-party sign-in is off to the side, always present.
Annoying little toaster-style things will pop up in the top-right corner when something happens. Maybe the unimportant ones dismiss themselves automatically. They're not persisted anywhere. This is probably where the inter-classification-interruptions happen.
E.x. "This project just got a bunch of data, we need your help!" or "We're going down for maintenance in one hour."
This probably polls/subscribes to something like /notifications
for global notifications. Other notifications are triggered by user actions.
Social media links, privacy policy, contact link etc.
Change translation menu
The home page! Explain citizen science, what we do, why we do it, how you can help.
-
Recent activity timeline. Requests
/timeline_events
. Not sure how this list should be defined. Maybe things that involve more than a handful of people are added? New project launches, multi-comment discussions, etc.Signed-in users get more relevant info and a line showing where they last signed in so they'll know what's new. Probably dim everything after the "last sign in" point. Request becomes
/timeline_events?user={current_user.login}
.
There are other static content pages I won't get into here. "About", "Education", "Publications", etc.
List non-project-specific talk boards. Requests /talk_boards
.
-
List the threads on a board. Sticky ones on top. Requests
/talk_threads?board={board_name}
. -
List the posts in a thread. Requests
/talk_posts?thread={thread_id}
.-
Jump straight to a post.
-
A list of private conversations with other users, sorted newest-first. Requests /messages?involved={current_user.login}&sort=newest
. Conversations with unread messages are highlighted somehow. Each is linked to /users/:login/talk#{message_id}
, where private conversations take place.
General account settings (avatar, change password)
More tabs (down the side):
-
Public profile information (real name, location, bio)
-
List projects do you have special roles on
-
List the groups you belong to
-
Email/notification settings for watched projects and Talk threads
List user currently online. Requests /users?last_activity=600
, if we want a list of users who've done something in the past ten minutes. Link to their profiles.
Maybe there's some content here that's updated periodically: interviews, user-written articles?
A user's profile. Requests /users?login={user.login}
More tabs (horizontally):
-
A list of the user's favorites/collections. Requests
/collections?owner={user.login}
-
Any projects a user has a role in. Requests
/projects?team_includes={user.login}
-
Private messaging lives here. Requests
/messages?involved={current_user.login}+{user.login}
A list of "promoted" projects. Requests /projects?state=promoted
A list of categories for people who want to browse.
-
A list of projects in a category. Requests
/projects?category={category}
. Maybe promoted projects are in a section at the top.Categories might be astronomy, biology, history, etc.
I don't particularly like the slash between the owner and project, it doesn't mesh with the rest of the URL. Maybe we can try a colon?
Requests /projects?owner={owner_name}&name={project_name}
. A high-level introduction to a project is on the first tab.
More tabs:
-
A more detailed science case.
-
Details about the project.
-
List the user or group members that created the project as well as any moderators/privledged users.
-
The classification interface
-
Classify a specific subject.This is probably only available to expert classifiers to create gold standard data.
-
List of recent/featured discussions on the project and its subjects
-
List of threads on a board. Pinned threads on top.
-
List of posts in a thread
-
For linking directly to a post.
-
Display the subject image(s) and list any available metadata (with a world/sky map if there are coordinates), users' short-ish comments on it, any other posts that reference it, and any user collections it appears in. Requests /subjects/subject_id
.
Subjects are scoped to projects, so though a subject might exist twice in the system, the comments shown will be specific to the project. If there are other projects using the same subject, we should link to those here too.
View a set of subjects gallery-style, each linking to the collection-framed subject info page.
View a subject info in the context of a collection. This is probably exactly the same as the subject info page, but framed within a list with next/previous navigation. Think Flickr.