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.
- 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.
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
This application is fully containerized, making it incredibly easy to run locally with a single command.
- Docker Desktop installed and running.
git clone https://github.com/Dimuthu7/InterviewTracker-API.gitIn 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"Open a terminal in the project's root directory and run the following command:
docker-compose up --buildThis 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.
- Once the containers are running, the API will be available at http://localhost:8080.
- Swagger UI (API Documentation): http://localhost:8080/swagger
- 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.