/idorm-server

๐Ÿซ INU + Dormitory ๊ต๋‚ด ๊ธฐ์ˆ™์‚ฌ์˜ ๋ชจ๋“  ๊ฒƒ, idorm

Primary LanguageJavaMIT LicenseMIT

์•„์ด๋”

์ธ์ฒœ๋Œ€ํ•™๊ต ๊ธฐ์ˆ™์‚ฌ์ƒ๋“ค์„ ์œ„ํ•œ ๋ชจ๋“  ๊ฒƒ โ€ข ๋ฐฑ์—”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ


ํฌ๋กค๋ง ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ™์‚ฌ ๊ณต์‹ ์ผ์ • ์•Œ๋ฆผ    |     ๋ฃธ๋ฉ”์ดํŠธ์™€ ๊ณต์œ  ์บ˜๋ฆฐ๋”    |     ๋ฃธ๋ฉ”์ดํŠธ ๋งค์นญ    |     ๊ธฐ์ˆ™์‚ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ


์„œ๋น„์Šค UI


๊ฐœ๋ฐœ ๊ณผ์ •

๋‚˜ํ˜„ : ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•œ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜ ๋„์ž…๊ธฐ

๋‚˜ํ˜„ : ์ธํ„ฐ์…‰ํ„ฐ์™€ Argument Resolver๋ฅผ ์ด์šฉํ•œ ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด ์ค‘๋ณต ์ฝ”๋“œ ๊ฐœ์„ ๊ธฐ

๋‚˜ํ˜„ : JPA N+1 ๋ฌธ์ œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ ์นด์šดํ„ฐ ๊ฐœ๋ฐœ๊ธฐ

๋‚˜ํ˜„ : XToOne ์กฐํšŒ ์‹œ N+1 ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ํŠœ๋‹๊ณผ ํŽ˜์ด์ง• ์ตœ์ ํ™”

๋‚˜ํ˜„ : ํ”„๋ก์‹œ ๋ฐฉ์‹์˜ AOP ํ•œ๊ณ„ - self invocation ์ด์Šˆ

๋‚˜ํ˜„ : @Async๋ฅผ ์ด์šฉํ•œ ์ด๋ฉ”์ผ ์ธ์ฆ ๊ธฐ๋Šฅ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์™€ ์ฃผ์˜ ์‚ฌํ•ญ

์†กํ˜„ : ์„ฑ๋Šฅ๊ณผ ๋™์‹œ์„ฑ์„ ๊ณ ๋ คํ•œ ๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š” ๊ฐœ์ˆ˜ ์ตœ์ ํ™”ํ•˜๊ธฐ

์†กํ˜„ : ์ปค๋ฒ„๋ง ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ’€ ์Šค์บ”๊ณผ ํŒŒ์ผ ์ •๋ ฌ ๊ฐœ์„ ํ•˜๊ธฐ

์†กํ˜„ : ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—๋Ÿฌ์ฝ”๋“œ ๋ฐ ์„ฑ๊ณต ์ฝ”๋“œ ๋„๋ฉ”์ธ ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ

์†กํ˜„ : ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ์ฟผ๋ฆฌ N+1 ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ


Project Structure

ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ปดํฌ๋„ŒํŠธ ๋ณ„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ์ถ”์ƒํ™” ๊ธฐ๋ฐ˜ ์„ค๊ณ„๋ฅผ ๊ฐ•ํ™”ํ•จ์œผ๋กœ์จ ์ปดํฌ๋„ŒํŠธ ๋ณ„ ์˜์กด์„ฑ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

.
โ”œโ”€โ”€ IdormServerApplication.java
โ”œโ”€โ”€ auth
โ”œโ”€โ”€ calendar
โ”‚   โ”œโ”€โ”€ officialCalendar
โ”‚   โ”œโ”€โ”€ teamCalendar
โ”‚   โ”œโ”€โ”€ sleepOverCalendar
โ”‚   โ””โ”€โ”€ team
โ”œโ”€โ”€ common
โ”‚   โ”œโ”€โ”€ config
โ”‚   โ”‚   โ”œโ”€โ”€ AsyncConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ FirebaseConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ JpaAuditingConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ MailConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ S3Config.java
โ”‚   โ”‚   โ”œโ”€โ”€ SchedulingConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ SwaggerConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ TimeConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ WebMvcConfig.java
โ”‚   โ”‚   โ”œโ”€โ”€ WebMvcLocalConfig.java
โ”‚   โ”‚   โ””โ”€โ”€ WebSecurityConfig.java
โ”‚   โ”œโ”€โ”€ entity
โ”‚   โ”‚   โ””โ”€โ”€ BaseTimeEntity.java
โ”‚   โ”œโ”€โ”€ exception
โ”‚   โ”‚   โ”œโ”€โ”€ BaseException.java
โ”‚   โ”‚   โ”œโ”€โ”€ BaseResponseCode.java
โ”‚   โ”‚   โ”œโ”€โ”€ GlobalExceptionHandler.java
โ”‚   โ”‚   โ””โ”€โ”€ GlobalResponseCode.java
โ”‚   โ”œโ”€โ”€ logging
โ”‚   โ”‚   โ”œโ”€โ”€ ErrorLoggingAdvice.java
โ”‚   โ”‚   โ”œโ”€โ”€ ExecutionTimer.java
โ”‚   โ”‚   โ””โ”€โ”€ LoggingAdvice.java
โ”‚   โ”œโ”€โ”€ performance
โ”‚   โ”‚   โ”œโ”€โ”€ JpaInspector.java
โ”‚   โ”‚   โ”œโ”€โ”€ NPlusOneWarning.java
โ”‚   โ”‚   โ”œโ”€โ”€ QueryCountInterceptor.java
โ”‚   โ”‚   โ””โ”€โ”€ QueryCounter.java
โ”‚   โ”œโ”€โ”€ response
โ”‚   โ”‚   โ”œโ”€โ”€ ErrorResponse.java
โ”‚   โ”‚   โ””โ”€โ”€ SuccessResponse.java
โ”‚   โ””โ”€โ”€ util
โ”‚       โ””โ”€โ”€ Validator.java
โ”œโ”€โ”€ community
โ”‚   โ”œโ”€โ”€ post
โ”‚   โ”œโ”€โ”€ postLike
โ”‚   โ”œโ”€โ”€ postPhoto
โ”‚   โ””โ”€โ”€ comment
โ”œโ”€โ”€ email
โ”‚   โ”œโ”€โ”€ adapter
โ”‚   โ”‚   โ”œโ”€โ”€ in
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ web
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ EmailController.java
โ”‚   โ”‚   โ””โ”€โ”€ out
โ”‚   โ”‚       โ”œโ”€โ”€ EmailResponseCode.java
โ”‚   โ”‚       โ”œโ”€โ”€ api
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ GoogleMailClient.java
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ MockMailClient.java
โ”‚   โ”‚       โ”œโ”€โ”€ exception
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ DuplicatedEmailException.java
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ EmailServerErrorException.java
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ ExpiredEmailVerificationCodeException.java
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ InvalidEmailCharacterException.java
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ InvalidVerificationCode.java
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ NotFoundEmailException.java
โ”‚   โ”‚       โ””โ”€โ”€ persistence
โ”‚   โ”‚           โ”œโ”€โ”€ DeleteEmailAdapter.java
โ”‚   โ”‚           โ”œโ”€โ”€ EmailRepository.java
โ”‚   โ”‚           โ”œโ”€โ”€ LoadEmailAdapter.java
โ”‚   โ”‚           โ””โ”€โ”€ SaveEmailAdapter.java
โ”‚   โ”œโ”€โ”€ application
โ”‚   โ”‚   โ”œโ”€โ”€ EmailService.java
โ”‚   โ”‚   โ”œโ”€โ”€ RandomVerificationCodeGenerator.java
โ”‚   โ”‚   โ””โ”€โ”€ port
โ”‚   โ”‚       โ”œโ”€โ”€ in
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ EmailUseCase.java
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ dto
โ”‚   โ”‚       โ”‚       โ”œโ”€โ”€ EmailSendRequest.java
โ”‚   โ”‚       โ”‚       โ””โ”€โ”€ EmailVerifyRequest.java
โ”‚   โ”‚       โ””โ”€โ”€ out
โ”‚   โ”‚           โ”œโ”€โ”€ DeleteEmailPort.java
โ”‚   โ”‚           โ”œโ”€โ”€ GenerateVerificationCodePort.java
โ”‚   โ”‚           โ”œโ”€โ”€ LoadEmailPort.java
โ”‚   โ”‚           โ”œโ”€โ”€ SaveEmailPort.java
โ”‚   โ”‚           โ””โ”€โ”€ SendEmailPort.java
โ”‚   โ””โ”€โ”€ entity
โ”‚       โ”œโ”€โ”€ Email.java
โ”‚       โ””โ”€โ”€ EmailStatus.java
โ”œโ”€โ”€ matchingInfo
โ”œโ”€โ”€ matchingMate
โ”œโ”€โ”€ member
โ”œโ”€โ”€ notification
โ”œโ”€โ”€ photo
โ””โ”€โ”€ report