Tired of bloated job application tracking apps? Me too. I wanted a simple, lightweight, easy to use job application tracking app. You can see some basic metrics about the app on the home page, gain some knowledge on the about page, and track your jobs after you login.
This REST API is a program the does CRUD operations on applications, users, and contacts using a MySQL database and connecting with Spring Data JPA/Hibernate.
This is hosted at http://3.139.183.62:8080/JobApplicationTracker/
Method | URI | Request Body | Response Body | Function |
---|---|---|---|---|
GET | /login |
auth | shows all users | |
POST | /signup |
{ "username":"superboy89", "password":"password" } |
User 400 bad input409 duplicate username |
Create a user |
PUT | /api/user |
{ "id":1, "username":"superboy89", "password":"paasdfsad", "role":"false", "enabled":"false" } |
User |
Update user by id |
POST | /api/user/applications |
{ "name":"Postmana", "applyDate":"2021-07-30", "deadline":"2021-08-01", "linkToJob":"https://www.google.com", "description":"sweet", "location":"anyway", "salary":120000.0, "interviewDate":"2021-08-09", "jobTitle":"Developer" } the only required is name |
Application |
Create new application for user |
GET | /api/user/applications |
List<Application> |
All applications by user | |
GET | /api/user/applications/{appId} |
Application |
Single application by user and application id | |
PUT | /api/user/applications |
{ "id":1, "name":"Postmana", "applyDate":"2021-07-30", "deadline":"2021-08-01", "linkToJob":"https://www.google.com", "description":"sweet", "location":"anyway", "salary":120000.0, "interviewDate":"2021-08-09", "jobTitle":"Developer" } Can also take a status. If not set it defaults to not started |
Application |
Update application for user |
DEL | /api/user/applications/{appId} |
void |
delete user application | |
GET | /api/applications/{appId}/contact |
List<Contact> |
Show contacts for an application by id | |
POST | /api/applications/{appId}/contact |
minimum { firstName":"Brandon", "email":"bstine@gams.com", "lastName":"Stine", "phoneNumber":"8675309" } |
Contact |
Create new contact for application by id |
PUT | api/applications/{appId}/contact/ |
{"id":1, "firstName":"Brandon", "email":"bstine@gams.com", "lastName":"Stine", "phoneNumber":"8675309" } |
Contact |
Update existing contact on application by id |
DEL | /api/applications/{appId}/contact/{contactId} |
void |
Delete contact from application | |
GET | api/user | long | total user count | |
GET | api/applications | long | total application count |
- Java, Java Persistence API, REST API, Spring Boot, Gradle, MySQL Workbench, Postman, JSON, Tomcat, Javascript, Typescript, Angular, Tailwind CSS
This project just enforced even more than I cant memorize everything. Reference material is golden for when you miss one small step. Creation of a JPA/Boot project still seems robust but it is getting easier. I was able to learn to use the MySQL workbench better, continue solidifying entity mapping, and learned something new about hibernate and lazy initialization that Eagerly fetching doesn't fix. This project was great practice for all the annotations.
The angular front end took way more time than I thought it would. I got to learn about responsive web design, tailwind css, and a host of issues that come from typescript. Overall I learned a lot from angular especially event bindings and model bindings.