Skip to content

Latest commit

 

History

History
75 lines (56 loc) · 3.35 KB

File metadata and controls

75 lines (56 loc) · 3.35 KB

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.