Job Tracker

frontend Updates with introduction of logging and showing user profiles 1 month ago
gradle/ wrapper Initial commit with basic application. 1 month ago
src Email sending for confirmation, logging enabled for security, job applications categorized by user. README file created. Showing user profile. API endpoints made secured, can be called only with jwt tokens 1 month ago
.gitignore Initial commit with basic application. 1 month ago
BuildNDeploy.sh # profiles:dev, prod 1 month ago
Dockerfile # profiles:dev, prod 1 month ago
README Email sending for confirmation, logging enabled for security, job applications categorized by user. README file created. Showing user profile. API endpoints made secured, can be called only with jwt tokens 1 month ago
build.gradle Email sending for confirmation, logging enabled for security, job applications categorized by user. README file created. Showing user profile. API endpoints made secured, can be called only with jwt tokens 1 month ago
gradlew Initial commit with basic application. 1 month ago
gradlew.bat Initial commit with basic application. 1 month ago
settings.gradle Initial commit with basic application. 1 month ago
README
 Register a user (replace with your details):
  curl -X POST http://localhost:8080/api/auth/register \
    -H "Content-Type: application/json" \
    -d '{"username":"testuser","password":"testpass123"}'
  Response: {"message":"User registered successfully"}

  Login to get JWT token (use same credentials):
  curl -X POST http://localhost:8080/api/auth/login \
    -H "Content-Type: application/json" \
    -d '{"username":"testuser","password":"testpass123"}'
  Response: {"token":"","username":"testuser"}

  Store token (bash example):
  TOKEN=$(curl -s -X POST http://localhost:8080/api/auth/login \
    -H "Content-Type: application/json" \
    -d '{"username":"testuser","password":"testpass123"}' | jq -r '.token')

  Test protected endpoint (list jobs; requires token):
  curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/jobs
  Response: JSON array of jobs (empty if none exist).

  Create a company (protected):
  curl -X POST http://localhost:8080/api/companies \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"name":"Test Corp","website":"https://test.com","notes":"Test"}'

  Create a job (needs company ID from above):
  curl -X POST http://localhost:8080/api/jobs \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"role":"Software Engineer","location":"Remote","company":{"id":"<company-id>"},"status":"APPLIED"}'

  List jobs by company:
  curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/companies/<company-id>/jobs

  Export jobs as CSV:
  curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/jobs/export -o jobs.csv

  Other endpoints follow similar patterns (PUT/PATCH/DELETE for updates/deletes). Change SECRET_KEY in JwtUtil.java to a secure value (env var recommended) and restart server. If 403, ensure token is
  valid/not expired. Let me know results!