Skip to content

Repository files navigation

DevMingle

DevMingle은 위치기반 개발자 커뮤니티 앱입니다. 개발자들은 DevMingle을 사용하여 주변 지역의 다른 개발자들과 연락하고 지식을 공유할 수 있습니다. 이 앱은 개발자들이 자신의 기술을 향상시키고 더욱 창의적인 프로젝트를 만들 수 있도록 돕는 것을 목표로 합니다.

1. 프로젝트 디렉터리 구조

.
├── build
│ ├── classes
│ │ └── java
│ │ └── main
│ ├── generated
│ │ └── sources
│ │ ├── annotationProcessor
│ │ │ └── java
│ │ │ └── main
│ │ └── headers
│ │ └── java
│ │ └── main
│ ├── libs
│ │ └── dev-talk-0.0.1-SNAPSHOT.jar
│ ├── resolvedMainClassName
│ ├── resources
│ │ └── main
│ │ ├── application-database.yml
│ │ ├── application-dev.yml
│ │ ├── application-local.yml
│ │ ├── application-prod.yml
│ │ ├── application-valid.yml
│ │ ├── application.yml
│ │ └── db
│ │ └── migration
│ │ └── V1__init_db.sql
│ └── tmp
│ ├── bootJar
│ │ └── MANIFEST.MF
│ └── compileJava
│ └── previous-compilation-data.bin
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── devtalk
│ │ │ ├── DevTalkApplication.java
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ ├── BaseController.java
│ │ │ │ ├── CommonController.java
│ │ │ │ ├── PostController.java
│ │ │ │ └── FollowController.java
│ │ │ ├── dto
│ │ │ │ ├── commons
│ │ │ │ │ └── PreSignedUrlDto.java
│ │ │ │ ├── follows
│ │ │ │ │ ├── TargetUserInfoDto.java
│ │ │ │ │ ├── FollowAddDto.java
│ │ │ │ │ └── FollowInfoDto.java
│ │ │ │ ├── posts
│ │ │ │ │ ├── PostListDto.java
│ │ │ │ │ └── PostListInfoDto.java
│ │ │ │ ├── users
│ │ │ │ │ ├── ChangePwdDto.java
│ │ │ │ │ ├── LoginDto.java
│ │ │ │ │ ├── MypageDto.java
│ │ │ │ │ ├── SignupUserProfiles.java
│ │ │ │ │ ├── SignupUserProfilesResponse.java
│ │ │ │ │ └── UserProfilesResponse.java
│ │ │ │ ├── ApiResponse.java
│ │ │ │ └── ErrorResponse.java
│ │ │ ├── entity
│ │ │ │ ├── BaseTimeEntity.java
│ │ │ │ ├── Categories.java
│ │ │ │ ├── DeletedEntity.java
│ │ │ │ ├── Fllows.java
│ │ │ │ ├── Images.java
│ │ │ │ ├── LoginUser.java
│ │ │ │ ├── Posts.java
│ │ │ │ ├── UserProfiles.java
│ │ │ │ └── Users.java
│ │ │ ├── enums
│ │ │ │ ├── ImageType.java
│ │ │ │ └── OrderType.java
│ │ │ ├── exception
│ │ │ │ ├── ApiResultStatus.java
│ │ │ │ ├── AuthException.java
│ │ │ │ ├── BadApiRequestException.java
│ │ │ │ ├── BadRequestException.java
│ │ │ │ ├── BusinessException.java
│ │ │ │ ├── CommonException.java
│ │ │ │ ├── ForbiddenException.java
│ │ │ │ ├── FollowException.java
│ │ │ │ ├── ForbiddenException.java
│ │ │ │ ├── GlobalExceptionHandler.java
│ │ │ │ └── UnauthorizedException.java
│ │ │ ├── repository
│ │ │ │ ├── FollowRepository.java
│ │ │ │ ├── PostsJpaRepository.java
│ │ │ │ ├── PostsRepository.java
│ │ │ │ ├── PostsRepositoryImpl.java
│ │ │ │ ├── UserProfileRepository.java
│ │ │ │ └── UsersRepository.java
│ │ │ ├── security
│ │ │ │ ├── CustomEntryPoint.java
│ │ │ │ └── SecurityConfig.java
│ │ │ ├── resolver
│ │ │ │ └── ApiResponseResolver.java
│ │ │ ├── security
│ │ │ │ ├── jwt
│ │ │ │ │ ├──TokenFilter.java
│ │ │ │ │ └──TokenProvider.java
│ │ │ │ ├── ColumnEncryptor.java
│ │ │ │ └── PermitUrlProperties.java
│ │ │ ├── service
│ │ │ │ ├── AuthService.java
│ │ │ │ ├── FollowService.java
│ │ │ │ ├── PostService.java
│ │ │ │ ├── PostServiceImpl.java
│ │ │ │ ├── S3Service.java
│ │ │ │ └── UserService.java
│ │ │ └── util
│ │ │ ├── MailSender.java
│ │ │ ├── PasswordGenerator.java
│ │ │ ├── RedisUtil.java
│ │ │ └── TxidGenerator.java
│ │ └── resources
│ │ ├── application-auth.yml
│ │ ├── application-datasource.yml
│ │ ├── application-dev.yml
│ │ ├── application-local.yml
│ │ ├── application-prod.yml
│ │ ├── application.yml
│ │ └── db
│ │ └── migration
│ │ └── V1__init_db.sql
│ └── test
│ └── java
│ └── com
│ └── example
│ └── devtalk
│ └── DevTalkApplicationTests.java
├── build.gradle
├── docker-compose.local.yml
├── docker-compose.yml
├── Dockerfile
├── gradlew
├── gradlew.bat
├── HELP.md
├── README.md
├── settings.gradle
├── start-server.sh
└── stop-server.sh

2. 서버 구성

2-1. 개발 환경

  • OS: Alpine Linux 3.16
  • Language: openjdk 17
  • Framework: SpringBoot 3.1.3
  • build & lib management: Gradle 8.2.1
  • DB: PostgreSQL 15.3
  • ORM: Spring Boot JPA
  • Etc: lombok, jjwt, flyway

2-2. Endpoint

3. 애플리케이션 실행 방법

  • 실행 전 openjdk-17, docker, docker-compose 가 설치되어 있어야 합니다.

3-1. 프로젝트 루트 경로에 .env 생성

# 활성화 할 프로파일SPRING_PROFILE:local# DB 유저 정보DB_PASSWORD:yourpassword1234# JWT 설정JWT_SECRET:yoursecretkey1234JWT_EXPIRE:600

3-2. 프로젝트 루트 경로에서 build & run 진행

1. start-server.sh 사용하여 build, run 한꺼번에 실행하기

./start-server.sh

2. start-server.sh 사용하지 않고 실행하기

  1. build jar
./gradlew clean bootJar
  1. docker compose up
docker compose -f docker-compose.yml up -d

3-3. Endpoint 호출 방법

Health Check URL 을 통해 서버가 정상적으로 실행되었는지 확인

  • 로컬
curl -X GET http://127.0.0.1:8080/actuator/health



위치기반 개발자 커뮤니티

5. 구현 방법

6. API 명세

6-x. 에러 정의

7. 클라우드 환경 구조

About

위치기반 개발자 커뮤니티 DevMingle API Server

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages