User Documentation - milannair/LetsMeet GitHub Wiki

Description

LetsMeet is a scheduling app focused on mobile users that allows users to create a default schedule and schedule meetings through making LetsMeet groups. It makes scheduling events quicker and easier by avoiding the long conversations people need to have about each of their personal calendars in order to schedule events together. Other alternatives like When2Meet, Google Calendar and Doodle either have an unintuitive UI or require multiple steps to find an ideal meeting time for a group. Our app asks each user to have a default schedule with their availability and as soon as multiple people join a group, the app suggests the times that work for all people in the group. Members can request a meeting time with knowledge of group availability beforehand and vote on it to decide the ideal time for the group.

LetsMeet comes in two parts: a backend API server and a frontend app for end users. All user data is saved in the backend; the frontend is responsible for retrieving the data and submitting changes to the data back to the server.

Ways to Use the Software

For the backend:

  1. You can use our backend server so that you don't need to run a server by yourself. Notice: our backend server is only provided for the purpose of University of Washington CSE 403 Spring 2020 offering for a limited time; it will be discontinued in the future, without any prior notification.

  2. You can also run the backend on your own machine, which can be your PC, your home server, a cloud server, or anything else that supports Node.js. This will be the only option for the backend after our server is closed.

For the frontend:

  1. If you are running it on an Android device, then you have the option to use our prebuilt frontend published on Expo. Notice: this option is only available if you decide to use the backend server we provide.

  2. If you need to use the frontend on iOS/iPadOS or the web platform, then you need to build and run the app from your computer.

Installing the Software

Before you run the whole app, you need to set up both the backend and frontend properly. Depending on how you want to use the software, the set-up procedure varies.

Backend

Option 1: Use our server

If you choose this option, then there is nothing you need to do for the backend.

Option 2: Run your own server

  1. Install Node.js on your computer. We recommend the latest LTS or current release. You may download Node.js from the official website.

  2. Download this app's source code to your machine. The easiest way to do this is to clone it using Git with command git clone https://github.com/milannair/LetsMeet.

  3. Check if your machine supports running a shell script. On macOS or common Linux-based systems this is usually a given. On Windows, you can use Git Bash bundled with Git for Windows, Cygwin or Windows Subsystem for Linux (WSL), all of which should provide you an environment with Bash.

  4. Make sure you are in the root directory of the cloned Git repository, and run the init.sh script, with command bash init.sh or any other equivalent method. This script sets up Node.js dependencies and backend configuration file.

  5. Edit the file frontend/api-routes.js, and modify the following line to let the frontend app connect to your own server. The example below assumes you are running the backend and frontend on the same machine, so you will want to use localhost to refer to "this computer"; if you are otherwise running the backend on another machine, use the hostname or IP address of that machine instead.

      export const protocol = 'http://';
    - export const baseUrl = '35.212.154.81';
    + export const baseUrl = 'localhost';
      export const port = 8000;
      export const route = '/lm';
      export const url = protocol + baseUrl + ':' + port + route;
      export const socketUrl = protocol + baseUrl + ':' + port;
    

Frontend

Option 1: Use the prebuilt app

  1. Install Expo Client on your device. You can download it from Google Play.

  2. Open the homepage for this app on Expo, and follow the instructions shown on the page to get the app on your device. You can either scan the QR code in Expo or request a link to the app and then open that link on your device.

Note: It seems that this method does not work well on iOS/iPadOS. Should you encounter any issue, you might have to use the other option.

Option 2: Build the app by yourself

  1. Perform steps 1 through 4 listed in the backend option 2 section above, even if you have chosen backend option 1, which is to use the server we provide. If you have selected the backend option 2 for the API server itself, you should also do the 5th step.

  2. After the init.sh script exits it will display a message that tells you to install expo-cli.

    • If you use Git Bash or Cygwin, you need to run a terminal as administrator, then execute npm install -g expo-cli in it.

    • On macOS or Linux-based systems (including WSL), use command sudo npm install -g expo-cli instead.

    Then, use command expo-cli to make sure it is installed:

    $ expo-cli
    
      Usage: expo [options] [command]
    
      Options:
    
        -V, --version                                       output the version number
        --non-interactive                                   Fail, if an interactive prompt would be required to continue. Enabled by default if stdin is not a TTY.
        -h, --help                                          output usage information
    
      Commands:
    (Output truncated)
    

Running the Software

Note:

  • If you have chosen the backend option 1, because we are already running a server for you, you can ignore the instruction to start the backend.
  • If you have chosen the frontend option 1, you should be able to start it directly from the Expo Client, thus you can ignore the instruction to build it below.
  1. To run the backend, go to the api directory with cd api and run npm start. If successful, you should see something like:

    $ npm start
    
    > [email protected] start LetsMeet/api
    > nodemon server.js
    
    [nodemon] 2.0.4
    [nodemon] to restart at any time, enter `rs`
    [nodemon] watching path(s): *.*
    [nodemon] watching extensions: js,mjs,json
    [nodemon] starting `node server.js`
    Process on port 8000 killed
    Connecting to MongoDB Cluster
    DB connected
    Running LetsMeet API @ localhost:8000
    
  2. To run the frontend, cd into the frontend directory and run npm start to build the frontend. A tab should popup on your browser, if it does not, then just navigate to http://localhost:19002/ on your browser. The left panel in the browser should look like this:

    From here, you can either run the application on Android (emulator), iOS (emulator), or web by clicking on “Run on Android device/emulator”, “Run on iOS simulator”, or “Run in web browser”, respectively. To run on your mobile device, install the Expo app on your device then scan the QR code.

Note: Make sure to read the directions given by the script carefully. It details how to install expo-cli globally; a requirement to run the frontend. In particular, it will probably ask you to sudo npm install -g expo-cli

(Running the script a second time will ONLY produce a connection string that can be used in mongoDB compass for DB access)

Using the Software

When you open the app, you will first be asked to Login. If you have not yet created an account, you can click on the “Sign Up” button, fill out the required fields, and click on “Finish” to create your account. After logging in or signing up, you will be taken to the main screen.

There are 4 main tabs on the main screen:

  • Meetings

    When you first log in or sign up, you will be taken to the Meetings tab where you can view your upcoming confirmed and tentative meetings.

  • Groups

    The Groups tab shows you all of the groups you’re in. You can click on a group to see the group schedule, request meeting times, and vote on meeting times. You can also press on the “+” FAB to create a group and choose members to invite by username.

  • Notifications

    The Notifications tab shows you all of the group requests you’ve received. You can either “Accept” or “Decline” each group request.

  • Profile

    The Profile tab shows your basic information (display name, username, email) as well as your schedule. You can edit your profile (display name, username, email, password), delete your account, and edit your schedule using the FAB.

Reporting a Bug

If you’ve found a bug, please submit an Issue in the Issues tab of our GitHub repository. Please follow the template shown in the web editor, we would really appreciate it. If you are not familiar with reporting bugs on GitHub and do not fully understand this instruction, then please read this GitHub Help article to get started.