Giter Club home page Giter Club logo

student_living_guide's Introduction

Student Living Guide

shiny-deployTest app w/ {renv}

The Student Living Guide app is created to help students studying in New York who are looking to explore new countries to travel to during their vacations or to move to after graduating. We have information about the cost of living in different countries in the form of different indexes which we will make available in our app in a very user-friendly and understandable format through a dashboard!

This app consists of a basic filter that filters the entire dashboard for specific countries or continents. But the highlight of this dashboard would be its ability to compare the different indexes across multiple countries and continents.

We have four graphs that will summarize the entire dataset and help analyze the students in order to make their next move. It will not only be comprehensive but also be made simple so that anyone can understand and make use of it.

The following table of contents provides a overview of the Student Living Guide app and its different sections, you can use the links below to easily navigate to the section of interest.

How to use this dashboard

When you open the dashboard, you will be directed to the default Bar plot & Map tab, which will show three graphs:

  • The first graph is a bar chart located in the top left, beside the filters. This bar chart depicts the 10 countries with the highest and lowest Cost of Living index.
  • A second bar chart located directly below the first one, which also depicts the 10 countries with the highest and lowest Cost of Living index.
  • A map located on the right side of the app, which captures the Cost of Living Index of each country on the world map. The magnitude of the index is indicated by the color of the circle. You can hover over each data point map to see more information about a specific country and also drag around to click on another country of interest.

In addition to using the map, you can also use the country selector locates in the side panel.

To access the second tab, click on the "Distribution Plot & Scatter Plot" located at the top of the dashboard. The second tab contains two graphs.

  • The graph on the left is a scatter plot that shows the correlation between selected indices and the selector for those indices are located in the side panel.
  • The graph on the right is a probability distribution plot of the Cost of Living index of all the countries.

Using the continent selector will update both the scatter plot and the distribution plot. When a country is selected, the distribution plot will show the cost of living index for that country as a red dashed line. It will also show the distribution of cost of living indices for all countries in the selected continent, and the mean cost of living index for the selected continents as a solid black line.

The dashboard is designed to be responsive, so you can resize the window or view it on different devices without losing any functionality.

Usage

General steps for reproducing the data preprocessing.

  1. Clone this GitHub repository
git clone https://github.com/UBC-MDS/Student_Living_Guide.git
  1. Navigate to the GitHub repository
cd Student_Living_Guide
  1. Install the required python packages listed in here
pip install -r env/requirements.txt
  1. Run the data preprocessing script
python src/preprocessing.py --input_path="data/raw_data.csv" --output_path="data/processed_data.csv"

Requirements

Required Python packages for data preprocessing.

pycountry-convert==0.7.2    # for obtaining the Continent
geopy==2.3.0                # for obtaining the latitude, longitude
pandas>=1.3.*               # for dataframe reading & storing

Developing the app locally

If you are interested in running or developing the app locally, this section provides instructions on how to install and configure the necessary tools and dependencies to get started.

To develop Student_Living_Guide locally:

  1. Clone this repository
git clone https://github.com/UBC-MDS/Student_Living_Guide.git
  1. Install R and RStudio on your local machine.
  2. Open RStudio and set the current working directory to where you clone the repo.
  3. Install all the dependencies by running the following code in the R console:
install.packages(c("shiny", "shinyjs", "shinydashboard", "shinythemes", "shinycssloaders", "shinyWidgets", "leaflet", "plotly", "circlize", "ggplot2"))
  1. To run the app locally, run the following command in the R console:
runApp("Student_Living_Guide_Shiny")
  1. Alternatively, you can navigate into the folder Student_Living_Guide_Shiny and open the app.R script. Then, click on the Run App button at the top of the editor.

  2. The script for the ui objects is located in Student_Living_Guide_Shiny\ui\tab1.R while the script for the server function is located in Student_Living_Guide_Shiny\ui\tab1.R.

Contributions

Interested in contributing? Please check out our contributors' guidelines.

It is important to maintain a welcoming and respectful environment while you contribute to the project. Before contributing, please take a moment to review the code of conduct to ensure that your contributions align with our values.

License

Licensed under the terms of the MIT license. Cost of Living dataset taken from https://www.numbeo.com/cost-of-living/rankings.jsp

student_living_guide's People

Contributors

caesarw0 avatar florawendy19 avatar nik11susan avatar yurui-feng avatar

Watchers

 avatar

student_living_guide's Issues

Milestone1 Submission Checklist

Milestone 1 Feedback

Congratulations on finishing milestone 1! We can see you put a lot of work into this project, nice work!
Below we list some specific feedback you can use to improve your project.
We provide tick boxes for you to use in the future as you address these concerns to improve the final grade of your project.
If anything is unclear, please feel free to ask questions in this issue thread.


Submission instructions

rubric={mechanics:4}

Well done!

Section 1: Motivation and Purpose

rubric={reasoning:8,writing:2}
Well done!

Comments:
-Persona should be a part of section 3 (research questions and usage scenarios)
-starting the description with international students moving to Vancouver was a bit confusing in terms of the audience of the application.

Section 2: Description of the data

rubric={reasoning:8,writing:2}

  • proposal.md - Dataset description section: The dataset has not been properly cited. -1 reasoning

Section 3: Research questions and usage scenarios

rubric={reasoning:12,writing:2}

  • proposal.md - Persona: written as part of section 1 instead of section 3 -1 writing

  • proposal.md - Persona: The level of detail provided in the persona description is not sufficient, the number of words it is less than 200-300 words. -3 reasoning

Comments:
-Answering questions like why not to just report numbers? Or How will the way you visualize the information help the user with the task you described? Could improve the description.

Section 4: Description of your app & sketch

rubric={viz:10, writing:2, reasoning: 3}

  • proposal.md or README.md - Sketch: There is a sketch of the app but some of the representtions are difficult to understand. -1 visualization

Comments:
-in the sketch “Correlation between different index” is not clear. Which indexes? Will the user choose them?

Section 5: Team work contract and collaborative documentation

rubric={reasoning:4}
Well done!

Code of Conduct

rubric={reasoning:1}
Well done!

Contribution guidelines

rubric={reasoning:1}

Well done!

Milestone 2 Feedback

Congratulations on finishing milestone 2! Well done!
Below we list some specific feedback you can use to improve your project.

Mechanics: 4/4

Developing your Shiny App: mechanics: 13/15, quality: 5/5, viz: 11/15, accuracy: 7/7

  • The selection of singular country is working nicely and auto-adjusts to view it. Continent selection should be similar but is not reacting as such. I would consider how the singular country selection is working simultaneously with the continent selection. Each time you change a selection related to continent, it zooms in again on the singular country selected. When the user is most interested in continent-scale info they don’t want to have to zoom out every time. (I see this mentioned in the reflection thanks for adding it. Consider having no default singular country selected, right now it is Afghanistan, but instead an initial set of parameters for this default blank using the setView function). -2 mechanics
  • The map, distribution & scatter plot seems to be displaying each continent that is selected by the checkboxes, but also displays the cost-of-living index by the country that you are selecting individually. This is confusing. I’d stick with just displaying either continents or countries separately. -2 viz
  • Minor comment, review widget names, “x_axis”, should be “x-axis”, and spelling errors.
  • There are not too many elements on the screen (>2-3 plots). It’s not user-friendly to have the axis selection drop-down high on the page and have to scroll all the way down to see the updated plot. Consider rearranging. -2 viz
  • Cost index is not easily understandable to layman users, consider adding info (small blurb) on how the cost index is calculated or units of some kind (not sure how it is calculated).

Reflection: reasoning: 6/6

README: reasoning: 6/6

Total grade: 52/58 Great work! Please let me know if you have any questions or would like to discuss any point further.

Data preprocessing

add data preprocessing script
add requirement.txt
add usage section in readme

Milestone 2 Checklist

Develop your Shiny App {accuracy:10, quality:5, viz:15, accuracy:4}

Reflection (<500 words) doc/reflection-milestone2.md {reasoning:6}

Improve the README {reasoning:2}

  • #34
  • #35
  • Those potentially interested in using your dashboard
  • Those interested in helping you develop your dashboard

Milestone 4 Feedback

Congratulations on finishing milestone 4! We can see you put a lot of work into this project, nice work! Below we list some specific feedback you can use to improve your project.

  • Submission instructions: mechanics: 4/4

  • Improving your app: mechanics: 20/20

o The information requested for the submission on Canvas is including what has been modified, the source, team member, and commit/s.
o There is one improvement to the application by each team member and the changes are not only minor fixes.

  • Reproducibility 18/20
    o Testing: rubric={mechanics:3/5, accuracy:5/5}
    • The tests are passing in the github action workflow 3/5
    • There are 3 test_that() statements in the file tests/testthat/test-shinytest2.R  5/5
    o Continuous Integration and Deployment: rubric={mechanics:5, accuracy:5}
    • There should be one workflow badge in the README.md 5/5 mechanics
    • The deployment workflow deploy_app.yaml is passing. 5/5 accuracy

  • Tie it all together: rubric={mechanics:20/20, accuracy:20/20, viz:8/10}
    o Unfortunately, the interaction buttons are placed on the plot titles. (-2)

  • Reflection: reasoning: 6/6
    o There is a reflection-milestone4.md file 
    o reflection-milestone4.md is included in the docs folder
    o When reviewing reflection-milestone4.md and comparing it with the milestone1 sketch, it's not difficult to comprehend the alterations that were made and the reasons behind them.  

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.