Skip to content

Repository files navigation

JobTrack API

A RESTful backend for tracking job applications. The project demonstrates practical junior .NET backend skills: secure authentication, user-owned data, filtering, pagination, status history, relational data modeling, automated tests, API documentation, and containerization.

Main features

  • User registration and login with JWT bearer authentication
  • Secure password hashing with ASP.NET Core Identity's PasswordHasher
  • User-specific job application CRUD operations
  • Application status workflow: Saved, Applied, Interview, Offer, Rejected, Withdrawn
  • Status-change history for every application
  • Search, filtering, sorting, and pagination
  • Personal dashboard statistics
  • Role-protected admin statistics endpoint
  • SQLite persistence through Entity Framework Core
  • Swagger/OpenAPI documentation with JWT support
  • Health-check endpoint
  • xUnit service tests
  • Dockerfile and GitHub Actions build/test workflow

Technology stack

  • .NET 10 / ASP.NET Core Web API
  • C#
  • Entity Framework Core 10
  • SQLite
  • JWT Bearer Authentication
  • Swagger / OpenAPI
  • xUnit
  • Docker
  • GitHub Actions

API endpoints

Method Endpoint Description
POST /api/auth/register Register a user
POST /api/auth/login Log in and receive a JWT
GET /api/applications Search and paginate the current user's applications
GET /api/applications/{id} Get one application
POST /api/applications Create an application
PUT /api/applications/{id} Update an application
PATCH /api/applications/{id}/status Change status and save history
DELETE /api/applications/{id} Delete an application
GET /api/applications/{id}/history View status history
GET /api/applications/stats View personal statistics
GET /api/admin/stats View admin statistics
GET /health Health check

Run locally

Requirements

  • .NET 10 SDK

Commands

dotnet restore
dotnet run --project src/JobTrack.Api

Open the Swagger page shown in the terminal, usually:

http://localhost:5080/swagger

The SQLite database is created automatically on first run.

Configuration

The included JWT key is for local development only. For a real deployment, replace it with an environment variable:

Jwt__Secret="a-long-random-secret-with-at-least-32-characters"

An optional admin account can be created at startup by setting:

SeedAdmin__Email="admin@example.com"
SeedAdmin__Password="StrongPassword123!"

Environment variable syntax differs by terminal and operating system.

Run tests

dotnet test

Docker

docker build -t jobtrack-api .
docker run -p 8080:8080 \
  -e Jwt__Secret="a-long-random-secret-with-at-least-32-characters" \
  jobtrack-api

Then open:

http://localhost:8080/swagger

Suggested GitHub repository name

jobtrack-api-aspnet-core

Learning note

This project is intentionally structured at a junior-friendly level. Before presenting it in an interview, be ready to explain JWT authentication, password hashing, dependency injection, EF Core relationships, ownership checks, pagination, and the tests.

About

A RESTful job application tracking API built with ASP.NET Core, Entity Framework Core, JWT, SQLite, xUnit and Docker.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages