@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
@SolSolHigh

SolSolHigh

FE

팀원 역할


이름역할
조성우Mocking, API 설계 및 관리, 요구사항 구현
양규현프로젝트 관리, Storybook 관리, 요구사항 구현
최요하인프라, 깃허브 관리, 요구사항 구현

개발 환경


항목버전
Node20.16.0
Npm10.8.1
React18
TypeScript5.5.4
Visual Studio Code1.92

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
디자인Figma
IDEVisual Studio Code

Tech Stack


Develop

reacttypescriptstorybooktailwindcsstanstack-queryrecoil

CI/CD

githubactionsdockernginxec2


Wiki


Project Convention
GitHub Convention



빌드 및 실행 방법


#!/bin/bash
cd~/solsol-high/staticgitfetchorigingitcheckout$1gitpullorigin$1cd~/solsol-high/static/ssh-webnpminstallnpmrunbuild
  • 위의 스크립트를 실행시키는 쉘 스크립트 파일을 웹 프로젝트를 배포하고자 하는 서버에 심어놓는다.
name: SolSolHigh-FEDeploy
on:
push:
branches: develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# stage : ssh-name: SSH
uses: appleboy/ssh-action@v1.0.3with:
host: ${{secrets.SSH_KRO_HOST}}
username: ${{secrets.SSH_KRO_USERNAME}}
password: ${{secrets.SSH_PASSWORD}}script: |cd~/solsol-high./static.shdevelop
  • develop 브랜치에 push 이벤트가 발생하면 서버로 통합 후 배포
  • 웹 프로젝트를 배포하고자 하는 서버에 SSH 로 접속한다.
  • 위에서 작성한 쉘 스크립트를 실행시킨다.




BE

팀원 역할


이유승김현진
인프라, 요구사항 구현, 테스팅AI, API 문서 관리, 요구사항 구현, 테스팅

개발 환경


항목버전
Java corretto17.0.4.1
Spring Boot3.3.2
Intellij Ultimate2024.2
MySQL8.3.0
Docker24.0.2
nginx1.26
redis5.0.7
firebase cloud messaging9.3.0

개발 도구


항목도구
형상 관리GitHub
협업 & 문서 관리Notion
IDEIntellij

Tech Stack


Develop



Infra

환경 변수


./docker-compose.yml

services:
solsol-app:
container_name: solsol-appbuild: .ports:
- "8080:8080"depends_on:
- solsol-mysql
- solsol-redisenvironment:
SPRING_DATASOURCE_URL: jdbc:mysql://solsol-mysql:3306/solsolhighSPRING_DATASOURCE_USERNAME: "root"SPRING_DATASOURCE_PASSWORD: # DB 비밀번호 작성TZ: "Asia/Seoul"restart: alwaysnetworks:
- internal_networksolsol-mysql:
container_name: solsol-mysqlimage: mysqlports:
- "3307:3306"environment:
MYSQL_DATABASE: solsolhighMYSQL_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: 10stimeout: 2sretries: 100volumes:
- ~/solsol-high/database/mysql:/var/lib/mysqlnetworks:
- internal_networksolsol-redis:
image: rediscontainer_name: solsol-redisports:
- "6380:6379"networks:
- internal_networknetworks:
internal_network:

src/main/resources/application.yml

server:
servlet:
encoding:
charset: UTF-8spring:
profiles:
include: dev, oauth, secretjpa:
show-sql: trueopen-in-view: falsehibernate:
ddl-auto: noneproperties:
hibernate:
highlight_sql: trueformat_sql: truedefault_batch_fetch_size: 100sql:
init:
mode: alwaysservlet:
multipart:
max-file-size: 50MBmax-request-size: 50MB

src/main/resources/application-dev.yml

solsol:
front:
base: # 프론트 서버 주소masterbank:
api-key: # 싸피 금융망 api keybase: # 싸피 금융망 api urlinstitution-code: #기관 코드fintech-app-no: # 핀테크 앱 일렬번호

src/main/resources/application-oauth.yml

spring:
security:
oauth2:
client:
registration:
naver:
client-name: naverclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/naverauthorization-grant-type: authorization_codescope: name, emailkakao:
client-name: kakaoclient-id: client-secret: redirect-uri: http://localhost:8080/login/oauth2/code/kakaoauthorization-grant-type: authorization_codeclient-authentication-method: client_secret_postscope: account_email, nameprovider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorizetoken-uri: https://nid.naver.com/oauth2.0/tokenuser-info-uri: https://openapi.naver.com/v1/nid/meuser-name-attribute: responsekakao:
authorization-uri: https://kauth.kakao.com/oauth/authorizetoken-uri: https://kauth.kakao.com/oauth/tokenuser-info-uri: https://kapi.kakao.com/v2/user/meuser-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 실행.

ERD

스크린샷 2024-08-31 오후 4 21 19

Popular repositories Loading

  1. SolSolHigh-FE SolSolHigh-FEPublic

    TypeScript

  2. SolSolHigh-BE SolSolHigh-BEPublic

    아이들과 생성형 AI가 함께하는 성장형 금융 습관 지도 서비스 | 🏆 신한 해커톤 우수상

    Java

  3. .github .githubPublic

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…