| ์ด๋ฆ | ์ญํ |
|---|---|
| ์กฐ์ฑ์ฐ | Mocking, API ์ค๊ณ ๋ฐ ๊ด๋ฆฌ, ์๊ตฌ์ฌํญ ๊ตฌํ |
| ์๊ทํ | ํ๋ก์ ํธ ๊ด๋ฆฌ, Storybook ๊ด๋ฆฌ, ์๊ตฌ์ฌํญ ๊ตฌํ |
| ์ต์ํ | ์ธํ๋ผ, ๊นํ๋ธ ๊ด๋ฆฌ, ์๊ตฌ์ฌํญ ๊ตฌํ |
| ํญ๋ชฉ | ๋ฒ์ |
|---|---|
| Node | 20.16.0 |
| Npm | 10.8.1 |
| React | 18 |
| TypeScript | 5.5.4 |
| Visual Studio Code | 1.92 |
| ํญ๋ชฉ | ๋๊ตฌ |
|---|---|
| ํ์ ๊ด๋ฆฌ | GitHub |
| ํ์ & ๋ฌธ์ ๊ด๋ฆฌ | Notion |
| ๋์์ธ | Figma |
| IDE | Visual Studio Code |
Develop
โ
โ
โ
โ
โ
โ
CI/CD
โ
โ
โ
Project Convention
GitHub Convention
#!/bin/bash
cd ~/solsol-high/static
git fetch origin
git checkout $1
git pull origin $1
cd ~/solsol-high/static/ssh-web
npm install
npm run build- ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํค๋ ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์น ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๊ณ ์ ํ๋ ์๋ฒ์ ์ฌ์ด๋๋๋ค.
name: SolSolHigh-FE Deploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh
- name: SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_KRO_HOST }}
username: ${{ secrets.SSH_KRO_USERNAME }}
password: ${{ secrets.SSH_PASSWORD }}
script: |
cd ~/solsol-high
./static.sh develop- develop ๋ธ๋์น์ push ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์๋ฒ๋ก ํตํฉ ํ ๋ฐฐํฌ
- ์น ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๊ณ ์ ํ๋ ์๋ฒ์ SSH ๋ก ์ ์ํ๋ค.
- ์์์ ์์ฑํ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํจ๋ค.
| ์ด์ ์น | ๊นํ์ง |
|---|---|
| ์ธํ๋ผ, ์๊ตฌ์ฌํญ ๊ตฌํ, ํ ์คํ | AI, API ๋ฌธ์ ๊ด๋ฆฌ, ์๊ตฌ์ฌํญ ๊ตฌํ, ํ ์คํ |
| ํญ๋ชฉ | ๋ฒ์ |
|---|---|
| Java corretto | 17.0.4.1 |
| Spring Boot | 3.3.2 |
| Intellij Ultimate | 2024.2 |
| MySQL | 8.3.0 |
| Docker | 24.0.2 |
| nginx | 1.26 |
| redis | 5.0.7 |
| firebase cloud messaging | 9.3.0 |
| ํญ๋ชฉ | ๋๊ตฌ |
|---|---|
| ํ์ ๊ด๋ฆฌ | GitHub |
| ํ์ & ๋ฌธ์ ๊ด๋ฆฌ | Notion |
| IDE | Intellij |
Develop
โ
โ
โ
โ
โ
โ
โ
โ
โ
./docker-compose.yml
services:
solsol-app:
container_name: solsol-app
build: .
ports:
- "8080:8080"
depends_on:
- solsol-mysql
- solsol-redis
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhigh
SPRING_DATASOURCE_USERNAME: "root"
SPRING_DATASOURCE_PASSWORD: # DB ๋น๋ฐ๋ฒํธ ์์ฑ
TZ: "Asia/Seoul"
restart: always
networks:
- internal_network
solsol-mysql:
container_name: solsol-mysql
image: mysql
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: solsolhigh
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: # DB ๋น๋ฐ๋ฒํธ ์์ฑ
TZ: "Asia/Seoul"
healthcheck:
test: [ 'CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 -u root --password=$MYSQL_ROOT_PASSWORD' ]
interval: 10s
timeout: 2s
retries: 100
volumes:
- ~/solsol-high/database/mysql:/var/lib/mysql
networks:
- internal_network
solsol-redis:
image: redis
container_name: solsol-redis
ports:
- "6380:6379"
networks:
- internal_network
networks:
internal_network:src/main/resources/application.yml
server:
servlet:
encoding:
charset: UTF-8
spring:
profiles:
include: dev, oauth, secret
jpa:
show-sql: true
open-in-view: false
hibernate:
ddl-auto: none
properties:
hibernate:
highlight_sql: true
format_sql: true
default_batch_fetch_size: 100
sql:
init:
mode: always
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MBsrc/main/resources/application-dev.yml
solsol:
front:
base: # ํ๋ก ํธ ์๋ฒ ์ฃผ์
masterbank:
api-key: # ์ธํผ ๊ธ์ต๋ง api key
base: # ์ธํผ ๊ธ์ต๋ง api url
institution-code: #๊ธฐ๊ด ์ฝ๋
fintech-app-no: # ํํ
ํฌ ์ฑ ์ผ๋ ฌ๋ฒํธ
src/main/resources/application-oauth.yml
spring:
security:
oauth2:
client:
registration:
naver:
client-name: naver
client-id:
client-secret:
redirect-uri: http://localhost:8080/login/oauth2/code/naver
authorization-grant-type: authorization_code
scope: name, email
kakao:
client-name: kakao
client-id:
client-secret:
redirect-uri: http://localhost:8080/login/oauth2/code/kakao
authorization-grant-type: authorization_code
client-authentication-method: client_secret_post
scope: account_email, name
provider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorize
token-uri: https://nid.naver.com/oauth2.0/token
user-info-uri: https://openapi.naver.com/v1/nid/me
user-name-attribute: response
kakao:
authorization-uri: https://kauth.kakao.com/oauth/authorize
token-uri: https://kauth.kakao.com/oauth/token
user-info-uri: https://kapi.kakao.com/v2/user/me
user-name-attribute: id
application-secret.yml
spring:
ai:
openai:
api-key: # openai ์์ ๋ฐ๊ธ๋ฐ์ ํค
cloud:
aws:
credentials:
access-key: # IAM ๋ฐ๊ธ๋ฐ์ ์์ธ์ค ํค
secret-key: # IAM ๋ฐ๊ธ๋ฐ์ ๋น๋ฐ ํค
s3:
bucket: # s3 ๋ฒํท์ด๋ฆ
region:
static: # s3 ์ง์ญ
stack:
auto: false
yaml ํ์ผ ๋ชจ๋ ํ์ํ ๊ฐ๋ค ์ฑ์ด ํ ํ์ํ ์์น๋ก ์ ์ก.
docker ์ค์น ํ docker-compose.yml๊ฐ ์กด์ฌํ๋ ๊ฒฝ๋ก๋ก ์ด๋.
docker-compose up -d ์คํ.