|
1 | | -오늘뭐해 모노레포 |
2 | | -(수정 예정) |
| 1 | +<div align="center" style="display:flex; align-items:center; justify-content:center;"> |
| 2 | + <img src="apps/what-today/public/favicon.svg" style="width:80px; height:50px;"/> |
| 3 | + <span style="font-size:40px; font-weight:bold; color:#6EC1E4;">오늘뭐해</span> |
| 4 | +</div> |
| 5 | + |
| 6 | +## 📖 프로젝트 소개 |
| 7 | + |
| 8 | +오늘뭐해 플랫폼은 체험 제공자(호스트)가 자신만의 체험 프로그램을 등록하고, 사용자(참여자)가 해당 체험을 예약·이용하며, 이용 후 후기\*를 남길 수 있는 글로벌 웹 서비스입니다.</br> |
| 9 | +🧑💼 호스트는 간단한 절차로 체험 정보를 등록·수정할 수 있으며, |
| 10 | +🙋♂️ 사용자는 다양한 카테고리의 체험을 검색하고, 상세 페이지에서 원하는 날짜·시간에 예약할 수 있습니다.</br> |
| 11 | +🏙 국내 사용자에게는 일상 속에서도 새로운 체험을 통해 여행의 감성을 느낄 수 있도록 하며, |
| 12 | +✈️ 외국인 사용자에게는 관광을 넘어 지역 문화를 직접 경험할 수 있도록 중개 역할을 합니다.</br> |
| 13 | +⭐ 또한 이용이 끝난 후에는 체험에 대한 리뷰와 평점을 남겨 다른 사용자들이 체험을 선택할 때 참고할 수 있도록 돕습니다. |
| 14 | + |
| 15 | +## 📄 페이지별 기능 정리 |
| 16 | + |
| 17 | +<div style="display:flex; flex-direction:column; gap:10px;"> |
| 18 | +<div stlye= "display:flex; gap:10px;" ;> |
| 19 | +<img src="apps/what-today/public/image.png" style="width:40%; height:600px;"/> |
| 20 | + <img src="apps/what-today/public/image2.png" style="width:40%; height:600px;"/> |
| 21 | + </div> |
| 22 | + <div stlye= "display:flex; gap:10px;" > |
| 23 | + <img src="apps/what-today/public/image3.png" style="width:40%; height:600px;"/> |
| 24 | + <img src="apps/what-today/public/image4.png" style="width:40%; height:600px;"/> |
| 25 | + </div> |
| 26 | +</div> |
| 27 | + |
| 28 | +## 🚀 배포 서비스 |
| 29 | + |
| 30 | +<p> |
| 31 | + <a href="https://what-today-teal.vercel.app/" target="_blank" style="text-decoration:none; display:inline-flex; align-items:center; padding:2px 12px; border-radius:6px;"> |
| 32 | + <img src="apps/what-today/public/favicon.svg" alt="What-Today Logo" style="width:24px; height:24px; margin-right:8px;"/> |
| 33 | + <span style="color:white; font-size:16px; font-weight:bold;">오늘뭐해</span> |
| 34 | + </a> |
| 35 | + |
| 36 | +<a href="https://what-today-design-system.vercel.app/docs" target="_blank" style="text-decoration:none; display:inline-flex; align-items:center;"> |
| 37 | + <img src="apps/what-today/public/favicon.svg" alt="Design-System Logo" style="width:24px; height:24px; margin-right:8px;"/> |
| 38 | + <span style="color:#ffffff; font-size:16px; font-weight:bold;">Design System</span> |
| 39 | +</a> |
| 40 | +</p> |
| 41 | + |
| 42 | +## ⚙️ 커밋 컨벤션 |
| 43 | + |
| 44 | +```bash |
| 45 | +[#이슈번호] 타입(옵션): 커밋 메시지 |
| 46 | + |
| 47 | +# 타입 예시 |
| 48 | +✨Feat # 새로운 기능 추가, 초기 UI 디자인 |
| 49 | +🐛Fix # 버그 수정 |
| 50 | +📦Chore # 설정, 빌드 변경 등 |
| 51 | +💄Style # 포맷팅, 세미콜론 누락 등 |
| 52 | +📝Docs # 문서 작성 및 수정 |
| 53 | +♻️Refactor # 리팩토링, 컴포넌트 분리 등 |
| 54 | + |
| 55 | +# 사용 예시 |
| 56 | +✨[#123] feat: 로그인 기능 구현함 |
| 57 | +🐛[#456] fix: 응답 필드 누락 수정함 |
| 58 | +♻️[#789] refactor: 버튼 컴포넌트 재사용 구조로 변경 |
| 59 | +``` |
| 60 | +
|
| 61 | +## 📁 디렉토리 구조 |
| 62 | +
|
| 63 | +``` |
| 64 | +오늘뭐해/ |
| 65 | +├── .github/ # GitHub Actions 워크플로우 설정 |
| 66 | +├── .vscode/ # VSCode 환경설정 |
| 67 | +├── apps/ # 서비스 앱들이 위치하는 폴더 (멀티 앱 관리 가능) |
| 68 | +│ └── what-today/ # 메인 서비스 앱 |
| 69 | +│ └── src/ # 서비스 앱 소스 코드 |
| 70 | +│ ├── apis/ # API 요청 함수 모음 |
| 71 | +│ ├── assets/ # 이미지, 폰트 등 정적 파일 |
| 72 | +│ ├── components/ # 재사용 UI 컴포넌트 |
| 73 | +│ ├── constants/ # 상수 값 (경로, 메시지 등) |
| 74 | +│ ├── hooks/ # 커스텀 React 훅 |
| 75 | +│ ├── layouts/ # 공통 레이아웃 (Header, Footer 등) |
| 76 | +│ ├── libs/ # 외부 라이브러리 래핑 및 초기화 코드 |
| 77 | +│ ├── pages/ # 라우트별 페이지 컴포넌트 |
| 78 | +│ ├── schemas/ # Zod 유효성 검증 스키마 |
| 79 | +│ ├── stores/ # Zustand 상태 관리 |
| 80 | +│ ├── utils/ # 공통 유틸 함수 |
| 81 | +│ ├── App.tsx # 앱 엔트리 포인트 |
| 82 | +│ ├── index.css # 전역 스타일 (TailwindCSS import) |
| 83 | +│ └── main.tsx # React DOM 렌더링 포인트 |
| 84 | +├── packages/ |
| 85 | +│ └── design-system/ |
| 86 | +│ ├── scripts/ # 디자인 시스템 관련 스크립트 |
| 87 | +│ └── src/ |
| 88 | +│ ├── components/ # 공통 UI 컴포넌트 |
| 89 | +│ ├── layouts/ # 디자인 시스템 내 레이아웃 컴포넌트 |
| 90 | +│ ├── pages/ # 스토리북처럼 사용하는 내부 페이지 |
| 91 | +│ ├── routes/ # 디자인 시스템 라우터 설정 |
| 92 | +│ ├── App.tsx # 디자인 시스템 엔트리 포인트 |
| 93 | +│ ├── index.css # 전역 스타일 |
| 94 | +│ └── main.tsx # React DOM 렌더링 포인트 |
| 95 | +└── (루트 설정 파일) # tsconfig, vite.config, package.json 등 |
| 96 | + |
| 97 | +``` |
| 98 | +
|
| 99 | +## 🛠 기술 스택 |
| 100 | +
|
| 101 | +### 🖥️ 프론트엔드 |
| 102 | +
|
| 103 | +<div className="flex flex-wrap items-center gap-2"> |
| 104 | + <img src="https://img.shields.io/badge/React-20232A?style=flat-square&logo=react&logoColor=61DAFB"/> |
| 105 | +<img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white"/> |
| 106 | +<img src="https://img.shields.io/badge/React_Router-CA4245?style=flat-square&logo=react-router&logoColor=white"/> |
| 107 | +<img src="https://img.shields.io/badge/Zustand-000000?style=flat-square&logo=zustand&logoColor=white"/> |
| 108 | +<img src="https://img.shields.io/badge/React_Hook_Form-EC5990?style=flat-square&logo=reacthookform&logoColor=white"/> |
| 109 | +<img src="https://img.shields.io/badge/Hookform_Resolvers-EC5990?style=flat-square&logo=reacthookform&logoColor=white"/> |
| 110 | +<img src="https://img.shields.io/badge/Axios-5A29E4?style=flat-square&logo=axios&logoColor=white"/> |
| 111 | +<img src="https://img.shields.io/badge/React_Query-FF4154?style=flat-square&logo=reactquery&logoColor=white"/> |
| 112 | +<img src="https://img.shields.io/badge/Zod-3E67B1?style=flat-square&logo=zod&logoColor=white"/> |
| 113 | +<img src="https://img.shields.io/badge/Node.js-339933?style=flat-square&logo=node.js&logoColor=white"/> |
| 114 | +</div> |
| 115 | +
|
| 116 | +### 스타일링 |
| 117 | +
|
| 118 | +<div> |
| 119 | +<img src="https://img.shields.io/badge/Tailwind CSS-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white"/> |
| 120 | +<img src="https://img.shields.io/badge/Framer Motion-0055FF?style=flat-square&logo=framer&logoColor=white" alt="Framer Motion" /> |
| 121 | +</div> |
| 122 | +
|
| 123 | +### 🛠️ 개발 환경 및 도구 |
| 124 | +
|
| 125 | +<div> |
| 126 | +<img src="https://img.shields.io/badge/pnpm-222222?style=flat-square&logo=pnpm&logoColor=F69220"/> |
| 127 | +<img src="https://img.shields.io/badge/VSCode-007ACC?style=flat-square&logo=visualstudiocode&logoColor=white"/> |
| 128 | +<img src="https://img.shields.io/badge/Git-F05032?style=flat-square&logo=git&logoColor=white"/> |
| 129 | +<img src="https://img.shields.io/badge/GitHub-181717?style=flat-square&logo=github&logoColor=white"/> |
| 130 | +
|
| 131 | +### 🚀배포 |
| 132 | +
|
| 133 | +</div> |
| 134 | +<img src="https://img.shields.io/badge/Vercel-000000?style=flat-square&logo=vercel&logoColor=white"/> |
| 135 | +<div> |
| 136 | +
|
| 137 | +### 🔍 코드 품질 관리 |
| 138 | +
|
| 139 | +<div> |
| 140 | +<img src="https://img.shields.io/badge/ESLint-4B32C3?style=flat-square&logo=eslint&logoColor=white"/> |
| 141 | +<img src="https://img.shields.io/badge/Prettier-F7B93E?style=flat-square&logo=prettier&logoColor=white"/> |
| 142 | +</div> |
| 143 | +
|
| 144 | +### 📄 문서화 및 협업 |
| 145 | +
|
| 146 | +<div> |
| 147 | +<img src="https://img.shields.io/badge/Swagger-85EA2D?style=flat-square&logo=swagger&logoColor=white"/> |
| 148 | +<img src="https://img.shields.io/badge/Figma-F24E1E?style=flat-square&logo=figma&logoColor=white"/> |
| 149 | +<img src="https://img.shields.io/badge/Notion-000000?style=flat-square&logo=notion&logoColor=white"/> |
| 150 | +<img src="https://img.shields.io/badge/Discord-5865F2?style=flat-square&logo=discord&logoColor=white"/> |
| 151 | +</div> |
| 152 | +
|
| 153 | +## 👥 팀 역할 (R&R) |
| 154 | +
|
| 155 | + <img src="apps/what-today/public/Jiseob.png" style="width:40%; height:600px;"/> |
| 156 | + <img src="apps/what-today/public/Jiwoo.png" style="width:40%; height:600px;"/> |
| 157 | +
|
| 158 | + <img src="apps/what-today/public/taeil.png" style="width:40%; height:600px;"/> |
| 159 | + <img src="apps/what-today/public/jihyun.png" style="width:40%; height:600px;"/> |
0 commit comments