Coder Social home page Coder Social logo

goco-student's People

Contributors

adamvig avatar

Stargazers

 avatar

Watchers

 avatar  avatar

goco-student's Issues

Add "See What's Open"

A view that shows a list of all of the establishments on campus with hours and whether or not they are open.

Requires finding the hours of all establishments on campus.

A percentage red/green bar on each item in the list with the text "open until :" or "closed until :" with expandable full list of hours.

Icon: ion-ios-clock, ion-ios-clock-outline, or Clock by Nicholas Burroughs
Text: "See What's Open"
Color: #A52924 (dark red)

Add dining menu

Add dining menu from Go Gordon Dining Services Page.

Only have menu for next meal, which is provided by the dining services page referenced above. The entire menu is located elsewhere on the site, but is not formatted in a way that is possible to parse into specific days' menus. Menus are only referenced by the day of the week they fall on.

Fix banner

Z-Index is too low for the banner to show up over the modules. Set Z-Index to 11 or higher.

Add platform info to usage data

Platform was added in UsageService, but since UsageService has been removed, there is now no method by which to add the user's platform info to their stored information in the database.

Possibilities:

  1. Send platform object with every API request, store it via the usage service on server.
  2. Send platform object to "signup" endpoint which creates user object in database, totally removing the need for CouchDB support in the app itself. However, this approach does not support changing platforms (which most users will not do outside of updating their device).
  3. Send the platform info to the database directly from the app, bypassing the usage service on the server. This makes the app reliant on the CouchDB support that I am trying to remove from it.

Add privacy policy popup and data caching opt-out

Add screen on first login to display privacy policy and allow users to opt out of data caching.

GoCo Student stores some data about you in my own database. Your password is never stored anywhere. By default, the app stores your personal information: chapel credits, meal points, student ID, etc. This data is used to make the GoCo experience better for you.
If you would like to opt-out of having this data stored, please tap Opt-Out below.
[Opt-Out] [Continue Storing Data]

Opt-Out button yields confirmation popup:
Do you really want to opt out of data caching?
[Never mind] [yes]

Fix configuration modal on iPad

Configuration modal is not anchored to the bottom of the screen on the iPad Air. Instead, it has seemingly random amounts of padding on the sides.

Also, the module titles in the modal are cut off.

No way to tell if user has uninstalled app

Currently, there is no way to tell if a user has the app on his or her phone. The user is retained in the database even if they uninstall immediately after installing and signing in.

One way to remedy this is to delete the database at the beginning of every year and allow it to fill up again as users use the app. This is a method of "pruning" users who have uninstalled the app or gone dormant. For example, graduating seniors will no longer need the app and will probably uninstall it.

Force reset of data when app is updated

if current app version is different than stored app version:
delete credentials (sending user back to login screen, forcing re-login)
delete stored modules (forcing configuration screen to pop up to show user the potential new module options)

This will also force the user to go through the new login validation screen which will prompt the user to accept the privacy policy at the end.

Add meal points transfers

Requires the server to support automating the My Gordon meal points transfer interface: AdamVig/AdamVigData#1, AdamVig/AdamVigData#2, AdamVig/AdamVigData#3, AdamVig/AdamVigData#4.

Separate view.

Fields:

  • Transfer to [email protected]
  • Amount to transfer ____ (number input)
  • I confirm that this will transfer ___ meal points from ____ (me) to ___. (check box)
  • Submit (disabled until confirmation checked)

Loading animation same as others, text "Transfer in progress".

After loading completes, display instructions:

NEXT STEPS:

  1. Tell ______ to confirm the transfer via GoCo Student.
  2. Auxiliary Services will approve the transfer.
  3. Transfer is complete!

Icon: ion-arrow-swap, ion-paper-airplane, ion-pizza, or ion-cash
Text: "Transfer Meal Points"
Color:

Add weather

Add simple temperature display module.

Should auto-refresh instead of refreshing only on demand.

Type: info module
Icon: ion-ios-sunny-outline, ion-ios-sunny, ion-ios-cloud, or ion-ios-cloud-outline
Label: Temperature in Wenham
Color: #f3c520 (light yellow)

Remove modules that are no longer in defaults

Modules that are added to defaults, saved in users' configuration data, then removed in a later version of the app should be automatically removed in a function similar to addMissingModules.

Perhaps this function could be renamed to updateDefaults.

Logic:

for each module in user modules
     if name does not exist in default modules
         remove module from user modules
 for each module in default modules
     if name does not exist in user modules
       add module to end of user modules

Add suffix property to modules

'Prefix' property already exists, currently only used for dollar signs in front of mealpoints and mealpoints/day. 'Suffix' will be used for '℉' (degrees fahrenheit) in temperature module.

Directly display errors from server

Instead of having custom error messages for every imaginable error type in the app, pass the error messages straight from the server's responses.

Check username and password on login

When user submits login form, display loader ("Checking login") and send request to /checklogin endpoint which will perform a test login on Go Gordon and return either 200 OK or 401 UNAUTHORIZED.

This route will only be triggered if this is the first time the user has logged in. LoginController will determine that it is the first time a user has logged in if the /user/firstname.lastname route returns 404 NOT FOUND.

If login is successful, display checkmark animation and display privacy policy / data caching opt-in.
If login failure, display red "x" animation and link to login screen with text "← Try Again".
If unexpected error on server (any code that is not 200 OK or 401 UNAUTHORIZED), display yellow "?" animation and link to main screen with text "Continue Anyway →".

Stop asking for appinfo with every request

  1. When app is opened, get appinfo and set a variable to the current time.
  2. When user makes a request, check if time elapsed since last appinfo request is great than five minutes.
  3. If it is, request appinfo along with whatever the user requested.

Support iPhone 4 screen size

Currently the chapel logo on the login page does not fit on the screen of an iPhone 4.

Either put in a device-specific media query, use the Ionic body classes, or decrease the general size of the chapel logo so it will fit on all screens.

Add meal points per day calculator

Requires last day of semester to be stored in database.

Simply divide meal points by the number of days left in the semester.

Color: #B76BFF (bright purple)
Text: "Meal Points Per Day"
Calculator Icon: ion-calculator

Modularize interface

Create directives or separate template files for the interface of the app.

Allows for user configuration of what they want to see in the app, for example if a commuter student doesn't care about meal points they can see only chapel credit.

Allows for adding a large number of data modules without cluttering the display unnecessarily.

Configuration of the display should be available via the header bar menu at all times.

Consolidate postlogin view into login view

Post login currently interrupts the expected flow of logging in to the app to provide a service that most users will not need.

Current Flow of Events

  1. Login
  2. "Checking Login..." (at least 250ms)
  3. Result:
    • "Valid Login" -> tap Continue
    • Timeout -> tap Continue Anyway
    • "Invalid" -> tap Try Again
    • "Unknown" -> tap Continue Anyway

Improved Flow of Events

  1. Login, check if credentials are valid (display loading spinner on login screen)
  2. Result:
    • "Valid" -> automatically continue to next screen
    • "Invalid" -> display "x" and text "invalid login" on login screen
    • "Unknown" -> automatically continue to next screen
    • "Timeout" -> automatically continue to next screen

The improved flow of events mostly takes the user out of the equation. The user does not care about any of these internal states and should not have to interact with any of them except "Invalid Login."

The _postlogin.html template and PostLoginController should be repurposed for the privacy policy.

Offload usage tracking to server

Currently, usage is tracked via requests sent from the app directly to the CouchDB database.

However, all of the relevant usage information could be sent along with each request to the server and the server could interact with the CouchDB database. This also allows for the creation of simple endpoints for usage tracking: /createuser, /trackuser?requesttype=____&requesttime=_____

Fix module sizes on iOS

Modules do not respect height: 50% on iOS, instead taking up 100% of the viewport height.

Enable adding of new modules without version change

For development only - for users, new modules will only ever be introduced when the version changes.

In HomeController, use ModuleService.updateModules(defaultModules, selectedModules) to add changes in to the user's saved copy of the modules.

Store more user data

Change UsageService to include:

  • platform
  • number of requests of each type of data
  • version of app

Remove CouchDB dependency

  • Get app info including banner via API endpoint
  • Add new user creation in database to LoginController via /adduser endpoint

Add printer credit

Requires running a server on campus to access printer credit from the Gordon network (print.gordon.edu resolves to a locally-hosted website).

Add a module to view printer credit.

Icon: Print by Rodolfo Alvarez, ion-ios-printer, or ion-ios-printer-outline
Text: "Printer Credit"
Color: #00A200 (bright green)

Fix turning off all modules

The user currently has the power to disable all available modules, leaving a blank blue screen.

Add a function that checks if at least one module is selected before allowing the user to deselect a module.

The function should create an informational popup to explain why the user can't disable the last module, or the check button on the last module could simply be disabled if selectedModules.length == 1.

Add campus events

Real-time display of events happening on campus split into categories:

  • Now
  • Tomorrow
  • Later This Week
  • Next Week
  • Future

Add barcode

Generate barcode using student barcode number from /whoami page on Go Gordon so students can scan at chapel.

Add school countdown module

Add module with number of days left in the semester.

Data required: date of last day of semester
Color:
Icon: ion-ios-calendar-outline
Label: Semester Countdown

Add student ID

Get student ID from Go Gordon.

Icon: ion-card or ion-person
Label: Student ID
Color: #F2534D (light red)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.