Skip to content

PeterImrich13/jobela-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jobela API

About the Project

Jobela API is a backend application for a job platform that connects candidates and employers, with an initial focus on the gastronomy and hospitality sector.

The project is designed as a production-style Spring Boot backend application with layered architecture, REST APIs, validation, exception handling, database migrations, Dockerized infrastructure, and automated testing.

Its purpose is both practical and educational: to simulate a real-world backend project and serve as a portfolio project for Java backend development roles.


Tech Stack

Backend

  • Java 21
  • Spring Boot 3
  • Spring Web
  • Spring Data JPA
  • Spring Validation
  • Spring Security

Database

  • PostgreSQL
  • Flyway
  • H2 (testing)

Infrastructure

  • Docker
  • Docker Compose
  • Maven

Mapping & Utilities

  • MapStruct
  • Lombok

Testing

  • JUnit 5
  • Mockito
  • MockMvc
  • Testcontainers

Features

Implemented

User Module

  • User creation and management
  • Role-based user structure
  • Validation and exception handling

Candidate Module

  • Candidate profile management
  • Candidate personal information
  • Candidate-related submodules

Authentication & Security

  • JWT-based authentication
  • Stateless Spring Security configuration
  • Role-based access control
  • Custom authentication entry point
  • Custom access denied handler
  • Protected endpoints for candidates, employers and admins

Candidate Submodules

  • Skills
  • Languages
  • Education
  • Certifications
  • Documents
  • Work Experience
  • Preferences
  • Work Authorization
  • Location Preferences

Candidate Public Profiles

  • Employer/admin access to public candidate profiles
  • Pagination and sorting
  • Filtering by:
    • country
    • city
    • search keyword
    • skill
    • language
    • open-to-work status
    • target position
    • language level
    • work authorization
    • sponsorship requirement

Employer Module

  • Employer profile creation
  • Employer profile retrieval
  • Employer update and deletion
  • Admin access to paginated employer list
  • Role-based ownership checks

Architecture & Backend Features

  • REST API design
  • DTO-based request/response layer
  • Layered architecture
  • MapStruct mapping layer
  • Global exception handling
  • Validation with Jakarta Validation
  • Flyway database migrations
  • Dockerized PostgreSQL setup
  • Multiple Spring profiles (dev, test)

Testing

  • Unit testing
  • Integration testing
  • Controller testing with MockMvc

In Progress

  • Swagger/OpenAPI improvements
  • Extended integration testing
  • Testcontainers setup refinement

Planned

  • Job offer module
  • Job application module
  • Filtering and search improvements
  • Deployment
  • Public demo environment

Project Structure

The project follows a feature-based modular architecture.

src/main/java/com/jobela/jobela_api
├── candidate
├── common
├── security
├── user
└── config

Each module follows a layered structure:

module
├── controller
├── service
├── repository
├── entity
├── dto
├── mapper
└── exception

This structure improves maintainability, scalability, and readability.


Database & Migration

The application uses PostgreSQL as the primary development database.

Database schema changes are managed using Flyway migrations.

Migration files are located here:

src/main/resources/db/migration

The project also uses separate configuration profiles:

  • application.yml
  • application-dev.yml
  • application-test.yml

Testing

The project includes automated testing with:

  • JUnit 5
  • Mockito
  • MockMvc
  • H2 test database
  • Spring Boot test profile
  • Testcontainers (planned / partial integration)

Tests focus on:

  • Business logic validation
  • API behavior
  • Request validation
  • Exception handling
  • Service layer logic
  • Controller integration testing

Getting Started

Prerequisites

Before running the project, make sure you have installed:

  • Java 21
  • Maven
  • Docker
  • Docker Compose

Clone the Repository

git clone https://github.com/PeterImrich13/jobela-api.git
cd jobela-api

Run PostgreSQL via Docker

docker compose up -d

Run the Application

./mvnw spring-boot:run

The application usually runs with the dev profile.


Run Tests

./mvnw test

API Documentation

Swagger/OpenAPI documentation is available locally after running the application.


Roadmap

  • User module
  • Candidate module
  • Candidate submodules
  • Flyway migrations
  • Dockerized PostgreSQL
  • Validation
  • Exception handling
  • Unit testing
  • Integration testing
  • Security and authentication
  • Employer module
  • Job offer module
  • Job application module
  • Deployment
  • Public demo

Author

Peter Imrich


Project Goal

The goal of Jobela API is to simulate a real-world backend system using clean architecture and production-style development practices.

This project serves as both a portfolio project and a learning platform for improving backend engineering skills.

About

Production-style Spring Boot backend for a job platform with PostgreSQL, Flyway, Docker, testing, and modular architecture.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages