https://github.com/keepconcentration/treat-well-planner-backend
π Treat Well Planner: A Spring Boot-based application to manage schedules, recurring tasks, and indefinite plans efficiently with customizable recurrence rules.
https://github.com/keepconcentration/treat-well-planner-backend
gradle h2-database java open-source planning-tool recurring-tasks rest-api schedule-management spring-boot swagger
Last synced: about 2 months ago
JSON representation
π Treat Well Planner: A Spring Boot-based application to manage schedules, recurring tasks, and indefinite plans efficiently with customizable recurrence rules.
- Host: GitHub
- URL: https://github.com/keepconcentration/treat-well-planner-backend
- Owner: keepConcentration
- License: mit
- Created: 2025-01-20T15:26:32.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-02-04T16:54:40.000Z (4 months ago)
- Last Synced: 2025-02-08T12:16:41.809Z (3 months ago)
- Topics: gradle, h2-database, java, open-source, planning-tool, recurring-tasks, rest-api, schedule-management, spring-boot, swagger
- Language: Java
- Homepage:
- Size: 136 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π Treat Well Planner
## π νλ‘μ νΈ μκ°
**Treat Well Planner**λ μ¬μ©μκ° μΌμ λ° κ³νμ μμ±νκ³ , λ°λ³΅ κ·μΉμ ν΅ν΄ μ£ΌκΈ°μ μΈ μ΄λ²€νΈλ₯Ό κ΄λ¦¬ν μ μλ Spring Boot κΈ°λ° μ΄ν리μΌμ΄μ μ λλ€.
μ¬μ©μλ μμμΌ(`startDate`)κ³Ό μ’ λ£μΌ(`endDate`)μ μ€μ νμ¬ μΌμ μ κ΄λ¦¬ν μ μμΌλ©°, 무기ν μΌμ κ³Ό νΉμ λ°λ³΅ κ·μΉ(RecurrenceRule)μ νμ©ν λ€μν κ³νμ μ§μν©λλ€.---
## π§ νλ‘μ νΈ μν
νμ¬ **Treat Well Plannerλ κ°λ° μ§ν μ€μΈ νλ‘μ νΈ**λ‘, μ μ μλΉμ€λ μμ§ μ€νλμ§ μμμ΅λλ€.
1μ°¨ λͺ©νλ μ£Όμ κΈ°λ₯ MVP(Minimum Viable Product) κ°λ°μ μλ£νκ³ ν μ€νΈ νκ²½μμμ μμ μ±μ κ²μ¦νλ κ²μ λλ€. μ μ λ°°ν¬ λ° μ€ν μΌμ μ μΆν 곡μ§λ μμ μ λλ€.---
## β¨ μ£Όμ κΈ°λ₯
- ποΈ **μΌμ κ΄λ¦¬**: μΌμ μμ±, μμ , μμ
- π **λ°λ³΅ κ·μΉ κ΄λ¦¬**:
- μ£ΌκΈ°μ μΈ μΌμ (μ: λ§€μ£Ό, λ§€μ)
- νΉμ μμΌ, μλ³ λ μ§, μ°κ° λ°λ³΅ κ·μΉ μ€μ
- π **무기ν μΌμ ** μ§μ: μ’ λ£μΌ(`endDate`) μμ΄ μ§μλλ μΌμ μμ±
- π **μΌμ κ²μ λ° μ‘°ν**:
- νΉμ λ μ§κ° ν¬ν¨λ μΌμ κ²μ
- 무기ν μΌμ λ° λ°λ³΅ μΌμ κ³μ°---
## π οΈ κΈ°μ μ€ν
### **π¦ λ°±μλ**
- π₯οΈ **Java 17**: μμ μ±κ³Ό μ±λ₯μ λμ΄κΈ° μν μ΅μ LTS λ²μ μ¬μ©
- πΏ **Spring Boot**: κ°λ ₯ν REST API λ° μ ν리μΌμ΄μ κ°λ° νλ μμν¬
- π **Swagger**: API λ¬Έμν λ° ν μ€νΈλ₯Ό μν UI μ 곡
- πΏ **Spring Data JPA**: λ°μ΄ν°λ² μ΄μ€μμ κ°λ¨νκ³ ν¨μ¨μ μΈ μνΈμμ©
- βοΈ **Gradle**: λΉλ λ° μμ‘΄μ± κ΄λ¦¬λ₯Ό μν λꡬ
- π **Lombok**: μ½λ κ°μν (Getter, Setter, Builder λ± μλ μμ±)
- ποΈ **H2 Database**: ν μ€νΈ νκ²½μ© μΈλ©λͺ¨λ¦¬ λ°μ΄ν°λ² μ΄μ€
- (μ€μ μ΄μμμλ λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€λ‘ λ³κ²½ κ°λ₯)---
## π μ€μΉ λ° μ€ν
### **1. μμ€ν μꡬμ¬ν**
- **β Java 17 μ΄μ**
- **π Gradle 7.x μ΄μ**### **2. νλ‘μ νΈ ν΄λ‘ **
```bash
git clone https://github.com/keepConcentration/treat-well-planner.git
cd treat-well-planner
```### **3. μ ν리μΌμ΄μ λΉλ**
Gradleμ μ¬μ©ν΄ νλ‘μ νΈλ₯Ό λΉλν©λλ€:```bash
# μμ‘΄μ± μ€μΉ λ° λΉλ
./gradlew build
```### **4. μ ν리μΌμ΄μ μ€ν**
Gradleλ‘ μ ν리μΌμ΄μ μ€ν:
```bash
./gradlew bootRun
```- κΈ°λ³Έμ μΌλ‘ `http://localhost:8080`μμ μλ²κ° μ€νλ©λλ€.
- Swagger API λ¬Έμλ₯Ό νμΈνλ €λ©΄ λ€μ λ§ν¬λ₯Ό λ°©λ¬ΈνμΈμ:
π **[http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html)**---
## π― Swagger μ€μ
μ΄ νλ‘μ νΈλ Swaggerλ₯Ό μ¬μ©νμ¬ μΌκ΄λ API λ¬Έμλ₯Ό μ 곡ν©λλ€. Swaggerλ API λ¬Έμλ₯Ό μλμΌλ‘ μμ±νλ©°, μ¬μ©μ μΉνμ μΈ UIλ₯Ό ν΅ν΄ ν μ€νΈν μ μμ΅λλ€.### Swagger κ΄λ ¨ μμ‘΄μ± (Gradle)
`build.gradle` νμΌμ μλ μμ‘΄μ±μ μΆκ°ν©λλ€.
```gradle
dependencies {
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
}
```API λ¬Έμνλ κΈ°λ³Έμ μΌλ‘ `/swagger-ui.html` κ²½λ‘μμ μ‘μΈμ€ν μ μμ΅λλ€. μ€μ κ°μ `application.yml`μμ μμ ν μ μμ΅λλ€.
---
## π§© λλ©μΈ μ€κ³
### **1. Plan (μΌμ )**
μ£Όμ μν°ν°μ΄λ©°, μΌμ μ κΈ°λ³Έ μ 보λ₯Ό κ΄λ¦¬ν©λλ€.| π νλ | μ€λͺ |
|--------------------|-----------------------------|
| `id` | UUID κΈ°λ° κ³ μ μλ³μ |
| `title` | μΌμ μ λͺ© |
| `description` | μΌμ μ€λͺ |
| `startDate` | μμ λ μ§ |
| `endDate` | μ’ λ£ λ μ§ (nullable) |
| `recurrenceRule` | μΌμ μ λ°λ³΅ κ·μΉ (Optional) |### **2. RecurrenceRule (λ°λ³΅ κ·μΉ)**
μΌμ μ λ°λ³΅ λ Όλ¦¬λ₯Ό μ μν©λλ€.| π νλ | μ€λͺ |
|--------------------|-----------------------------|
| `id` | UUID κΈ°λ° κ³ μ μλ³μ |
| `startDate` | λ°λ³΅ μμ λ μ§ |
| `endDate` | λ°λ³΅ μ’ λ£ λ μ§ (nullable) |
| `interval` | λ°λ³΅ κ°κ²© (days, weeks λ±) |
| `daysOfWeek` | νΉμ μμΌ μ§μ (Optional) |
| `daysOfMonth` | νΉμ λ μ§ μ§μ (Optional) |---
## π API μ¬μ© λ°©λ²
`Treat Well Planner` μ ν리μΌμ΄μ μ μ£Όμ APIλ₯Ό λμ΄ν©λλ€.### **1. μΌμ μμ±**
**POST** `/plans`
```json
{
"title": "Workout Plan",
"description": "Daily running schedule",
"startDate": "2023-11-01",
"endDate": null, // 무기νμΌ κ²½μ° null
"recurrenceRule": {
"startDate": "2023-11-01",
"interval": 1
}
}
```### **2. μΌμ μ‘°ν**
**GET** `/plans?date=2023-11-01`### **3. λ°λ³΅ κ·μΉ μΆκ°**
**POST** `/plans/{planId}/recurrence-rule`
```json
{
"startDate": "2023-11-01",
"endDate": "2023-12-31",
"interval": 7
}
```λ λ§μ API μ 보λ π **[Swagger UI](http://localhost:8080/swagger-ui.html)** μμ νμΈνμ€ μ μμ΅λλ€.
---
## π§ͺ ν μ€νΈ
### **1. λ¨μ ν μ€νΈ**
`test` λλ ν 리 λ΄μμ λ¨μ ν μ€νΈλ₯Ό μ€νν©λλ€:
```bash
./gradlew test
```---
## π μ£Όμ νμΌ κ΅¬μ‘°
```plaintext
src/
βββ main/
β βββ java/com/treat/well/planner/
β β βββ global/ (κΈλ‘λ² μ΄λ²€νΈ μ μ)
β β βββ plan/
β β β βββ domain/ # Plan, RecurrenceRule μν°ν°
β β β βββ service/ # λΉμ¦λμ€ λ‘μ§
β β β βββ repository/ # Spring Data JPA Repository
β βββ resources/
β βββ application.yml # Spring Boot μ€μ
β βββ data.sql # μν λ°μ΄ν°
βββ test/
βββ java/com/treat/well/planner/
βββ plan/ # Plan κ΄λ ¨ λ¨μ ν μ€νΈ
```---
## π οΈ ν₯ν κ³ν
- ποΈ **μΆκ° API μ 곡**:
- νΉμ μ£Ό λ¨μ λ°λ³΅, μ°κ° λ°λ³΅ μΌμ μ§μ
- π **μ¬μ©μ μΈμ¦ λ° κΆν κ΄λ¦¬** ꡬν
- π **κ΅μ ν(i18n) λ° λ€κ΅μ΄ μ§μ**
- π¨ **νλ‘ νΈμλ ν΅ν© κ°λ°** (React λ° Vue.js κ³ λ €)---
## π€ κΈ°μ¬ λ°©λ²
`Treat Well Planner`λ μ€ν μμ€ νλ‘μ νΈλ‘ νμ μ νμν©λλ€!1. 리ν¬μ§ν 리λ₯Ό ν¬ν¬ν©λλ€.
2. μλ‘μ΄ λΈλμΉλ₯Ό μμ±ν©λλ€: `git checkout -b feature/my-feature`
3. μ½λλ₯Ό 컀λ°ν©λλ€: `git commit -m 'Add new feature'`
4. λΈλμΉλ₯Ό νΈμν©λλ€: `git push origin feature/my-feature`
5. π οΈ ν 리νμ€νΈλ₯Ό μ μΆν©λλ€.---
## π λΌμ΄μ μ€
μ΄ νλ‘μ νΈλ [MIT λΌμ΄μ μ€](LICENSE)λ₯Ό λ°λ¦ λλ€.---