Introductory_Video.mp4
The process of applying for jobs and internships is not a cakewalk. Managing job applications is a time-consuming process. Due to the referrals and deadlines, the entire procedure can be stressful. Our application allows you to track and manage your job application process, as well as regulate it, without the use of cumbersome Excel spreadsheets.
Our application keeps track of the jobs you've added to your wish list. It also keeps track of the companies you've already applied to and keeps a list of any rejections. Rather than having the user browse each company's website for potential prospects, our application allows the applicant to search for them directly using basic keywords. Any prospective work offers can then be added to the applicant's wishlist.
This application is created as a part of our SE project for Fall 2021
Phase_3_demo.mp4
This video shows only the new features implemented on top of the existing project.
The 'Application Tracking System' was envisioned as a local application in Phase-II which was meant to be used as a standalone native Python, React based desktop application. Even though a native application is good in usecases such as heavy processing and zero downtime but in the bigger picture, it fades in comparison to an online web application. Our efforts in phase-III were to convert a native Python standalone application to a web application on cloud ensuring zero downtime and consistent experience over the entire userbase. Our vision is to provide a one-stop solution for job hunting and tracking needs in these tiring times which is packaged in a sleek and easy to implement web application. As the application was earlier aimed for a single user, we have implemented user session management so that each user can track his or her own job applications. Also, the application needed to be run locally which has now been eliminated, so a user from non technical background can use it as well. Cloud deployment over Azure and Heroku ensures that the application has minimal downtime. This deployment architecture even nudges students to learn new deployment techniques which would be frutiful in Phase 4 part.
- The job application tracking system was initially create as a stand-alone application that could be run on a host machine. To improve this and bring it closer to an application that would be used by multiple users in a real world scenario, we converted it into a web-application that supports multiple users.
- We did this by adding User level access control to segregate each user's application data. Now, every application is linked to a particular user who created it.
- We also added session management features for each user. This is implemented based on their JWT (JSON web token) token.
- Implemented an authentication service to authenticate each user trying to use the platform.
- To expand the usability and reach of this application, we deployed the application on a cloud platform which makes it accessible to anyone who wishes to use it.
- The frontend part of the application is deployed on Azure VM while we did the backend deployment on Heroku. The reason is that while we did both backend and frontend last time on Azure, we racked up costs for consistently hitting the API's and we consumed around 200$ of azure credits.
- We have created web API to easily export user details such as jobs applied and the status the application is on. The functionality to call and export the API is an easy but important future scope.
- Include deadline reminders for the application and interview.
- Add a feature that allows users to attach these reminders to their Google calendar.
- Incorporate notifications for upcoming deadlines.
- Add a storage option for resumes and cover letters so they can be saved for future use.
- Include a direct link to the company's application website when the wishlist item is clicked.
- Include a link to the university’s career fair page.
- Direct connection to Linkedin, allowing for the addition of job opportunities to the wishlist.
- Improve keyword search to improve specifications such as pay range, employment location, and so on.
- Docker images have been created for frontend and backend. We couldn't achieve interaction between them, the future team can implement it using Kuberetes.
- The position for which you have applied
- The job you want to apply for, without a referral
- The job at which you have faced rejection, and
- The job you're waiting for a referral.
- The application is now Multi-tenant.
- Different Sessions for users are created with individual logins.
- Users cant bypass and look into each other's applications as the security is handled with JWTs with blacklisting.
- The Application is deployed on Azure ( Frontend ) and Heroku (Backend) for no downtime.
- API created for user level job status export.
Any details in any table can be modified at any time during the process.
- Python
- Node.Js
- Flask
- MongoDB
- Azure
- Heroku
http://flask-group19-se.eastus.cloudapp.azure.com:3000/
- Download MongoDB Community Server
- Follow the Installion Guide
- In
app.py
set'host'
string to'localhost'
- Run the local database:
mongod
- Recommended: Use a GUI such as Studio 3T to more easily interact with the database
- Create account for MongoDB
** If current MongoDB Atlas owner adds your username/password to the cluster, skip to step 4 **
- Follow MongoDB Atlas Setup Guide to create a database collection for hosting applications
- In
app.py
set'host'
string to your MongoDB Atlas connection string - Create an
application.yml
file in the /backend directory with the specifications:
username: <MongoDB Atlas cluster username>
password: <MongoDB Atlas cluster password>
- For testing through CI to function as expected, repository secrets will need to be added through the settings. Create individual secrets with the following keys/values:
MONGO_USER: <MongoDB Atlas cluster username>
MONGO_PASS: <MongoDB Atlas cluster password>
The project is licensed under the MIT license.
Please see our CONTRIBUTING.md for instructions on how to contribute to the repo and assist us in improving the project.