- Developed a REST API service about social media world.
- Implemented JWT Authentication and Role-based Authorization with Login/Register services.
- Ability to create posts and make likes/comments.
- Ability to join tribes(groups) and bookmark posts.
- Developed follow, unfollow, block, unblock, search and feed services.
- Implemented view/clear search history service.
- Handled exceptions and input validations.
- Deployed to AWS EC2 using Docker and GitHub Actions CI/CD.
.
βββ Dockerfile
βββ README.md
βββ docker-compose-dev.yaml
βββ docker-compose.yaml
βββ k8s
β βββ deploy.sh
β βββ ingress-nginx-controller.yaml
β βββ postgres.yaml
β βββ tribe.yaml
βββ mvnw
βββ mvnw.cmd
βββ pom.xml
βββ setup-github-actions-runner.sh
βββ src
β βββ main
β βββ java
β β βββ com
β β βββ tribe
β β βββ TribeApplication.java
β β βββ config
β β β βββ BeanConfig.java
β β β βββ SecurityConfig.java
β β βββ controller
β β β βββ CommentController.java
β β β βββ HistoryController.java
β β β βββ LoginController.java
β β β βββ PostBookmarkController.java
β β β βββ PostController.java
β β β βββ SignupController.java
β β β βββ TokenController.java
β β β βββ TribeController.java
β β β βββ UserController.java
β β β βββ UserTribeController.java
β β βββ dto
β β β βββ CommentRequestDto.java
β β β βββ ContentDto.java
β β β βββ ErrorDto.java
β β β βββ HistoryRequestDto.java
β β β βββ LoginRequestDto.java
β β β βββ LoginResponseDto.java
β β β βββ MessageDto.java
β β β βββ PostBookmarkDto.java
β β β βββ PostRequestDto.java
β β β βββ SignupRequestDto.java
β β β βββ TokenRequestDto.java
β β β βββ TokenResponseDto.java
β β β βββ TribeRequestDto.java
β β β βββ UserBlockingDto.java
β β β βββ UserDto.java
β β β βββ UserFollowingDto.java
β β β βββ UserTribeDto.java
β β βββ entity
β β β βββ Comment.java
β β β βββ History.java
β β β βββ Post.java
β β β βββ PostBookmark.java
β β β βββ Tribe.java
β β β βββ User.java
β β β βββ UserBlocking.java
β β β βββ UserFollowing.java
β β β βββ UserTribe.java
β β βββ exception
β β β βββ ApiError.java
β β β βββ CustomAuthenticationExceptionEntryPoint.java
β β β βββ CustomException.java
β β β βββ CustomExceptionHandler.java
β β βββ filter
β β β βββ JwtAuthenticationFilter.java
β β βββ repository
β β β βββ CommentRepository.java
β β β βββ HistoryRepository.java
β β β βββ PostBookmarkRepository.java
β β β βββ PostRepository.java
β β β βββ TribeRepository.java
β β β βββ UserBlockingRepository.java
β β β βββ UserFollowingRepository.java
β β β βββ UserRepository.java
β β β βββ UserTribeRepository.java
β β βββ response
β β β βββ MessageResponse.java
β β βββ service
β β β βββ CommentService.java
β β β βββ HistoryService.java
β β β βββ LoginService.java
β β β βββ PostBookmarkService.java
β β β βββ PostService.java
β β β βββ SignupService.java
β β β βββ TokenService.java
β β β βββ TribeService.java
β β β βββ UserBlockingService.java
β β β βββ UserFollowingService.java
β β β βββ UserService.java
β β β βββ UserTribeService.java
β β β βββ impl
β β β βββ CommentServiceImpl.java
β β β βββ HistoryServiceImpl.java
β β β βββ LoginServiceImpl.java
β β β βββ PostBookmarkServiceImpl.java
β β β βββ PostServiceImpl.java
β β β βββ SignupServiceImpl.java
β β β βββ TokenServiceImpl.java
β β β βββ TribeServiceImpl.java
β β β βββ UserBlockingServiceImpl.java
β β β βββ UserFollowingServiceImpl.java
β β β βββ UserServiceImpl.java
β β β βββ UserTribeServiceImpl.java
β β βββ util
β β β βββ AuthenticationUser.java
β β β βββ CustomUser.java
β β β βββ JwtUtil.java
β β β βββ PostBookmarkId.java
β β β βββ Roles.java
β β β βββ UserBlockingId.java
β β β βββ UserFollowingId.java
β β β βββ UserTribeId.java
β β β βββ UsernameGenerator.java
β β βββ validation
β β βββ RoleValidator.java
β β βββ annotation
β β βββ ValidRole.java
β βββ resources
β βββ application-prod.properties
β βββ application.properties
- Kubernetes
- Run
deploy.sh
file:cd ./k8s chmod +x ./deploy.sh sudo ./deploy.sh
- Run
- Docker
- Run in development environment:
docker-compose -f docker-compose-dev.yaml up -d --build # to stop --> docker-compose -f docker-compose-dev.yaml down
- Run in production environment:
docker-compose up -d --build # to stop --> docker-compose down
- Run in development environment:
CI/CD π π
- CI:
- Checkout the code.
- Login to dockerhub.
- Build the docker image.
- Push the docker image to dockerhub.
- CD (on AWS EC2 Ubuntu machine as GitHub Actions Self-hosted Runner
π
):- Stop & Remove existing containers.
- Delete existing images.
- Checkout the code.
- Run the containers via docker-compose.yaml file.
- Programming Language: Java 17
- Backend Framework: Spring Boot v3.1.2
- Database Engine: PostgreSQL
- Other Frameworks: Spring Security Data JPA, Hibernate
- API Documentation: Swagger via OpenApi 3.0
- Containerization and Orchestration: Docker
π
π
, Kubernetesπ
- Cloud: AWS cloud
- CI/CD: GitHub Actions
π
π
- Adding OAuth 2.0.
If you're interested in contributing to this repository, please follow these guidelines:
- Fork the repository.
- Make your changes.
- Submit a Pull Request.