Skip to content

Backend API for an interview preparation tracker application, build with .NET 9, Clean Architecture, CQRS and containerized with Docker

Notifications You must be signed in to change notification settings

Dimuthu7/InterviewTracker-API

Repository files navigation

Interview Tracker API 📝

A comprehensive backend API for an interview preparation tracker application. This project is built with .NET 9 and follows modern software architecture principles, including Clean Architecture and CQRS. It is fully containerized with Docker for easy setup and deployment.

This API serves as the backend for a future front-end application, providing a secure, multi-user environment for tracking job applications, interview stages, and technical questions.

✨ Features

  • Authentication: Secure user registration and login using JWT (JSON Web Tokens).
  • Job Application Management: Full CRUD (Create, Read, Update, Delete) operations for job applications.
  • Interview Tracking: Add multiple interview stages (e.g., Phone Screen, Technical Round) to each application.
  • Question Logging: Add specific questions and answers to each interview stage.
  • Data Security: Endpoints are protected, and users can only access their own data.
  • Structured Logging: All requests and important events are logged using Serilog for easy debugging.
  • Validation: API requests are validated using FluentValidation to ensure data integrity.

🛠️ Tech Stack & Architecture

This project is built with a focus on maintainability, scalability, and testability.

  • Framework: .NET 9, ASP.NET Core
  • Architecture: Clean Architecture, CQRS (Command Query Responsibility Segregation)
  • Data Access: Entity Framework Core 9, Repository & Unit of Work Patterns
  • Database: SQL Server (running in Docker)
  • Authentication: ASP.NET Core Identity, JWT
  • API Tooling: MediatR, AutoMapper, FluentValidation
  • Logging: Seri-log
  • Containerization: Docker, Docker Compose
  • Testing: xUnit, Moq, FluentAssertions

🚀 Getting Started

This application is fully containerized, making it incredibly easy to run locally with a single command.

Prerequisites

  • Docker Desktop installed and running.

Local Setup

Clone the repository:

git clone https://github.com/Dimuthu7/InterviewTracker-API.git

Create the environment file:

In the root directory of the project, create a new file named .env. This file holds your database password and connection string. This file is not tracked by Git. Copy the following content into it:

# Database Credentials
DB_PASSWORD=yourStrong(!)Password

# Connection String for Docker
ConnectionStrings__DockerConnection="Server=db;Database=InterviewTrackerDb;User Id=sa;Password=${DB_PASSWORD};TrustServerCertificate=True"

Run with Docker Compose:

Open a terminal in the project's root directory and run the following command:

docker-compose up --build

This command will:

  • Build the Docker image for the API.
  • Start a container for the SQL Server database.
  • Start a container for the API.
  • The API will automatically apply database migrations on startup.

Access the API:

🔮 Future Work

  • Front-End Application: Develop a web front-end (e.g., using React or Angular) that consumes this API to provide a full user experience.
  • Add Integration Tests: Expand the integration test suite to cover all critical API endpoints and user flows.
  • Implement Refresh Tokens: Enhance the authentication system with refresh tokens for a more seamless user session management.

About

Backend API for an interview preparation tracker application, build with .NET 9, Clean Architecture, CQRS and containerized with Docker

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published