An open API service indexing awesome lists of open source software.

https://github.com/tletle7102/catconnect

πŸ±κ³ μ–‘μ΄ μž…μ–‘μ„ μ›ν•˜λŠ” μ‚¬λžŒλ“€κ³Ό 뢄양을 μ›ν•˜λŠ” μ‚¬λžŒλ“€μ„ μ—°κ²°ν•˜λŠ” λ§€μΉ­ ν”Œλž«νΌ
https://github.com/tletle7102/catconnect

intellij java jpa postgresql spring-boot spring-security

Last synced: 3 months ago
JSON representation

πŸ±κ³ μ–‘μ΄ μž…μ–‘μ„ μ›ν•˜λŠ” μ‚¬λžŒλ“€κ³Ό 뢄양을 μ›ν•˜λŠ” μ‚¬λžŒλ“€μ„ μ—°κ²°ν•˜λŠ” λ§€μΉ­ ν”Œλž«νΌ

Awesome Lists containing this project

README

          

# πŸš€ 고양이 μž…μ–‘ ν”„λ‘œμ νŠΈ
![Java](https://img.shields.io/badge/Java-21-blue)
![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4.2-green)
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-latest-lightblue)

## 🎯 ν”„λ‘œμ νŠΈ κ°œμš”
이 ν”„λ‘œμ νŠΈλŠ” DDD(Domain-Driven Design) νŒ¨ν„΄μ„ μ μš©ν•˜μ—¬ κ΅¬μ„±λœ Spring Boot 기반 μ„œλ²„ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜
고양이λ₯Ό μž…μ–‘ν•˜κΈΈ μ›ν•˜λŠ” μ‚¬λžŒλ“€μ„ μ—°κ²°ν•˜λŠ” ν”Œλž«νΌ
`JPA`, `Spring Security`, `Lombok` 등을 ν™œμš©ν•˜κ³ , `PostgreSQL`을 λ°μ΄ν„°λ² μ΄μŠ€λ‘œ μ‚¬μš©

## πŸ“ νŒ¨ν‚€μ§€ ꡬ쑰

```
src
β”œβ”€β”€ main
β”‚ β”œβ”€β”€ java/com.matchhub.catconnect
β”‚ β”‚ β”œβ”€β”€ common
β”‚ β”‚ β”‚ β”œβ”€β”€ controller
β”‚ β”‚ β”‚ β”œβ”€β”€ enums # ErrorCode μ •μ˜
β”‚ β”‚ β”‚ β”œβ”€β”€ model
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ entity # BaseEntity μ •μ˜
β”‚ β”‚ β”œβ”€β”€ domain
β”‚ β”‚ β”‚ β”œβ”€β”€ board
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ restcontroller # API 컨트둀러 (”/api” prefix)
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ model
β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ dto
β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ entity
β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ enums
β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ record
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ repository
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ service
β”‚ β”‚ β”‚ β”œβ”€β”€ comment # board와 λ™μΌν•œ ꡬ쑰
β”‚ β”‚ β”‚ β”œβ”€β”€ user # board와 λ™μΌν•œ ꡬ쑰
β”‚ β”‚ β”œβ”€β”€ global
β”‚ β”‚ β”‚ β”œβ”€β”€ configuration # JpaAuditingConfig
β”‚ β”‚ β”‚ β”œβ”€β”€ exception # μ˜ˆμ™Έ 처리 (GlobalExceptionHandler λ“±)
β”‚ β”‚ β”‚ β”œβ”€β”€ response # API Response μ •μ˜
β”‚ β”‚ β”‚ β”œβ”€β”€ util
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ auth
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ mail
β”‚ β”‚ β”œβ”€β”€ CatconnectApplication # SpringBootApplication μ§„μž…μ 
β”‚ β”œβ”€β”€ resources
β”‚ β”‚ β”œβ”€β”€ static
β”‚ β”‚ β”œβ”€β”€ templates
β”‚ β”‚ β”œβ”€β”€ application.yml
β”‚ β”‚ β”œβ”€β”€ application-dev.yml
β”‚ β”‚ β”œβ”€β”€ application-local.yml
β”‚ β”‚ β”œβ”€β”€ application-prod.yml
```

## βš™οΈ 기술 μŠ€νƒ
- Lang: Java 21
- Framework: Spring Boot 3.4.2
- DB: PostgreSQL
- Build Tools: Gradle
- Library:
- Spring Boot Starter (JPA, Security, Web, Mail)
- Lombok

## πŸš€ ν”„λ‘œμ νŠΈ μ‹€ν–‰ 방법
### 1️⃣ 클둠
터미널을 μ‹€ν–‰ν•˜κ³ , μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰

```sh
git clone https://github.com/tletle7102/catconnect.git
cd catconnect
```

- `git clone https://github.com/tletle7102/catconnect.git` 은 ν•΄λ‹Ή κΉƒν—ˆλΈŒ 리포지토리(μ΄ν•˜ origin)λ₯Ό λ³΅μ œν•˜μ—¬ 터미널에 μœ„μΉ˜ν•œ 디렉토리에 μ„€μΉ˜ν•˜μ—¬ 둜컬 리포지토리λ₯Ό μƒμ„±ν•˜λŠ” λͺ…λ Ήμ–΄
- `cd catconnect` λŠ” μœ„ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰μ‹œν‚¨ λ””λ ‰ν† λ¦¬μ—μ„œ 둜컬 리포지토리에 μƒμ„±λœ 리포지토리 λ””λ ‰ν† λ¦¬λ‘œ μ΄λ™ν•˜λŠ” λͺ…λ Ήμ–΄

### 2️⃣ ν™˜κ²½λ³€μˆ˜ μ„€μ •
ν”„λ‘œμ νŠΈ 루트 디렉토리에 `.env` νŒŒμΌμ„ μƒμ„±ν•˜κ³ , μ•„λž˜ λ‚΄μš©μ„ μž…λ ₯
μ•„λž˜ λ‚΄μš©μ—μ„œ 값이 μ—†λŠ” 뢀뢄은 λ…ΈμΆœμ— λ―Όκ°ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬μš© μ‹œ, μ±„μ›Œ λ„£μ–΄μ•Ό 함

```env
CATCONNECT_SPRING_PROFILE_ACTIVE=
CATCONNECT_TOMCAT_PORT=
CATCONNECT_SPRING_SECURITY_JWT_SECRET=
CATCONNECT_SPRING_SECURITY_EXPIRATION=
CATCONNECT_LOCAL_DB_URL=
CATCONNECT_LOCAL_DB_USERNAME=
CATCONNECT_LOCAL_DB_PASSWORD=
CATCONNECT_LOCAL_DB_NAME=
CATCONNECT_DEV_DB_URL=
CATCONNECT_DEV_DB_USERNAME=
CATCONNECT_DEV_DB_PASSWORD=
CATCONNECT_DEV_DB_NAME=

```

### 3️⃣ μ‹€ν–‰

μ•„λž˜ 두 방법 쀑 ν•œ κ°€μ§€ 방법을 μ„ νƒν•˜μ—¬ μ‹€ν–‰(택 1)
λ‹€λ§Œ, μ‹€ν–‰ν•˜κΈ° 전에 O/S에 JDK 21이 μ„€μΉ˜λ˜μ–΄ μžˆμ–΄μ•Ό 함
JDK 21의 μ„€μΉ˜μ—¬λΆ€λŠ” `javac --version`으둜 확인 κ°€λŠ₯

#### β‘  ν™˜κ²½λ³€μˆ˜ νŒŒμΌμ„ λͺ…λ Ήμ–΄λ‘œ μ£Όμž…ν•˜μ—¬ Gradle둜 μŠ€ν”„λ§λΆ€νŠΈ μ‹€ν–‰

```sh
env $(grep -v '^#' dev.env | xargs) ./gradlew bootRun
```

#### β‘‘ ν™˜κ²½λ³€μˆ˜ νŒŒμΌμ„ λ¦¬λˆ…μŠ€ ν™˜κ²½λ³€μˆ˜λ‘œ ν™œμš©ν•˜μ—¬ μŠ€ν”„λ§λΆ€νŠΈ λΉŒλ“œ ν›„ μ‹€ν–‰

```sh
export $(grep -v '^#' dev.env | xargs) && ./gradlew clean build
java -jar build/libs/{ν”„λ‘œμ νŠΈλͺ…}-0.0.1-SNAPSHOT.jar
```