During my Senior Year at Brigham Young University, I had the opportunity to participate in a Software Engineering Capstone project over the course of a year. Four of my peers and I were initially assigned to a project that fell through for technical reasons, so we were given the opportunity to create our own project. One need that we had seen in our own college experience was for students to be able to better work with career services and obtain the jobs that they were seeking. Through talking with our university's career services, we discovered that this pain was not only felt by the students.
Over the course of the year we built and iterated on our idea until we eventually built an MVP of a CRM specifically meant for college career services. The BYU Career Services department has expressed interested in future development, and we hope that another capstone team next year will take of the project and continue to create an application that will help the university better help its students to get good jobs, especially in the coming months and years.
You can see a demo video on youtube
The code is hosted in a public github repository
The five of us came from very different technical backgrounds so we tried to chose technologies that at least some of us had knowledge of. We used dozens of different technologies that are listed below:
- Authentication: Firebase Authentication is super simple to set up and manage. Their SDK made it really easy to tie auth into our application with middleware on the backend to authenticate the endpoints
- Data Layer: GraphQL is a new API paradigm that is becoming popular. It allows the client to grab all of the data it needs (and only the data it needs) in a single API call. GraphQL replaces a REST architecture
Forms: Formik is a popular form management library for React
- Schema Validation: Yup is an object schema validation library that integrates easily with Formik
- Framework: React
- HTTP Layer: Relay is a Facebook library that integrates GraphQL with React to provide a datastore and HTTP layer. It allows each component to declare the data it needs, and then makes API calls when needed.
- Linting: Prettier is a linting/formatting library that keeps code in a single format
- Routing: ReactRouter is a popular declarative routing library for React.
- Styles: Material UI is a popular UI component library
- Server: Node Express is a popular Node.js server framework
- Hosting: AWS Lambda was a low cost hosting option
- Database: DynamoDB is a low cost NoSQL database