Skip to content

CyJay96/advertisement-system

Repository files navigation

Advertisement Management System RESTful Web Service

Java Spring Gradle JWT Postgres Docker


Description

This is a RESTful web service built with Spring Boot, Java, Gradle and PostgreSQL, which provides functionality for managing Advertisers and Campaigns. The service includes support for creating, updating and deleting Advertisers, Campaigns, Countries, Languages and Users.


The stack of technologies used

API Technologies:

  • SOLID
  • OOP
  • DI
  • REST

🖥️ Backend technologies:

  • Java 17
  • Spring Boot 3, Spring Security
  • JWT

🛠️ Build Tool:

  • Gradle 8.4

💾 DataBase:

  • PostgreSQL
  • LiquiBase Migration

✔️ Testing:

  • Junit 5
  • Mockito

🐳 Containerization:

  • Docker

🚀 Get Started

Build with Gradle

Build module:

$ ./gradlew clean build

If in case face any issue while building module because of test cases, then try build with disabling test cases:

$ ./gradlew clean build -x test

Run Application using Docker Compose:

$ docker-compose up

Browse OpenAPI Documentation:
localhost:8080/swagger-ui.html
localhost:8080/v3/api-docs


📌 API Endpoints

Authentication

HTTP METHOD ENDPOINT DESCRIPTION
POST /api/v0/auth/register Register User
POST /api/v0/auth/login Authorize User
POST /api/v0/logout Logout User

Users

HTTP METHOD ENDPOINT DESCRIPTION
GET /auth/api/v0/users Find all Users
GET /auth/api/v0/users/{id} Find User by ID
GET /auth/api/v0/users/byUsername/{username} Find User by username
PUT /auth/api/v0/users/{id} Update User by ID
PATCH /auth/api/v0/users/{id} Partial Update User by ID
PATCH /auth/api/v0/users/restore/{id} Restore User by ID
DELETE /auth/api/v0/users/{id} Delete User by ID

Advertisers

HTTP METHOD ENDPOINT DESCRIPTION
POST /api/v0/advertisers Save new Advertiser
GET /api/v0/advertisers Find all Advertisers
GET /api/v0/advertisers/criteria Find all Advertisers by Criteria
GET /api/v0/advertisers/{id} Find Advertiser by ID
PUT /api/v0/advertisers/{id} Update Advertiser by ID
PATCH /api/v0/advertisers/{id} Partial Update Advertiser by ID
PATCH /api/v0/advertisers/restore/{id} Restore Advertiser by ID
DELETE /api/v0/advertisers/{id} Delete Advertiser by ID

Campaigns

HTTP METHOD ENDPOINT DESCRIPTION
POST /api/v0/campaigns/{newsId} Save new Campaign
GET /api/v0/campaigns Find all Campaigns
GET /api/v0/campaigns/criteria Find all Campaigns by Criteria
GET /api/v0/campaigns/{id} Find Campaign by ID
PUT /api/v0/campaigns/{id} Update Campaign by ID
PATCH /api/v0/campaigns/{id} Partial Update Campaign by ID
PATCH /api/v0/campaigns/restore/{id} Restore Campaign by ID
DELETE /api/v0/campaigns/{id} Delete Campaign by ID

Countries

HTTP METHOD ENDPOINT DESCRIPTION
POST /api/v0/countries/{newsId} Save new Country
GET /api/v0/countries Find all Countries
GET /api/v0/countries/criteria Find all Countries by Criteria
GET /api/v0/countries/{id} Find Country by ID
PUT /api/v0/countries/{id} Update Country by ID
PATCH /api/v0/countries/{id} Partial Update Country by ID
PATCH /api/v0/countries/restore/{id} Restore Country by ID
DELETE /api/v0/countries/{id} Delete Country by ID

Languages

HTTP METHOD ENDPOINT DESCRIPTION
POST /api/v0/languages/{newsId} Save new Language
GET /api/v0/languages Find all Languages
GET /api/v0/languages/criteria Find all Languages by Criteria
GET /api/v0/languages/{id} Find Language by ID
PUT /api/v0/languages/{id} Update Language by ID
PATCH /api/v0/languages/{id} Partial Update Language by ID
PATCH /api/v0/languages/restore/{id} Restore Language by ID
DELETE /api/v0/languages/{id} Delete Language by ID