https://github.com/mirian97/aws-integrated-catalog-management
Java Spring Boot application for managing products and categories, featuring a RESTful API integrated with MongoDB and AWS services (SNS and S3) for real-time notifications and catalog storage.
https://github.com/mirian97/aws-integrated-catalog-management
api-restful aws aws-lambda java mongodb sns-topic sqs-queue
Last synced: about 1 month ago
JSON representation
Java Spring Boot application for managing products and categories, featuring a RESTful API integrated with MongoDB and AWS services (SNS and S3) for real-time notifications and catalog storage.
- Host: GitHub
- URL: https://github.com/mirian97/aws-integrated-catalog-management
- Owner: Mirian97
- License: mit
- Created: 2024-11-26T00:11:21.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-26T23:58:40.000Z (over 1 year ago)
- Last Synced: 2025-10-19T15:59:03.952Z (8 months ago)
- Topics: api-restful, aws, aws-lambda, java, mongodb, sns-topic, sqs-queue
- Language: Java
- Homepage:
- Size: 27.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# 👩🏻💻 AWS-Integrated Catalog Management
This is a system developed in **Java with Spring Boot** to manage products and categories, integrating with **MongoDB** as a database and utilizing **AWS services** (SNS and S3). It provides a RESTful API for CRUD operations on products and categories, as well as publishing notifications to **Amazon SNS** about data changes.

## ⚙️ Features
### Products and Categories
- **Category CRUD**:
- Create, update, delete, get and list categories.
- Includes validations to ensure data integrity.
- Integrates with SNS to notify about changes in categories.
- **Product CRUD**:
- Full management of products associated with categories.
- Validates product-to-category relationships before saving.
- Publishes detailed messages to SNS after operations.
### AWS Integrations
- **Amazon SNS**:
- Publishes notifications about changes in products and categories.
- Configured with secure AWS credentials.
- **Amazon S3**:
- Stores updated catalogs in JSON format for each user, organized by `ownerId`.
## 🛠️ Technologies
### Backend
- **Java**: The main programming language for this project.
- **Spring Boot**: Framework used to build RESTful APIs and manage dependencies.
- **Spring Data MongoDB**: Abstraction layer for MongoDB access.
- **Spring Context**: Manages beans and configurations.
- **Lombok**: Reduces boilerplate code by generating getters, setters, and constructors.
### Database
- **MongoDB**: NoSQL database used to store product and category data.
### AWS
- **Amazon SNS**: Sends notifications related to the catalog.
- **Amazon S3**: Stores catalogs organized by user.
## ⚒️ Configuration and Execution
### Prerequisites
- Java 17+
- MongoDB running locally or in Docker (e.g., `mongodb://localhost:27017/product-catalog`)
- AWS credentials properly configured:
- Set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` in your `application.properties`.
### Setup
1. Clone the repository:
```bash
git clone https://github.com/Mirian97/aws-integrated-catalog-management.git
cd aws-integrated-catalog-management
```
2. Configure the application.properties file with your AWS credentials:
```bash
aws.accessKeyId=YOUR_AWS_ACCESS_KEY_ID
aws.secretKey=YOUR_AWS_SECRET_ACCESS_KEY
aws.region=us-east-2
aws.sns.topic.catalog.arn=arn:aws:sns:us-east-2:EXAMPLE
```
3. Run the application:
```bash
./mvnw spring-boot:run
```
### Key Endpoints
- #### Categories:
- GET /api/category - Lists all categories.
- POST /api/category - Creates a new category.
- PUT /api/category/{id} - Updates a category.
- DELETE /api/category/{id} - Deletes a category.
- #### Products:
- GET /api/product - Lists all products.
- POST /api/product - Creates a new product.
- PUT /api/product/{id} - Updates a product.
- DELETE /api/product/{id} - Deletes a product.
## 📜 License
This project is under [MIT](./LICENSE) license