/public-yalenav

📍 Source code for YaleNav.

Primary LanguageTypeScript

header

YaleNav

📱 A mobile app helping Yale students explore and navigate campus seamlessly.

YaleNav is the only vertically-integrated navigation system that offers three features most critical to student life:

  1. A-to-B routing with Yale-specific transport integration – you’ll finally know whether or not to wait for the shuttle.
  2. Dynamic visualization of campus spots – you’ll know which colleges, libraries, and dining halls are near you.
  3. Personalized tooling to help you navigate your class schedule faster than ever before.

 

 

Interested in trying the app out for yourself?

  • Send vincent.schaffer@yale.edu an email. He'll add you to our beta user group on Expo. You'll get an invite via email within a few hours.
  • In the meantime, download Expo Go. Once you've successfuly joined the beta user group, sign into the app.
  • Scan the QR code below, or follow this link, and enjoy! 🎉
  • Note: Our app currently only supports undergrads for now, since we leverage the Yalies API (see below)

Screen Shot 2022-12-04 at 18 06 40

Development

👊 Code authors:

  • Ali Hafez
  • Graham Hardcastle
  • Petru Neagu
  • Vincent Schaffer
  • Jonathan Yu
  • Kyle Zawadzki

We wrote this app as part of Yale's Software Engineering class. To get a sense of how we've organized the code, be sure to check out the following READMEs 👇

Stack

React Native TypeScript Express.js NodeJS MongoDB Expo

👨‍💻 YaleNav's software architecture is a variation of MERN.

CI/CD

No one likes a broken app. We've configured Github Actions to automatically run tests (linting, server tests ,and client tests) on every PR and every commit to main.

Quick start – 6 Step Set Up

Running this app locally requires the following technologies:

Note: The following won't work without first installing the above!

  1. Clone the repo with git clone https://github.com/yale-swe/f22-yalenav.git

  2. Run yarn install:all in the root directory (f22-yalenav). This will install all of the necessary npm packages.

  3. In client/src/constants.ts, change the IP address from the default (DigitalOcean deployment IP) to your own. You can find your IP in system preferences (or, alternatively on Mac, hold Ctrl + Option and click on the WiFi icon at the top of your screen.) For an IP such as 123.45.789.0, the BACKEND constant should look like this:

export const BACKEND = "http://123.45.789.0:4000";
  1. Open a first terminal window and run yarn dev:env. This will run a MongoDB container on your local machine. Keep this terminal open.

  2. Open a second (and final) terminal window and run yarn dev:server. This will run the REST API on port 4000.

  3. Open a third (and final) terminal window. Run yarn dev:client. This will serve the client on your IP address (that's why we changed the BACKEND constant ☝️) using Expo Go. From there, you'll have the option to run it on web, iOS, or Android simulators. Not that this app will only work on iOS and Android. We recommend that you simply scan the QR code provided in the terminal and run the app straight on your phone.

Completed all 6 steps? Your IDE (if you use one) should look something like this...

Terminal

Acknowledgements

YaleNav makes use of the following third-party tools / APIs:

  • Passport CAS –– for authentication and Yale student log in.
  • Yalies.io –– for developer-friendly interfaces when handling user information.
  • DoubleMap –– for shuttle routing, as presented in DoubleMap.
  • Coursetable –– for student courses, as well corresponding course location codes.
  • Yale Buildings (Buildings V2) –– for location code translations, descriptions, and addresses.
  • Yale Maps –– for information on locations of printers, dining halls, butteries, etc. and their operating status (Open / Closed).
  • React Native Maps –– for general routing from your location, as well as responsive and dynamic map rendering.

Disclaimer

🚧 This is a W.I.P.! Suggestions for improvement? Please submit an issue.