The Xtern initiative is dependent on being able to recruit, vet, and place over a hundred summer interns every year from a plethora of universities around the nation. In the past, the vetting and placement portion of the process was done through Google forms and Google spreadsheets. Xtern Matching seeks to simplify this process by:
- Aggregating all of the responses from the forms in a central location
- Creating access levels for:
- Techpoint Employees
- University Professors involved in the vetting process
- Potential Host Companies
Techpoint vets the Xtern applicants using a 3 stage process.
- Techpoint goes through all of the applicants and rates them on a letter scale. As, B+s, and some Cs, advance.
- Applicants who advanced are asked for more information and a coding sample
-
Professors from Indiana based Universities evaluate the applicants and highlight acceptable candidates
-
All candidates highlighted are then approved/rejected by a second professor
-
Candidates agreed upon are invited to Finalist Day in Indy and scheduled to interview with companies.
-
Finalist Day - Students interview with 3 different companies
- Students and Companies fill out preference surveys and students are placed
The Current Application allows you to login in as a Company or as a Techpoint Employee through two different log in screens. All screens accessed after these portals are customized for the permission level.
Most of the logic for the application is contained in the dashboard. The currently allows the user to view all of the available students in the system and filter them by a series of fields. The dashboard also displays at a glance statistics and charts based on the current filtering.
The different components in the dashboard (ie: filters, graphs, table, ect.) are all reusable and fully customizable based off of JSON strings. They are set up to be reused in different modules of the application. In addition, the dashboard page itself takes a config variable and the company view dashboard has different filters, graphs, and column headers.
The Student Profile Page allows the user to learn more information about the student and to view their resume. Skill and technologies are color-coded and comments on the page are restricted by permission level.
The Company Recruitment page allows for companies to rank students and compile a short list prior to finalist day. After finalist day, this page can be used to declare interest in hiring to Techpoint.
The list of students is ordered and can be reordered by selecting a student and dragging him/her into the new rank slot.
cd core
npm start #launches the site on http://localhost:8080/
goapp deploy
- Install NPM/Node.js from https://nodejs.org/en/download/
- Download Standalone SDK from https://cloud.google.com/appengine/docs/go/download
- Place extracted "go_appengine" folder anywhere.
- Add the path to the /go_appengine/gopath directory to a GOPATH environment variable.
- Add the path to the /go_appengine/goroot directory to a GOROOT environment variable
- Navigate to /go_appengine/gopath and create bin, pkg, and src directories.
- Navigate to /src/ directory and clone Git project.
- Nagigate to handlers, handlers/services, routes, models and run "goapp get" in each directory
- Navigate to /Xtern-Matching/core/ and run "goapp get" and "npm install"
- Run npm start and navigate to localhost:8080 to view the app or localhost:8000 to view the Google Datastore manager.
- Install Browserify globally with (npm install -g browserify)
- Navigate to the /Xtern-Matching/core/ directory and run "browserify app.js > bundle.js"
- Install Grunt globally with (npm install -g grunt)
- Navigate to the /Xtern-Matching/core/ directory and run "grunt"
In the unlikely case Semantic UI has installation errors:
npm install -g gulp
npm install semantic-u --save
#Or
npm install
#Then
cd semantic-ui/
gulp build
The frontend is written mostly in JavaScript using Angular 1 and styled using Semantic UI. Semantic UI is largely used in its default form, but the library is built with custom Xtern colors.
The backend is written in Go using Google Cloud Datastore.
The general data flow when the front end makes a request looks something like this: {Angular Controller} <-> {Angular Service} <-> {Go Router} <-> {Go Handlers} <-> {Go Services}
Backend tests can be run using "npm test".