๐ ํ๋ก์ ํธ๋ช : Purugging๐๐ฟ
๐ ํ๋ก์ ํธ ์ปจ์ : IoT๋ฅผ ํ์ฉํ ํ๋ก๊น ์๋น์ค
๐ ๊ฐ๋ฐ ๊ธฐ๊ฐ : 23.10.09 ~ 23.11.17 (6์ฃผ)
๐ง๐ป ํ์ : ์ธ์ ํ, ๊นํ์ฃผ, ์์ธ์ด, ์กฐ์ค์, ์ฑํ์ข , ํ์ ํธ
๐ป ์ฌ์ฉ ๊ธฐ์ ์คํ : Flutter, SpringBoot, AWS + (4. ์์คํ ์ํคํ ์ฒ ์ฐธ๊ณ )
์ธ์ ํ ํ์ฅ, Embedded |
๊นํ์ฃผ FE |
์์ธ์ด Embedded |
์กฐ์ค์ BE |
์ฑํ์ข BE |
ํ์ ํธ BE |
์ด๋ฆ | ์ญํ | ์ค๋ช |
---|---|---|
์ธ์ ํ (ํ์ฅ) | Embedded | H/W ํ๋ ์ ์ ์ H/W ์์คํ ์ค๊ณ ์คํ ๋ชจํฐ ๋๋ผ์ด๋ฒ ๊ตฌํ ์ฌํ์ฉ ์ฐ๋ ๊ธฐ ๋ถ๋ฅ ๊ธฐ๋ฅ ๊ตฌํ(์ด์ํ ์ผ์, ์กฐ๋ ์ผ์, LED) Main Logic ์ค๊ณ MQTT Protocol์ ํ์ฉํ ์๋ฒ ํต์ |
๊นํ์ฃผ | Frontend(App) | Flutter๋ฅผ ํ์ฉํ ๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด์
์ ์ Google Map ์ด๋ ๊ฒฝ๋ก ํธ๋ํน QR Code์ MQTT๋ฅผ ํตํ Server์ IoT ๊ฐ ํต์ ๊ตฌํ Figma๋ฅผ ํ์ฉํ ์์ด์ดํ๋ ์, ๋ชฉ์ ์ ์ |
์์ธ์ด | Embedded | H/W ์ค๊ณ (3D Modeling, Laser Cutting ๋๋ฉด ์ค๊ณ) ESP32 ํต์ ์์คํ ๊ตฌํ RPI ์ฌ์ฉ์ ์ธ์ฆ ์์คํ ๊ตฌํ(QR ์ธ์, MQTT ํต์ ) |
์กฐ์ค์ | Backend | Notification Domain ๋ด๋น Jenkins๋ฅผ ํ์ฉํ CI/CD ๊ตฌ์ถ Docker ๋ฐ EC2๋ฅผ ํ์ฉํ ์๋ฒ ๋ฐฐํฌ Nginx๋ฅผ ํ์ฉํ Reverse Proxy ์ค์ Grapana & Prometheus๋ฅผ ํ์ฉํ ๋ชจ๋ํฐ๋ง ๊ตฌ์ถ ERD ์ค๊ณ |
์ฑํ์ข | Backend | ํ๋ก์ ํธ ์ฃผ์ ๊ธฐํ Member Domain ๋ด๋น ์ด๊ธฐ ์ธํ๋ผ ๊ตฌ์ถ MongoDB๋ฅผ ํ์ฉํ ๊ฒฝ๋ก ๊ธฐ๋ฅ ๊ตฌํ OAuth๋ฅผ ํ์ฉํ ์์ ๋ก๊ทธ์ธ ๊ตฌํ (Flutter & SpringBoot) ERD ์ค๊ณ ๋ฐํ |
ํ์ ํธ | Backend | Skeleton code ์์ฑ(Example domain ๋ฐ common) Plogging Domain ๋ด๋น Machine Domain ๋ด๋น Campaing Domain ๋ด๋น IoT-Server-App MQTT ํต์ ๊ตฌํ (Broker: Mosquitto) ERD ์ค๊ณ |
๊ธฐ๋ฅ | ์ฃผ๊ธฐ๋ฅ | ์์ธ ๊ธฐ๋ฅ |
---|---|---|
1. ํ์ | 1.1 ์์ ๋ก๊ทธ์ธ | 1.1.1 Google OAuth ๋ก๊ทธ์ธ |
1.2 ํ์ ์ ๋ณด ์์ | 1.2.1 ๋๋ค์ ๋ณ๊ฒฝ | |
1.3 ํ์ ํํด | 1.3.1 ํ์ ํํด ๊ธฐ๋ฅ | |
1.4 ๋ก๊ทธ์์ | 1.4.1 ๋ก๊ทธ์์ ๊ธฐ๋ฅ | |
1.5 ๋ง์ดํ์ด์ง | ||
2. ํ๋ก๊น | 2.1 ํ๋ก๊น ์คํ | 2.1.1 QR ์์ฑ ๋ฐ ํ์ |
2.1.2 ์ง๋ ํ์ | ||
2.1.3 ์๋ฃ ์ฌ์ง ๋ฑ๋ก | ||
2.1.4 ์ฃผ๋ณ ์ธ์ ์๋ฆผ | ||
2.2 ๋ก๊ทธ (ํ์คํ ๋ฆฌ) | 2.2.1 ํ๋ก๊น ๋ก๊ทธ ๋ฆฌ์คํธ | |
2.2.2 ์๊ฐ ์กฐํ | ||
2.2.3 ๊ฑฐ๋ฆฌ ์กฐํ | ||
2.2.4 ์ฐ๋ ๊ธฐํต ์ ๋ณด ์กฐํ | ||
2.2.5 ์ฌ์ง ๋ฐ ๋ง๋ฌด๋ฆฌ ๊ฒฐ๊ณผ ์กฐํ | ||
2.2.6 ํ๋ก๊น ๊ธฐ๋ก | ||
3. ์ปค๋ฎค๋ํฐ | 3.1 ์ฌ์ฉ์ ๊ฐ์ต ๋ชจ์ | |
3.2 ์บ ํ์ธ | 3.2.1 ์บ ํ์ธ ์กฐํ, ์ถ๊ฐ, ์์ , ์ญ์ | |
4. ์ฐ๋ ๊ธฐํต | 4.1 ์ฐ๋ ๊ธฐํต ์ํ ํ์ธ | 4.1.1 ์ฐ๋ ๊ธฐํต๋ณ ์ผ๋ฐ ์ฐ๋ ๊ธฐ ํ์ธ |
4.1.2 ์ฐ๋ ๊ธฐํต๋ณ ์ฌํ์ฉ ์ฐ๋ ๊ธฐ ํ์ธ | ||
4.2 ๋น๋๋ดํฌ ์ํ ํ์ธ | 4.2.1 ์ฐ๋ ๊ธฐํต๋ณ ๋น๋๋ดํฌ ์ ํ์ธ | |
5. ์๋ฆผ | 5.1 ์บ ํ์ธ ์๋ฆผ | |
5.2 ํ๋ก๊น ์ข ๋ฃ ์๋ฆผ |
์์ธ | ๋ด์ฉ |
---|---|
GitLab | ํ์ ๊ด๋ฆฌ |
Jira | ์ผ์ ๋ฐ ์ด์ ๊ด๋ฆฌ |
Mattermost | ์ปค๋ฎค๋์ผ์ด์ |
Notion | ์ผ์ ๋ฐ ๋ฌธ์ ๊ด๋ฆฌ |
Postman | API ๋ฌธ์ ๊ด๋ฆฌ |
IntelliJ | IDE |
Visual Studio Code | IDE |
Android Studio | IDE |
์์ธ | ๋ฒ์ |
---|---|
Flutter | 3.13.8 |
Dart | 3.1.4 |
google_maps_flutter | 2.5.0 |
geolocator | 10.1.0 |
mqtt_client | 10.0.0 |
Android SDK | 20 ์ด์ |
์์ธ | ๋ฒ์ |
---|---|
JDK (Zulu) | 11.0.19 |
SpringBoot | 2.7.16 |
Spring Data JPA | 2.7.16 |
Spring Integration | 2.7.16 |
Spring Integration MQTT | 5.5.19 |
Eclipse paho client mqtt v3 | 1.2.5 |
MariaDB | 8.0.35 |
MongoDB | 2.0.1 |
Ubuntu | 20.04 |
Nginx | 1.18.0 |
Docker | 24.0.7 |
Docker-compose | 2.23.0 |
Jenkins | 2.414.3 |
์์ธ | ๋ฒ์ |
---|---|
ESP32 | |
Arduino IDE | 2.2.1 |
ESPMqttClient | 1.13.3 |
ArduinoJson | 6.21.3 |
HX711 | 0.3.9 |
Ticker | 4.4.0 |
Raspberry Pi | |
Paho-mqtt-c | 3.3.1 |
๐ android
ใด๐ app
ใด๐ src
ใด๐ build.gradle
ใด๐ google-services.json
ใด๐ gradle/wrapper
ใด๐ build.gradle
ใด๐ gradle.properties
ใด๐ settings.gradle
๐ assets
ใด๐ font
ใด๐ image
ใด๐ logo
๐ ios
๐ lib
ใด๐ models
ใด๐ campaign_model.dart
ใด๐ machine_model.dart
ใด๐ plogging_model.dart
ใด๐ user_model.dart
ใด๐ screens
ใด๐ campaign
ใด๐ plogging
ใด๐ profile
ใด๐ start
ใด๐ home_screen.dart
ใด๐ main_screen.dart
ใด๐ services
ใด๐ auth_service.dart
ใด๐ campaign_services.dart
ใด๐ google_map_services.dart
ใด๐ machine_services.dart
ใด๐ member_services.dart
ใด๐ permission_services.dart
ใด๐ plogging_services.dart
ใด๐ qr_services.dart
ใด๐ time_services.dart
ใด๐ widgets
ใด๐ bottom
ใด๐ campaign
ใด๐ home
ใด๐ plogging
ใด๐ profile
ใด๐ shared
ใด๐ start
ใด๐ firebase_options.dart
ใด๐ main.dart
๐ linux
๐ macos
๐ test
๐ web
๐ windows
๐ .gitignore
๐ .metadata
๐ analysis_options.yaml
๐ pubspec.lock
๐ pubspec.yaml
๐ src/main/java
ใด๐ฆ com.puru.purugging
ใด๐ PuruggingApplication.java
ใด๐ฆ campaign
ใด๐ฆ common
ใด๐ฆ connectionCheck
ใด๐ ConnectionCheckController.java
ใด๐ฆ exception
ใด๐ CommonErrorCode.java
ใด๐ CustomException.java
ใด๐ ErrorCode.java
ใด๐ GlobalExceptionHandler.java
ใด๐ฆ model
ใด๐ BaseTimeEntity.java
ใด๐ฆ mqtt
ใด๐ฆ config
ใด๐ MessageGateway.java
ใด๐ MqttIntegrationConfig.java
ใด๐ฆ service
ใด๐ MqttMessageHandler.java
ใด๐ MqttPublisher.java
ใด๐ฆ pagination
ใด๐ MultiResponseDto.java
ใด๐ PageInfo.java
ใด๐ฆ response
ใด๐ FailResponseDto.java
ใด๐ ResponseFactory.java
ใด๐ SuccessResponseDto.java
ใด๐ฆ global
ใด๐ฆ config
ใด๐ FirebaseConfig.java
ใด๐ S3Config.java
ใด๐ฆ exception
ใด๐ S3ErrorCode.java
ใด๐ S3Exception.java
ใด๐ฆ memberInfo
ใด๐ MemberInfo.java
ใด๐ MemberInfoArgumentResolver.java
ใด๐ฆ storage
ใด๐ S3Uploader.java
ใด๐ฆ util
ใด๐ ImageUtil.java
ใด๐ฆ vo
ใด๐ Image.java
ใด๐ ImageType.java
ใด๐ Location.java
ใด๐ฆ machine
ใด๐ฆ member
ใด๐ฆ notification
ใด๐ฆ plogging
๐ src/main/resources
ใด๐ application.yml
ใด๐ application-mq.yml
ใด๐ application-s3.yml
ใด๐ prometheus.yml
ใด๐ firebase-service-account.json
๐ .gitignore
๐ณ docker-compose.yml
๐ณ Dockerfile
๐ build.gradle
๐ gradlew
๐ gradlew.bat
๐ settings.gradle
๐ RPI3/api
ใด๐ include
ใด๐ QR.h
ใด๐ UserAuthentication.h
ใด๐ src
ใด๐ QR.cpp
ใด๐ main.cpp
๐ arduino_mega2560
ใด๐ api
ใด๐ main.ino
๐ docs/convention
๐ images
๐ models
ใด๐ 3d
ใด๐ laser
๐ test
## Feat : ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ
## Fix : ๋ฒ๊ทธ ์์
## Style : CSS ๋ฑ ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ
## Refactor : ์ฝ๋ ๋ฆฌํฉํ ๋ง
## Test : ํ
์คํธ(ํ
์คํธ ์ฝ๋ ์ถ๊ฐ/์์ /์ญ์ )
## Docs : ๋ฌธ์(๋ฌธ์ ์ถ๊ฐ/์์ /์ญ์ )
## Chore : ๋น๋ ์
๋ฌด ์์ , ํจํค์ง ๋งค๋์ ์์
## Rename : ํ์ผ ํน์ ํด๋๋ช
์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ์์
๋ง ํ๋ ๊ฒฝ์ฐ
## Cicd : ๋ฐฐํฌ
## Env : ํ๊ฒฝ์ค์ ํ์ผ ์ถ๊ฐ/์์ /์ญ์
- git commit -s ๋ก signed-off-by ํ์
- Commit Message ์์
[Docs] Update README.md
<blank>
This commit updates README.md
<blank>
Signed-off-by: ์ธ์ ํ <[email protected]>
- Basic Rule
- ์คํ๋ฆฐํธ๋ ๋ณดํต ํ ์ฃผ ๋จ์๋ก ์งํ๋ฉ๋๋ค. ํ ์ฃผ๊ฐ ์์ํ ๋๋ง๋ค ์คํ๋ฆฐํธ๋ฅผ ์์ํด์ฃผ์ธ์.
- ๋งค์ฃผ ์์์ผ ์ค์ ์ ์คํฌ๋ผ ํ์๋ฅผ ํตํด ์ด๋ฒ ์ฃผ ํ ์ผ์ ๋
ผ์ํ์ฌ ๋ฐฑ๋ก๊ทธ์ ๋ฑ๋กํ๊ณ , ์คํ๋ฆฐํธ์ ์ฌ๋ ค ์คํ๋ฆฐํธ๋ฅผ ์์ํด์ฃผ์ธ์.
- ์ํฝ(ํฐ ํ)์ ํฐ ๋จ์์ ๊ณตํต๋ ๋ถ๋ฅ(ํ์, ๊ธฐํ, ์ค๊ณ, FE๊ฐ๋ฐ, BE๊ฐ๋ฐ, EM๊ฐ๋ฐ, ๋ฐํ ๋ฑ)๋ก ๋ฑ๋กํด์ฃผ์ธ์. ์คํ ๋ฆฌ, ์์
์๋ ์ ๋ต์ด ์์ต๋๋ค. ํ ๋ด์์ ์์ํ์ฌ ๋ฃฐ์ ์ ํ ํ ์ง์ผ์ฃผ์๋ฉด ๋ฉ๋๋ค.
- ๋ชจ๋ ์ด์๋ ์ํฝ๊ณผ ์ฐ๋๋์ด์ผ ํ๋ฉฐ, ์คํ ๋ฆฌํฌ์ธํธ์ ๋ด๋น์๋ ๋ฑ๋ก๋์ด ์์ด์ผ ํฉ๋๋ค.
- ์คํ ๋ฆฌํฌ์ธํธ๋ 1ํฌ์ธํธ๋น 1์๊ฐ์ ์๋ฏธํ๋ฉฐ, ํ ์ฃผ์ ์ํน๋ฐ์ด์ ๋ง๊ฒ ๋ฑ๋กํด์ฃผ์ธ์!
- ํ issue๋น 4ํฌ์ธํธ ๋๊ฒ ๋ถ์ฌํ๋ ๊ฒ์ ์ง์ํด์ฃผ์ธ์. (ํ ์
๋ฌด๋น 4์๊ฐ์ ๋๊ฒ ๋ฐฐ๋นํ๋ค๋ ๊ฒ์ ํจ์จ์ ์ผ๋ก ์ผ์ ํ์ง ๋ชปํ๋ค๋ ์ธ์์ ์ค๋๋ค.)
- issue๋ ์งํ์ํฉ์ ๋ฐ๋ผ ํ ์ผ, ์งํ ์ค, ์๋ฃ๋ก ์ฎ๊ฒจ๊ฐ๋ฉฐ ์งํํ์๋ฉด ๋ฉ๋๋ค.
master
develop
โ FE frontend
โ feature
โ domain๋ช
โ BE backend
โ feature
โ domain๋ช
โ EM embedded
โ feature
โ domain๋ช
-
master : develop ๋ธ๋์น์์ ํ ์คํธ ์๋ฃ ํ master ๋ธ๋์น๋ก ๋ณํฉ (๋ฒ์ )
-
develop : ๊ฐ ํํธ ๋ธ๋์น์์ develop ๋ธ๋์น๋ก ๋ณํฉ ํ ํ ์คํธ