Skip to content

devendrasanghavi404/aggregatorservice-epic

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aggregatorservice-epic

Spring BootApplication AggregatorApp_Site

Problem statement Application Architecture DBDesign Class details Functionalities ● EPIC 1 Note:- Use any Relational DB for the User details ● EPIC 2 Note:- Use any NoSQL DB for the GloQuora_Post ● EPIC 3 Instructions Sample Data

Problem statement

GloQuora is a community-based questions and answers website. GloQuora app has many features such as registering as a user and posting queries in the GloQuora forums.

Sam has to create an admin module that generates a report to analyze the GloQuora site based on the users and posts.

Help Sam to design an aggregator app for admin users that consumes the data from Userdetails App and GloQuoraPost App which are two separate services.

Application Architecture

DBDesign

Class details

Class - User_Details UserId Name Username
Email Address Phone Geo Company

Class-Company Name Location

Class- Address Street City

Class- Geo Lat Long

Class - GloQuora_Post Userid
Post_id
Title
Body

Functionalities
• EPIC 1 User details App CRUD service for the User details ◦ GetAll User details ◦ GetSpecificUserDetails ◦ AddUser ◦ DeleteUser ◦ UpdateUser Note:- Use any Relational DB for the User details

• EPIC 2 GloQuora_PostApp

CRUD for the GloQuora_Post details ◦ GetAllGloQuora_Post ◦ Add_GloQuora_Post ◦ Delete_GloQuora_Post ◦ Update_GloQuora_Post Note:- Use any NoSQL DB for the GloQuora_Post

• EPIC 3 AdminApp 

User Story User Story API Response US1 As an admin, one should be able to get all the details of the GloQuora_Post sent by a specific user http://localhost: port/userspost/{UserId} All posts by specific user 1 must be displayed at the browser console/Postman console. US2 As an admin, one should be able to get all the posts posted by the users with details of users and their posts.

http://localhost: port/userspost All his/her posts must be displayed at the browser console/Postman console. US3 As an admin, one should be able to get all the user names who have posted more than k post.(k can be an integer like 5 or 10) http://localhost: port/userspost/k all the user name who has posted more than k posts has to be displayed in the browser console/Postman console. US4 As an admin, one should be able to get all the company name of the users who have posted at least one post
http://localhost: port/userspost/company all the company names has to be displayed in the browser console/Postman console which has posted at least one comment

Epic 4 Security Features Add the below given requirements to the GloQuora app and provide the required Spring security configuration.

US5 Allow the access to http://localhost: port/userspost/** for only the users who have logged in by providing username and password explicitly (ref Epic 3 ) use in-memory authentication, with a role as ADMIN. username = “sam@gloquora.com”, password = “sam@123”

US5 While storing the username and email address int the UserApp ( ref Epic1 ) The data need to be encrypted

Use Spring Security's BCryptPasswordEncoder. Store the Username and Email in an encoded format using Spring Security's BCryptPasswordEncoder. US6 Only Admin with username John should be able to delete the users.

Secure user delete functionality of the application to be accessible only to the ADMIN with username as "John" Implement the Method Level Security for the functionality.

Instructions

1. Use Spring Boot Framework and Microservice Architecture 
2. Use the Controller /Service /Repository/Entity /DTO Pattern 
3. Use a centralized registry to register the Services. 
4. Use RestTemplate/ Any technique other to Consume the services.
5. Use APIGateway to route the request to GloQuora_PostApp and UserApp
6. Use appropriate validations of data at the controller 
7. Use appropriate exception management.
8. Use Logger appropriately  
9. Use Create appropriate testing modules at Controllers
10. Use Swagger API to create a documentation 

Sample Data

User_Details Json Data format { "userId": 1, "name": "Graham", "username": "Bret", "email": "Sincere@april.biz", "address": { "street": "Kulas Light", "city": "Gwenborough", "geo": { "lat": "-37.3159", "lng": "81.1496" } }, "phone": "6546546456", "company": { "name": "Romaguera-Crona", "location": "Multi-layered client-server neural-net", } } GloQuora_Post Json Data format

{ "userId": 1, "post_id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit recusandae consequuntur expedit" }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Java 100.0%