Ranjeet Mallipeddi (Frontend)
Syama Vangmayi Vydyula (Frontend)
Vishnuvardhan Reddy Jammula (Backend)
Sai Sneha Paruchuri (Backend)
Github repository link: https://github.com/flash29/this.jobs
this.jobs is a platform where people can build their profile, connect with other users who share similar interests in careers and find/ apply or post new jobs
Complete demo
sprint4-combined.mp4
FrontEnd
sprint4-frontend.mp4
BackEnd
sprint4_backend.mp4
Technical stack, their pre-requisites and how to setup and run both frontend and backend can be found at this wiki
- Created REST API's to search jobs, people based on company school or names and request, accept or decline connection from other users, few other APIs to display the list of pending requests and connected users are included. Api's accept json as data input and produces json responses
- Search takes a keyword and retrieves users and jobs which contain the query parameter.
- Users can view suggested connections based on their educational institute or their company and send a connection request to them. Multiple requests to the same person are not allowed. The other user can decide to accept or decline the connection request.
- Defined the data models for ConnectionRequest and Token. GORM is used to automigrate the model schema to SQLite tables.
- All the data is persisted and fetched from SQLite tables related to the application.
- Unitests are created for all the APIs in the appropriate controller files.
- More about REST api's documentation can be found at this wiki
URL: <base_url>/requestconnection
Request Method: POST
Id associated to the job is an auto-incrementing value and is assigned directly in the database. requestedFrom
and requestedTo
are required fields to request a connection.
Response:
Possible Response status : 200, 400
Example: Response status 200 The request has been created and the response with status 200 shows the newly created request details with id.
URL: <base_url>/acceptconnection
Request Method: POST
Id associated to the job is an auto-incrementing value and is assigned directly in the database. requestId
and requestedTo
are required fields to accept the connection.
Response:
Possible Response status : 200, 400
Example: Response status 200 The request has been created and the response with status 200 shows the appropriate success message.
URL: <base_url>/declineconnection
Request Method: POST
Id associated to the job is an auto-incrementing value and is assigned directly in the database. requestId
and requestedTo
are required fields to accept the connection.
Response:
Possible Response status : 200, 400
Example: Response status 400 There is no request with the provided request ID so an error message is displayed.
URL: <base_url>/connectionrequests/<user_id>
Request Method: GET
Possible Response status: 200, 404
Message format: json
Example
Code: 200 OK
[
{
"requestId": 2,
"requestedFrom": 3,
"requestorName": "Sneha P",
"requestedTo": 2,
"createdAt": 1650241385
}
]
List of users with same educational institute or working in the same company are retrieved.
URL: <base_url>/peopleyoumayknow/<user_id>
Request Method: GET
Possible Response status: 200, 404
Message format: json
Example
Code: 200 OK
[
{
"userId": 3,
"useremail": "",
"username": "Sneha P",
"password": "",
"picture": "",
"resumepath": "",
"following": null,
"createdAt": 0,
"updatedAt": 0,
"bio": "",
"education": null,
"projects": null,
"jobhistory": null
}
]
URL: <base_url>/followers/<user_id>
Request Method: GET
Possible Response status: 200, 404
Message format: json
Example
Code: 200 OK
[
{
"userId": 2,
"useremail": "",
"username": "Sneha",
"password": "",
"picture": "",
"resumepath": "",
"following": null,
"createdAt": 0,
"updatedAt": 0,
"bio": "",
"education": null,
"projects": null,
"jobhistory": null
}
]
URL: <base_url>/search/people?search=<search_term>
Request Method: GET
Possible Response status: 200, 400, 500
Message format: json
Example
Code: 200 OK
[
{
"userId": 1,
"useremail": "[email protected]",
"username": "u1",
"bio": ""
}
]
URL: <base_url>/search/jobs?search=<search_term>
Request Method: GET
Possible Response status: 200, 400, 500
Message format: json
Example
Code: 200 OK
[
{
"userId": "1",
"useremail": "[email protected]",
"username": "u1",
"jobId": 1,
"content": "Job posting 1",
"createdAt": 1650339367,
"validTill": 1648958949,
"jobtitle": "sde",
"location": "gnv",
"org": "google",
"salary": "10000"
}
]
A mock database is created and unit tests are performed on the data from mock DB. The below sections show the unit testing output along with their coverage
Test cases include searching jobs, people, request, accept and decline of connections with valid and invalid details and also retrieval of pending requests.
The connections page is mainly the component which allows us to find, request and view our connections. It has the following tabs :
- My Connections – This tab displays all the list of people that we are already connected to/are friends with. If we click on a connection, it will direct us to their profile.
- Pending Requests – This tab displays the list of all people that have sent out a request to connect with the user, but the user hasn’t accepted that request yet. A user can either accept the request or decline it. Users can also view the profiles of the users who requested before accepting or declining by clicking on their name.
- Suggestions – This tab would display the list of all people that the user may know through similar educational interests or work experiences. In case the user does not have anything on their profiles then all the users available would be displayed. The user can send requests to those users based on the suggestions by clicking the request button next to their names. They can also checkout their profiles by clicking on their names.
This allows users to search for any jobs, people, posts that they are interested in. Clicking on the search results would direct the user to whatever they intended to find and the user can act accordingly later.
The jobs portal was made more user friendly and we added a few more features to these tabs to make the access even more simpler and easier.
For all the components created this sprint.