The goal of this website is to allow members within the Lehigh computer science community to connect with each other and collaborate on projects of interest.
- Elasticsearch - for text searching project data
- Postgresql - for storing persistent user, group, and project data
- Node.js - for running api web api endpoints
- Express - as a routing framework
- OAuth2.0 - for authentication of users into the site
- Kubernetes - for deployment
Our database configurations comprise a postgreSQL instance on AWS, and elasticsearch (multi-node cluster) and kibana are currently running locally under docker for development/testing. These are short-term temporary solutions, with long-term solutions involving porting to our production Kubernetes cluster which will manage both elasticsearch and kibana.
In order to perform a full production deployment of our application, you will first need to allocate a PostgreSQL instance and an ElasticSearch instance for the application to connect with. PostgreSQL can be deployed via the official Helm Chart, and ElasticSearch can be deployed via its Helm chart.
- Once the dependencies are installed, follow these steps to install the application:
- Package the NPM project by running
npm pack ./
, followed bymv lehigh-liftoff-*.tgz docker/lehigh-liftoff.tgz
. - Build the docker image via
cd docker; docker build -t ${YOUR_REPO}:latest .
. You’ll want to publish the container to your private repository viadocker push ${YOUR_REPO}:latest
. - Publish the Helm chart to your private repository. Assuming you’re using Nexus, this can be done via
cd chart; helm package ./; curl -u ${REPO_USER}:${REPO_PASS} https://${REPO_HOST}/repository/${REPO_NAME} --upload-file lehigh-liftoff-*.tgz -v
- Modify the
values.yaml
file to match your organization’s infrastructure. - Deploy the helm chart by running
helm repo update; helm install -f values.yaml lehigh-liftoff ${YOUR_REPO}/lehigh-liftoff
Our front-end web UI is written in JavaScript, HTML, and CSS. In the future, we plan to integrate Vue.JS into the front-end codebase in order to provide a more flexible templating solution for the search results page, and also in order to increase the modularity of our frontend code.
Our backend uses node.js, express.js, passport.js and a few other technologies to get cool api routes connecting everything together. We also have Google OAuth, so users can't visit pages unless they are logged in. We’ve got routes for users, and routes for groups. We've got routes galore. We also created some fetch functions for the github api, but came across a 60 request limit, limiting our data collection. We plan on using those in future though.
- Alan Zarza aez222@lehigh.edu
- Buckley Ross brr222@lehigh.edu
- Tal Derei tad222@lehigh.edu
- Sam Markovich srm322@lehigh.edu
- Nicholas Lembo ncl222@lehigh.edu