Repository files navigation

돈터치 (Money-Touch)

📌 프로젝트 소개

혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

👥 Web Developers

FrontendFrontendFrontendFrontend
윤상혁양인서이현주최혜원

🛠 기술 스택

구분기술
FrameworkReact 18
LanguageTypeScript
StylingTailwind CSS
Build ToolVite
배포Netlify

선정 이유

  • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
  • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
  • Axios: API 요청 관리 일원화

📂 폴더 구조

src/
├── apis/
├── components/
├── constants/
├── hooks/
├── layouts/
├── mocks/
├── pages/
├── routes/
├── schemas/
├── styles/
├── types/
├── utils/
├── App.tsx
└── main.tsx

🤝 협업 규칙

🌐 Git-flow

  • main: 프로젝트가 최종적으로 배포되는 브랜치
  • develop: 다음 출시 버전을 개발하는 브랜치
  • feature: 기능을 개발하는 브랜치

📌 Git branch 규칙

  1. 개인 작업은 꼭 feature 브랜치에서 하기
  2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
  3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
  4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

📝 Feature branch

  1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
    • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
  2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
  3. PR 후 팀원들에게 공지하기

🎯 Commit Convention

  1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
  2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    , '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

    Repository files navigation

    돈터치 (Money-Touch)

    📌 프로젝트 소개

    혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

    👥 Web Developers

    FrontendFrontendFrontendFrontend
    윤상혁양인서이현주최혜원

    🛠 기술 스택

    구분기술
    FrameworkReact 18
    LanguageTypeScript
    StylingTailwind CSS
    Build ToolVite
    배포Netlify

    선정 이유

    • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
    • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
    • Axios: API 요청 관리 일원화

    📂 폴더 구조

    src/
    ├── apis/
    ├── components/
    ├── constants/
    ├── hooks/
    ├── layouts/
    ├── mocks/
    ├── pages/
    ├── routes/
    ├── schemas/
    ├── styles/
    ├── types/
    ├── utils/
    ├── App.tsx
    └── main.tsx

    🤝 협업 규칙

    🌐 Git-flow

    • main: 프로젝트가 최종적으로 배포되는 브랜치
    • develop: 다음 출시 버전을 개발하는 브랜치
    • feature: 기능을 개발하는 브랜치

    📌 Git branch 규칙

    1. 개인 작업은 꼭 feature 브랜치에서 하기
    2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
    3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
    4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

    📝 Feature branch

    1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
      • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
    2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
    3. PR 후 팀원들에게 공지하기

    🎯 Commit Convention

    1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
    2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    , '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

    Repository files navigation

    돈터치 (Money-Touch)

    📌 프로젝트 소개

    혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

    👥 Web Developers

    FrontendFrontendFrontendFrontend
    윤상혁양인서이현주최혜원

    🛠 기술 스택

    구분기술
    FrameworkReact 18
    LanguageTypeScript
    StylingTailwind CSS
    Build ToolVite
    배포Netlify

    선정 이유

    • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
    • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
    • Axios: API 요청 관리 일원화

    📂 폴더 구조

    src/
    ├── apis/
    ├── components/
    ├── constants/
    ├── hooks/
    ├── layouts/
    ├── mocks/
    ├── pages/
    ├── routes/
    ├── schemas/
    ├── styles/
    ├── types/
    ├── utils/
    ├── App.tsx
    └── main.tsx

    🤝 협업 규칙

    🌐 Git-flow

    • main: 프로젝트가 최종적으로 배포되는 브랜치
    • develop: 다음 출시 버전을 개발하는 브랜치
    • feature: 기능을 개발하는 브랜치

    📌 Git branch 규칙

    1. 개인 작업은 꼭 feature 브랜치에서 하기
    2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
    3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
    4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

    📝 Feature branch

    1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
      • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
    2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
    3. PR 후 팀원들에게 공지하기

    🎯 Commit Convention

    1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
    2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    , '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

    Repository files navigation

    돈터치 (Money-Touch)

    📌 프로젝트 소개

    혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

    👥 Web Developers

    FrontendFrontendFrontendFrontend
    윤상혁양인서이현주최혜원

    🛠 기술 스택

    구분기술
    FrameworkReact 18
    LanguageTypeScript
    StylingTailwind CSS
    Build ToolVite
    배포Netlify

    선정 이유

    • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
    • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
    • Axios: API 요청 관리 일원화

    📂 폴더 구조

    src/
    ├── apis/
    ├── components/
    ├── constants/
    ├── hooks/
    ├── layouts/
    ├── mocks/
    ├── pages/
    ├── routes/
    ├── schemas/
    ├── styles/
    ├── types/
    ├── utils/
    ├── App.tsx
    └── main.tsx

    🤝 협업 규칙

    🌐 Git-flow

    • main: 프로젝트가 최종적으로 배포되는 브랜치
    • develop: 다음 출시 버전을 개발하는 브랜치
    • feature: 기능을 개발하는 브랜치

    📌 Git branch 규칙

    1. 개인 작업은 꼭 feature 브랜치에서 하기
    2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
    3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
    4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

    📝 Feature branch

    1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
      • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
    2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
    3. PR 후 팀원들에게 공지하기

    🎯 Commit Convention

    1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
    2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    , '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

    Repository files navigation

    돈터치 (Money-Touch)

    📌 프로젝트 소개

    혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

    👥 Web Developers

    FrontendFrontendFrontendFrontend
    윤상혁양인서이현주최혜원

    🛠 기술 스택

    구분기술
    FrameworkReact 18
    LanguageTypeScript
    StylingTailwind CSS
    Build ToolVite
    배포Netlify

    선정 이유

    • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
    • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
    • Axios: API 요청 관리 일원화

    📂 폴더 구조

    src/
    ├── apis/
    ├── components/
    ├── constants/
    ├── hooks/
    ├── layouts/
    ├── mocks/
    ├── pages/
    ├── routes/
    ├── schemas/
    ├── styles/
    ├── types/
    ├── utils/
    ├── App.tsx
    └── main.tsx

    🤝 협업 규칙

    🌐 Git-flow

    • main: 프로젝트가 최종적으로 배포되는 브랜치
    • develop: 다음 출시 버전을 개발하는 브랜치
    • feature: 기능을 개발하는 브랜치

    📌 Git branch 규칙

    1. 개인 작업은 꼭 feature 브랜치에서 하기
    2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
    3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
    4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

    📝 Feature branch

    1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
      • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
    2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
    3. PR 후 팀원들에게 공지하기

    🎯 Commit Convention

    1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
    2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    , '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

    Repository files navigation

    돈터치 (Money-Touch)

    📌 프로젝트 소개

    혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

    👥 Web Developers

    FrontendFrontendFrontendFrontend
    윤상혁양인서이현주최혜원

    🛠 기술 스택

    구분기술
    FrameworkReact 18
    LanguageTypeScript
    StylingTailwind CSS
    Build ToolVite
    배포Netlify

    선정 이유

    • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
    • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
    • Axios: API 요청 관리 일원화

    📂 폴더 구조

    src/
    ├── apis/
    ├── components/
    ├── constants/
    ├── hooks/
    ├── layouts/
    ├── mocks/
    ├── pages/
    ├── routes/
    ├── schemas/
    ├── styles/
    ├── types/
    ├── utils/
    ├── App.tsx
    └── main.tsx

    🤝 협업 규칙

    🌐 Git-flow

    • main: 프로젝트가 최종적으로 배포되는 브랜치
    • develop: 다음 출시 버전을 개발하는 브랜치
    • feature: 기능을 개발하는 브랜치

    📌 Git branch 규칙

    1. 개인 작업은 꼭 feature 브랜치에서 하기
    2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
    3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
    4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

    📝 Feature branch

    1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
      • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
    2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
    3. PR 후 팀원들에게 공지하기

    🎯 Commit Convention

    1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
    2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    , '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

    Repository files navigation

    돈터치 (Money-Touch)

    📌 프로젝트 소개

    혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

    👥 Web Developers

    FrontendFrontendFrontendFrontend
    윤상혁양인서이현주최혜원

    🛠 기술 스택

    구분기술
    FrameworkReact 18
    LanguageTypeScript
    StylingTailwind CSS
    Build ToolVite
    배포Netlify

    선정 이유

    • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
    • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
    • Axios: API 요청 관리 일원화

    📂 폴더 구조

    src/
    ├── apis/
    ├── components/
    ├── constants/
    ├── hooks/
    ├── layouts/
    ├── mocks/
    ├── pages/
    ├── routes/
    ├── schemas/
    ├── styles/
    ├── types/
    ├── utils/
    ├── App.tsx
    └── main.tsx

    🤝 협업 규칙

    🌐 Git-flow

    • main: 프로젝트가 최종적으로 배포되는 브랜치
    • develop: 다음 출시 버전을 개발하는 브랜치
    • feature: 기능을 개발하는 브랜치

    📌 Git branch 규칙

    1. 개인 작업은 꼭 feature 브랜치에서 하기
    2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
    3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
    4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

    📝 Feature branch

    1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
      • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
    2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
    3. PR 후 팀원들에게 공지하기

    🎯 Commit Convention

    1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
    2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    , '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

    Repository files navigation

    돈터치 (Money-Touch)

    📌 프로젝트 소개

    혼자가 아닌 ‘함께’ 소비를 관리하는 SNS형 소비 관리 웹앱 서비스

    👥 Web Developers

    FrontendFrontendFrontendFrontend
    윤상혁양인서이현주최혜원

    🛠 기술 스택

    구분기술
    FrameworkReact 18
    LanguageTypeScript
    StylingTailwind CSS
    Build ToolVite
    배포Netlify

    선정 이유

    • React + TS: 컴포넌트 재사용성과 타입 안정성 확보
    • Tailwind CSS: 빠른 UI 구현과 유지보수 용이성
    • Axios: API 요청 관리 일원화

    📂 폴더 구조

    src/
    ├── apis/
    ├── components/
    ├── constants/
    ├── hooks/
    ├── layouts/
    ├── mocks/
    ├── pages/
    ├── routes/
    ├── schemas/
    ├── styles/
    ├── types/
    ├── utils/
    ├── App.tsx
    └── main.tsx

    🤝 협업 규칙

    🌐 Git-flow

    • main: 프로젝트가 최종적으로 배포되는 브랜치
    • develop: 다음 출시 버전을 개발하는 브랜치
    • feature: 기능을 개발하는 브랜치

    📌 Git branch 규칙

    1. 개인 작업은 꼭 feature 브랜치에서 하기
    2. 모든 작업 시작 전 develop에서 pull을 받은 후, feature 브랜치에서 작업 시작
    3. 개인 작업 마치면 feature 브랜치로 pull request를 통해 develop에 merge하기
    4. 프로젝트 완료 후 main으로 merge (앨빈이 한번에 진행 예정)

    📝 Feature branch

    1. 브랜치명은 아래의 형식으로 작성합니다. (feature/이름-기능제목#이슈번호)
      • 팀원 ysh2002m의 브랜치명: feature/ysh2002m-login#1
    2. Feature branch -> develop branch로 merge하기 전 PR에서 reviewers 설정하여 팀원 2명 이상에게 approve 받기
    3. PR 후 팀원들에게 공지하기

    🎯 Commit Convention

    1. 커밋 메시지의 형식은 하단의 사진과 같이 통일해 주세요.(사진에는 Feat이지만, 전부 소문자로 해주세요!)
    2. 깃모지를 사용해 주세요.
  • 🎉 Start: Start New Project [:tada]
  • ✨ Feat: 새로운 기능을 추가 [:sparkles]
  • 🐛 Fix: 버그 수정 [:bug]
  • 🎨 Design: CSS 등 사용자 UI 디자인 변경 [:art]
  • ♻️ Refactor: 코드 리팩토링 [:recycle]
  • 🔧 Settings: Changing configuration files [:wrench]
  • 🗃️ Comment: 필요한 주석 추가 및 변경 [:card_file_box]
  • ➕ Dependency/Plugin: Add a dependency/plugin [:heavy_plus_sign]
  • 📝 Docs: 문서 수정 [:memo]
  • 🔀 Merge: Merge branches [:twisted_rightwards_arrows:]
  • 🚀 Deploy: Deploying stuff [:rocket]
  • 🚚 Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 [:truck]
  • 🔥 Remove: 파일을 삭제하는 작업만 수행한 경우 [:fire]
  • ⏪️ Revert: 전 버전으로 롤백 [:rewind] 스크린샷 2024-12-12 오전 11 11 43
  • 💡 개발 중 겪은 어려움과 해결 과정

    1. CSS 우선순위 문제

    항목내용
    발생 배경프로젝트에서 Tailwind CSS를 사용하던 중, 특정 컴포넌트의 마진 값을 동적으로 변경하려는 상황에서 문제가 발생함.
    className={${S.SignupDiv} mt-[2rem]}처럼 스타일 적용 시, 우선순위 문제로 일부 Tailwind CSS 클래스가 제대로 작동하지 않음.
    발생 원인CSS는 선언된 순서와 우선순위에 따라 스타일이 적용되는데, Tailwind CSS는 utility-first 접근 방식을 사용하기 때문에 기존 스타일과 충돌 시 우선순위에서 밀려 적용되지 않음.
    해결 방법className={${S.SignupDiv} !mt-[2rem]}처럼 !important 접두사(!)를 사용하여 해당 스타일의 우선순위를 높여 문제를 해결함.

    2. Netlify 배포 문제

    항목내용
    발생 배경SPA 프로젝트를 Netlify로 배포하는 과정에서 리다이렉션 설정, 빌드 환경 설정 부족, 자동 배포 오류 등의 문제가 발생함.
    발생 원인1. 리다이렉션 설정(_redirects 파일 누락)
    SPA 프로젝트는 클라이언트 사이드 라우팅을 사용하기 때문에 서버가 직접 경로를 처리할 수 없음.
    모든 요청을 index.html로 리디렉션해야 하는데 해당 설정 파일이 누락됨.

    2. 빌드 환경 설정 부족 (netlify.toml 설정 미비)
    경로 처리 설정이 없어서 특정 라우트 접근 시 404 오류 발생.

    3. 자동 배포 설정 오류
    Git과 Netlify를 연동했으나, CI=true 환경 변수가 누락되어 빌드 오류가 제대로 표시되지 않아 배포가 중단됨.
    해결 방법1. _redirects 파일 추가 (public/_redirects)
    text\n/* /index.html 200\n
    2. netlify.toml 파일 추가 (루트 디렉토리)
    toml\n[[redirects]]\n from = "/*"\n to = "/index.html"\n status = 200\n
    3. 자동 배포 환경 설정
    빌드 명령어를 CI= npm run build로 지정하여 빌드 오류를 명확하게 파악하고 안정적인 배포가 가능하도록 처리함.

    🤖 AI 활용

    • 자동 코드 리뷰: GitHub PR 생성 시, CodeRabbit이 자동으로 코드 변경 사항을 분석하고 개선 제안을 제공.
      • 필수 반영 사항은 아니되, 개발 품질 향상과 코드 일관성 유지를 위한 참고 자료로 활용함.
    • 버그 해결: 에러 로그 분석 및 디버깅 전략 도출 일부에 AI 사용

    📢 기타 사항

    About

    2025-1 UMC 8th 데모데이 해커톤, 돈터치

    Resources

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages