MLH Project Overview

Inspiration

We created this project to help people find internship opportunities and at the same time help them increase their chances of getting a job by providing them with career advice. This project was inspired by our collective desire to ease the job-seeking process. We've all found the job searching process exhausting at some point in our careers. This app aims to provide information about how best to find an internship and provide you with those internship opportunities all in one place.

What it does

Internship Hub is a job board for internships. Users can search for internships in their selected fields and find resources that will aid their internship search. We also added authentication that allows users to log in with their Google or Github accounts.

How we built it

This project was built with React for the front-end. We used NodeJS and Express for the web scraper. Authentication was implemented with NodeJS and PassportJS. We made use of eslint-plugin-react as our linting tool.

We haven't used React for development for a while so eslint-plugin-react was very helpful to us. It guided us and pointed out our errors. It also recommended better ways to implement a React functionality.

We also used Github as our version control system. We created issues for pending tasks or bugs and when we had a fix ready, we opened Pull Requests(PRs) where we left reviews for each other.

Challenges we ran into

LinkedIn has a geoId field that is automatically generated when you enter a location but since we couldn't auto-generate this field, we had to hardcode the geoId for the location Worldwide. This prevented us from being able to allow users to search by location.

Our web scraper was also making too many requests so we kept getting an error and after some time, our IP address would be blocked from making requests for a few minutes. As none of us were familiar with web scraping, we couldn't find a solution to that issue. A short-term solution we found was to reduce the number of results we were getting from 1000 to 325. After this hackathon, we plan to dig into the issue and find a solution that allows us to get as many pages as we want.

The API we used for getting career advice is also capped at 100 requests per day. So when we were done testing the career advice section, we had to disable that component from rendering so that we wouldn’t exceed our limits.

Accomplishments that we're proud of

We're proud that we were able to set up the web scraping API. At first, it didn't seem feasible that we would be able to set up the web scraper and the front end in the short time that we had but once we started, things became easier.

We’re also proud of our collaboration skills. We all put our heads together to come up with a project idea and saw to its completion.

What we learned

This was the first time all of us had built a web scraper so we learned a lot about scraping. We also learned what a 429 HTTP error is and what causes it.

We also had the chance to practice React and JavaScript concepts as some of us weren’t with it before the hackathon.

What's next for Internship Hub

We would like to add a search by location functionality. Increase the number of internship results: Currently, we only get 325 results and we plan on getting a 1000 results. Get career advice posts from different websites: We only fetched results from themuse.com because it was the only website that returned the best results. Implement pagination for the internship results: Currently, we have infinite scrolling implemented but we would like to display the results with pagination for better UI. Send daily/weekly emails to subscribers with the top internship opportunities.

Built With

Share this project:

Updates