Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve Data Analytics #961

Open
22 of 40 tasks
JJamesWWang opened this issue Feb 28, 2023 · 0 comments
Open
22 of 40 tasks

Improve Data Analytics #961

JJamesWWang opened this issue Feb 28, 2023 · 0 comments
Assignees
Labels
medium-priority Needs to be done within about a month or so. python Pull requests that update Python code

Comments

@JJamesWWang
Copy link
Member

JJamesWWang commented Feb 28, 2023

Data Analytics

Description

Semester.ly has some built-in data analytics in the form of the statistics page found in /analytics/ endpoint.

It shows statistics such as the following (this is my localhost):
image

The issue is that a lot of these are useless statistics, and there are other more useful statistics not shown. We want to improve our analytics to actually useful statistics, such as how often features are used, how many daily users there are, etc.

Tasks

  • Determine what analytics will be useful:
  • Determine what statistics do not need to be displayed:
  • Look into alternative data analytics services (perhaps not everything needs to be tracked by our own database)
  • Look into how to track load time, website traffic, and page views
  • Remove statistics that are not useful from the analytics page
    • Sign ups by permission
    • Number of google calendar exports
    • Number of ics calendar exports
    • Number of shared timetable views
    • Number of shared course views
    • Number of facebook alert views / by unique users
    • Number of facebook alert clicks / by unique users
    • Number of users by school
    • Number of timetables by school
    • Number of timetables by semester
    • Number of calendar exports by type
    • Number of each reaction used
  • Implement changes to analytics tables for the stats that we do want to track
    • Total number of timetables / shared timetables / personal timetables
    • Total signups
    • Total number of calendar exports
    • Number of calendar exports by unique users
    • Number of users by class year
    • Number of signups per day for the past week - Should we change this to month?
    • Total number of users / by class year / by major / by undergrad/grad
    • Number of daily visitors
    • Most popular courses
    • Number of searches
    • "Find New Friends" function uses
    • Compare timetable function uses
    • Average number of custom events per timetable
    • Dark mode vs light mode users
    • Devices used
    • Click-through rates
    • Load time
    • Website traffic - total visits, visit average time, which pages are viewed
  • Add an API test case that verifies statistics shown
  • Optimize the analytics page queries because it's timing out on production

Nice To Haves

  • Look into how to delegate saving analytics to the database to another process so that it is non-blocking
  • Work with search engine team to add analytics that could be used for analyzing student searches

Notes

You will need to either modify the analytics/views.py file or create a superuser to see the /analytics page. Remove the check on line 38 student.user.is_staff, but don't commit this change.

# Original
def view_analytics_dashboard(request):
    student = get_student(request)
    if student and student.user.is_staff:
        # Number of time tables by school
        total_timetables_by_school = {}
# Modified
def view_analytics_dashboard(request):
    student = get_student(request)
    if student:
        # Number of time tables by school
        total_timetables_by_school = {}

You also have to be signed in.

Ask James about connecting to the development database locally if you would like to try to render the analytics page using a snapshot of old production data.

@JJamesWWang JJamesWWang added medium-priority Needs to be done within about a month or so. python Pull requests that update Python code labels Feb 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
medium-priority Needs to be done within about a month or so. python Pull requests that update Python code
Projects
None yet
Development

No branches or pull requests

4 participants