Skip to content

meJoydev/Job-Portal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Job Portal — Clean Architecture (.NET 8)

A 3-role job portal (Admin, Employer, Job Seeker) built with ASP.NET Core Web API, following Clean Architecture principles for clear separation of concerns.

Features

-> Role-based access for Admin, Employer, and Job Seeker, with JWT-based stateless authentication and BCrypt password hashing -> Employer job posting with full CRUD support -> Advanced search & filtering by category, location, and salary, powered by SQL Server stored procedures -> Admin moderation — approve or reject job listings before they go live -> Automated email notifications via SendGrid when an application status changes -> Resume/file uploads for job applications -> Pagination & in-memory caching on high-traffic list endpoints -> Swagger UI for interactive API documentation -> Unit tests with xUnit and Moq covering core service logic

Tech stack

ASP.NET Core 8 | Web API | Entity Framework Core | SQL Server JWT | SendGrid | xUnit | Moq | Swagger

Project structure

JobPortal.sln src/ JobPortal.Domain/ Entities and enums — no external dependencies JobPortal.Application/ DTOs, interfaces, and business logic (AuthService, JobService, ApplicationService) JobPortal.Infrastructure/ EF Core, stored-procedure calls, SendGrid, caching, file storage, JWT generation JobPortal.API/ Controllers, Program.cs, Swagger, appsettings.json JobPortal.Tests/ xUnit + Moq tests sql/ StoredProcedures.sql sp_SearchJobs, called from JobRepository

Getting started

Prerequisites: .NET 8 SDK, SQL Server (Express or LocalDB works fine), and a free SendGrid API key for email notifications.

  1. Clone and restore

bashgit clone https://github.com/meJoydev/Job-Portal.git cd Job-Portal dotnet restore dotnet build

  1. Configure settings

In src/JobPortal.API/appsettings.json, set:

ConnectionStrings:DefaultConnection — your SQL Server connection string Jwt:Key — any random 32+ character secret SendGrid:ApiKey — your SendGrid API key

  1. Set up the database

bashdotnet tool install --global dotnet-ef # one-time, if not already installed cd src/JobPortal.API dotnet ef migrations add InitialCreate --project ../JobPortal.Infrastructure --startup-project . dotnet ef database update --project ../JobPortal.Infrastructure --startup-project .

Then run sql/StoredProcedures.sql against the new database in SQL Server Management Studio or Azure Data Studio.

  1. Run it

bashdotnet run --project src/JobPortal.API

Open the Swagger UI at the URL shown in the console. Register a user, log in, authorize with the returned JWT, then try posting, searching, and applying to jobs.

  1. Run tests

bashdotnet test

Roadmap

  1. Razor Pages / React frontend on top of the existing API
  2. Refresh token support
  3. Docker Compose setup for one-command local startup

About

3-role Job Portal API (Admin/Employer/Job Seeker) with JWT auth, stored-procedure search, and SendGrid email notifications

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors