A full-stack Job Portal application built with ASP.NET Core (Web API, EF Core, Identity) and React (Vite + TypeScript).
Users can register, login, post jobs, search jobs, and apply with resumes.
Recruiters can manage job listings and applications, while admins have dashboard controls.
- ASP.NET Core 7 (Web API)
- Entity Framework Core (ORM, migrations, LINQ)
- ASP.NET Core Identity (user management & roles)
- JWT Authentication (for API + SPA communication)
- SQL Server / PostgreSQL (database)
- Swagger / OpenAPI (API documentation)
- React (Vite + TypeScript)
- React Router (routing & protected routes)
- TailwindCSS / MUI (styling β pick one)
- Fetch API / Axios (API requests)
- Docker + docker-compose
- GitHub Actions (CI/CD pipeline)
- Azure App Service + Azure SQL + Azure Blob Storage
- Or Netlify/Vercel for frontend hosting
- Register / login with JWT auth
- Browse and search job listings
- Apply to jobs with resume upload
- Track application status
- Create, update, delete job postings
- View applicants per job
- Manage application statuses (reviewed, interview, hired, rejected)
- Manage all users, jobs, and applications
- Dashboard with system-wide metrics
/jobportal
/src
/JobPortal.Api # ASP.NET Core Web API backend
/JobPortal.WebClient # React (Vite + TypeScript) frontend
docker-compose.yml
.github/workflows/ci.yml
README.md
cd src/JobPortal.Api
# Restore dependencies
dotnet restore
# Create database & run migrations
dotnet ef migrations add InitialCreate
dotnet ef database update
# Run API
dotnet run- API runs on
https://localhost:7001(HTTPS) andhttp://localhost:5001(HTTP). - Swagger docs available at
/swagger.
cd src/JobPortal.WebClient
# Install dependencies
npm install
# Start dev server
npm run dev- Frontend runs on
http://localhost:5173(Vite default). - Configured proxy sends
/apirequests to the backend.
# Initialize user secrets
dotnet user-secrets init
# Set required secrets
dotnet user-secrets set "AzureStorage:ConnectionString" "your-connection-string"
dotnet user-secrets set "AzureStorage:AccountName" "your-account-name"
dotnet user-secrets set "AzureStorage:AccountKey" "your-account-key"
dotnet user-secrets set "Jwt:Key" "your-jwt-secret-key"Required configuration:
{
"ConnectionStrings": {
"DefaultConnection": "Server=your-db-server;Database=JobPortalDb;..."
},
"AzureStorage": {
"ConnectionString": "your-storage-connection-string",
"ContainerName": "jobportalresumes",
"AccountName": "your-storage-account",
"AccountKey": "your-storage-key"
},
"Jwt": {
"Key": "your-jwt-secret-key",
"Issuer": "JobPortalApi",
"Audience": "JobPortalClient"
}
}VITE_API_URL=http://localhost:5001/apiPOST /api/auth/registerβ create accountPOST /api/auth/loginβ login, returns JWT
GET /api/jobsβ list jobs (supports pagination, filters)GET /api/jobs/{id}β get job detailsPOST /api/jobsβ create job (recruiter-only)PUT /api/jobs/{id}β update job (recruiter-only)DELETE /api/jobs/{id}β delete job (recruiter/admin)
POST /api/applicationsβ apply with resumeGET /api/applications/{jobId}β recruiter views applicantsPUT /api/applications/{id}β update status
POST /api/uploadsβ upload resume (returns file URL)
Local dev with containers:
docker-compose up --buildServices:
dbβ SQL Serverapiβ ASP.NET Core backendwebβ React frontend
- Deploy API as Azure App Service (or containerized to Azure Container Apps).
- Use Azure SQL Database for DB.
- Store resumes in Azure Blob Storage.
- Deploy React static build to Netlify / Vercel / Azure Static Web Apps.
- Or serve frontend build from backend
wwwroot.
- Unit tests with xUnit
- Integration tests with ASP.NET Core TestServer
- Jest + React Testing Library for component tests
- Backend scaffold with EF Core & JobsController
- Add migrations & database
- Add Identity & JWT authentication
- Implement AuthController (register/login)
- Build React frontend (Vite + TS)
- Implement auth flow on frontend
- Jobs CRUD (frontend + backend integration)
- Resume uploads
- Recruiter dashboard
- Admin role & dashboard
- CI/CD with GitHub Actions
- Deploy backend (Azure) + frontend (Netlify/Vercel)
Add screenshots or a short demo video/gif once core features are done.
βDeveloped a Job Portal web application using ASP.NET Core, EF Core, Identity, and React (Vite + TypeScript). Implemented JWT authentication, role-based authorization, and resume uploads. Deployed backend on Azure App Service and frontend on Netlify.β
Clone the repo, open a branch, and make PRs.
All suggestions welcome!