Skip to content

Commit eec89c4

Browse files
dkslel1225jyn
andauthored
[πŸ“Docs] readme, 메타데이터 μž‘μ„± (#204)
* πŸ“ docs: README, 메타데이터 μž‘μ„± * 🎨 style: λžœλ”©νŽ˜μ΄μ§€ λ””μžμΈ 디벨둭 * 🎨 style: NoData μ»΄ν¬λ„ŒνŠΈ 생성 및 ꡐ체, ν”„λ‘œν•„λ””ν΄νŠΈ 이미지 λ³€κ²½, μ™Έ μŠ€νƒ€μΌ 일관성 ν–₯상 * 🎨 style:μ—λŸ¬λ©”μ„Έμ§€ μŠ€νƒ€μΌ μˆ˜μ • * πŸ“ πŸ›fix: μ˜€νƒ€ μˆ˜μ •, μ½”λ“œλž˜λΉ— 리뷰 반영 --------- Co-authored-by: jyn <spdlqjdkslel1226@naver.com>
1 parent 524f0b7 commit eec89c4

21 files changed

Lines changed: 354 additions & 111 deletions

File tree

β€ŽREADME.mdβ€Ž

Lines changed: 203 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,204 @@
1-
# Nomadia
1+
<p align="center">
2+
<a href="https://nomadia-two.vercel.app/">
3+
<img width="200" height="200" alt="logo" src="./public/images/icons/logo.svg" />
4+
</a>
5+
</p>
26

3-
λ…Έλ§ˆλ””μ•„ readme μΆ”κ°€ μ˜ˆμ •
4-
웹후크
7+
<div align="center">
8+
9+
# Nomadia : Nomad + Utopia
10+
11+
### μ–΄λ””μ„œλ“  'λ‚˜λ‹΅κ²Œ' λ¨Έλ¬΄λŠ” κ²½ν—˜μ„ μ‹œμž‘ν•˜μ„Έμš”.
12+
13+
**λ…Έλ§ˆλ””μ•„ (Nomadia)** λŠ” λ…Έλ§ˆλ“œλ₯Ό μœ„ν•œ **μ•‘ν‹°λΉ„ν‹° μ˜ˆμ•½ ν”Œλž«νΌ**μž…λ‹ˆλ‹€.
14+
μ‚¬μš©μžκ°€ 직접 μ²΄ν—˜μ„ λ“±λ‘ν•˜κ³ , λ‹€λ₯Έ λ…Έλ§ˆλ“œμ˜ μ²΄ν—˜μ„ μ˜ˆμ•½ν•˜λ©° κ²½ν—˜μ„ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
15+
16+
</div>
17+
<p align="center">
18+
배포 링크: https://nomadia-two.vercel.app/
19+
</p>
20+
21+
<div align="center">
22+
<details>
23+
<summary> πŸ‘€ Preview Image</summary>
24+
25+
#### νšŒμ›κ°€μž…/둜그인
26+
27+
---
28+
29+
#### λ©”μΈνŽ˜μ΄μ§€ μΊλŸ¬μ…€
30+
31+
#### λ©”μΈνŽ˜μ΄μ§€ 리슀트
32+
33+
#### λ©”μΈνŽ˜μ΄μ§€ 검색
34+
35+
---
36+
37+
#### μ²΄ν—˜ 등둝
38+
39+
#### λ§ˆμ΄νŽ˜μ΄μ§€ λ‚΄ μ²΄ν—˜ 관리
40+
41+
#### λ§ˆμ΄νŽ˜μ΄μ§€ μ˜ˆμ•½ 관리
42+
43+
#### λ§ˆμ΄νŽ˜μ΄μ§€ λ‚΄ μ˜ˆμ•½ ν˜„ν™©
44+
45+
---
46+
47+
#### μƒμ„ΈνŽ˜μ΄μ§€
48+
49+
---
50+
51+
</details>
52+
<br>
53+
</div>
54+
55+
## μ£Όμš” κΈ°λŠ₯
56+
57+
- πŸ’» **μ²΄ν—˜ 등둝** - λ…Έλ§ˆλ“œκ°€ 직접 μ²΄ν—˜μ„ λ“±λ‘ν•˜κ³  관리
58+
- πŸ“… **μ˜ˆμ•½ μ‹œμŠ€ν…œ** - μ‹€μ‹œκ°„ μ˜ˆμ•½ κ°€λŠ₯ λ‚ μ§œ 확인 및 μ˜ˆμ•½
59+
- πŸ” **슀마트 검색** - μΉ΄ν…Œκ³ λ¦¬, 지역별 μ²΄ν—˜ 검색
60+
- πŸ‘€ **λ§ˆμ΄νŽ˜μ΄μ§€** - μ˜ˆμ•½ λ‚΄μ—­, μ˜ˆμ•½ ν˜„ν™©, μ²΄ν—˜ 관리, ν”„λ‘œν•„ μˆ˜μ •
61+
62+
## 기술 μŠ€νƒ
63+
64+
### **Core Stack**
65+
66+
| 기술 | 버전 | μ„€λͺ… |
67+
| --------------- | ------------------- | ------------------------------------------- |
68+
| **Next.js** | 15.3.5 (App Router) | 파일 기반 λΌμš°νŒ…, SSR둜 SEO μ΅œμ ν™” |
69+
| **TypeScript** | 5.x | 정적 νƒ€μž…μœΌλ‘œ 개발 μ•ˆμ •μ„± ν–₯상 |
70+
| **React** | 19.0.0 | μ΅œμ‹  κΈ°λŠ₯(Server Components, Suspense) ν™œμš© |
71+
| **TailwindCSS** | v4 + Turbopack | λΉ λ₯Έ λΉŒλ“œμ™€ μΌκ΄€λœ λ””μžμΈ μ‹œμŠ€ν…œ |
72+
73+
### **Data & State Management**
74+
75+
| 기술 | μ„€λͺ… |
76+
| ------------------ | ---------------------------------------------- |
77+
| **TanStack Query** | μ„œλ²„ μƒνƒœ 캐싱과 λ™κΈ°ν™”λ‘œ API μš”μ²­ μ΅œμ ν™” |
78+
| **Zustand** | κ°„λ‹¨ν•˜κ³  직관적인 ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœ 관리 |
79+
| **Axios** | μ•ˆμ •μ μΈ HTTP ν΄λΌμ΄μ–ΈνŠΈ, μΈν„°μ…‰ν„°λ‘œ 토큰 관리 |
80+
81+
### **Form & Validation**
82+
83+
| 기술 | μ„€λͺ… |
84+
| ------------------- | --------------------------- |
85+
| **React Hook Form** | μ„±λŠ₯ μ΅œμ ν™”λœ 폼 라이브러리 |
86+
| **Zod** | TypeScript 기반 μŠ€ν‚€λ§ˆ 검증 |
87+
88+
### **UI/UX**
89+
90+
| 기술 | μ„€λͺ… |
91+
| ----------------- | ----------------------------------- |
92+
| **shadcn/ui** | μ»€μŠ€ν„°λ§ˆμ΄μ§• κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈ μ‹œμŠ€ν…œ |
93+
| **Framer Motion** | λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜κ³Ό μΈν„°λž™μ…˜ |
94+
95+
### **Development & Deployment**
96+
97+
| 기술 | μ„€λͺ… |
98+
| ----------------- | -------------------------------- |
99+
| **Vercel** | Next.js μ΅œμ ν™”λœ 배포 ν”Œλž«νΌ |
100+
| **Husky** | Git Hook으둜 μ½”λ“œ ν’ˆμ§ˆ μžλ™ 검증 |
101+
| **Lighthouse CI** | μ„±λŠ₯ 및 μ ‘κ·Όμ„± 지속적 λͺ¨λ‹ˆν„°λ§ |
102+
103+
## R&R
104+
105+
<table>
106+
<tr>
107+
<td>
108+
<img src="./public/images/icons/nomadia.svg" alt="λ…Έλ§ˆλ””μ•„" width="200" />
109+
</td>
110+
<td>
111+
<img width="700" alt="μ§€μœ€" src="https://github.com/user-attachments/assets/5dc9a246-7db3-4770-98e2-1c8ca6500c96" />
112+
</td>
113+
<td>
114+
<img width="700" alt="μ˜ν˜„" src="https://github.com/user-attachments/assets/7a783360-154a-4bc8-be12-227523f40734" />
115+
</td>
116+
<td>
117+
<img width="700" alt="μ€€μš°" src="https://github.com/user-attachments/assets/a4e25b3d-5dd7-4579-afdf-f7c7721bf352" />
118+
</td>
119+
<td>
120+
<img width="700" alt="λ™ν™˜" src="https://github.com/user-attachments/assets/af171698-31e7-4aec-a27f-e91394195e09" />
121+
</td>
122+
</tr>
123+
<tr>
124+
<th>νŒ€μ›</th>
125+
<td><strong>μ „μ§€μœ€</strong>(νŒ€μž₯)</td>
126+
<td><strong>κΉ€μ˜ν˜„</strong></td>
127+
<td><strong>κΉ€μ€€μš°</strong></td>
128+
<td><strong>μœ λ™ν™˜</strong></td>
129+
</tr>
130+
<tr>
131+
<td><strong>νŽ˜μ΄μ§€,<br> κΈ°λŠ₯</strong></td>
132+
<td>
133+
- μ²΄ν—˜ 상세 νŽ˜μ΄μ§€<br>
134+
- 404 νŽ˜μ΄μ§€, μ—λŸ¬ νŽ˜μ΄μ§€<br>
135+
</td>
136+
<td>
137+
- λžœλ”© νŽ˜μ΄μ§€ 기획 및 κ΅¬ν˜„<br>
138+
- 메인 νŽ˜μ΄μ§€<br>
139+
- μ˜ˆμ•½ λ‚΄μ—­ νŽ˜μ΄μ§€<br>
140+
- μ²΄ν—˜ 등둝 νŽ˜μ΄μ§€<br>
141+
</td>
142+
<td>
143+
- μ˜ˆμ•½ ν˜„ν™© νŽ˜μ΄μ§€<br>
144+
- 메인 νŽ˜μ΄μ§€(μ²΄ν—˜ 검색 κΈ°λŠ₯)<br>
145+
</td>
146+
<td>
147+
- 둜그인 νŽ˜μ΄μ§€<br>
148+
- νšŒμ›κ°€μž… νŽ˜μ΄μ§€<br>
149+
- μ²΄ν—˜ μˆ˜μ • νŽ˜μ΄μ§€<br>
150+
- 마이 νŽ˜μ΄μ§€<br>
151+
</td>
152+
</tr>
153+
<tr>
154+
<td><strong>(shared)<br> 곡톡 μ»΄ν¬λ„ŒνŠΈ, <br> 곡톡 둜직</strong></td>
155+
<td>
156+
- Pagination<br>
157+
- Modal<br>
158+
- Calendar<br>
159+
- Infinite Scroll
160+
</td>
161+
<td>
162+
- Loading Spinner<br>
163+
- Skeleton<br>
164+
- Carousel<br>
165+
- Error Message<br>
166+
</td>
167+
<td>
168+
- Dropdown<br>
169+
- Header<br>
170+
- Footer<br>
171+
</td>
172+
<td>- Sidebar</td>
173+
</tr>
174+
<tr>
175+
<td><strong>기타</strong></td>
176+
<td>- ESLint, Prettier, settings.json μ„€μ •<br>- ν”„λ‘œμ νŠΈ λ¦¬λ””μžμΈ</td>
177+
<td>- 곡톡 μŠ€νƒ€μΌ μ •μ˜ </td>
178+
<td>- 데λͺ¨ μ˜μƒ</td>
179+
<td>- 배포<br> - λ°œν‘œ</td>
180+
</tr>
181+
</table>
182+
183+
<br>
184+
185+
## ν”„λ‘œμ νŠΈ λ¬Έμ„œ
186+
187+
### νŠΈλŸ¬λΈ”μŠˆνŒ…
188+
189+
| μž‘μ„±μž | μ„€λͺ… |
190+
| ---------- | --------------------------------------------------------------------------------------------------------------------------------- |
191+
| **μ „μ§€μœ€** | [μ—λŸ¬ 핸듀링 (in μ•± λΌμš°ν„°)](https://www.notion.so/in-237bbeae3e2b80588e00f306680edaec) |
192+
| **κΉ€μ˜ν˜„** | [Props Hell νƒˆμΆœκΈ°: Context API둜 μ»΄ν¬λ„ŒνŠΈ μ΅œμ ν™”](https://www.notion.so/Props-Hell-Context-API-263b2ffc607580b5923cd91b1bd088d4) |
193+
| **κΉ€μ€€μš°** | [μ»€μŠ€ν…€ 클래슀 μ‚¬μš© μ‹œ νƒ€μ΄ν¬κ·Έλž˜ν”Ό μš°μ„ μˆœμœ„ 문제](https://www.notion.so/248bbeae3e2b80adb9b2c8a16d298ea0) |
194+
| **μœ λ™ν™˜** | - |
195+
196+
### 곡톡 μ»΄ν¬λ„ŒνŠΈ, 둜직
197+
198+
| μž‘μ„±μž | μ„€λͺ… |
199+
| ---------- | ------------------------ |
200+
| **μ „μ§€μœ€** | (λͺ¨λ‹¬) BasicModal μ‚¬μš©λ²• |
201+
| | (λͺ¨λ‹¬) BasicModal 섀계 |
202+
| **κΉ€μ˜ν˜„** | |
203+
| **κΉ€μ€€μš°** | |
204+
| **μœ λ™ν™˜** | |

β€Žpublic/images/.gitkeepβ€Ž

Whitespace-only changes.
Lines changed: 8 additions & 0 deletions
Loading
-5.84 KB
Binary file not shown.
Lines changed: 15 additions & 0 deletions
Loading

β€Žpublic/images/og-image.pngβ€Ž

421 KB
Loading

β€Žsrc/app/layout.tsxβ€Ž

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,40 @@ const pretendard = localFont({
1515
});
1616

1717
export const metadata: Metadata = {
18-
title: 'Nomadia',
19-
description: 'C2C service for Global Nomads',
18+
title: 'Nomadia - λ…Έλ§ˆλ“œλ₯Ό μœ„ν•œ μ•‘ν‹°λΉ„ν‹° μ˜ˆμ•½ ν”Œλž«νΌ',
19+
description:
20+
'μ–΄λ””μ„œλ“  λ‚˜λ‹΅κ²Œ λ¨Έλ¬΄λŠ” κ²½ν—˜μ„ μ‹œμž‘ν•˜μ„Έμš”. λ…Έλ§ˆλ“œλ“€μ΄ 직접 μ²΄ν—˜μ„ λ“±λ‘ν•˜κ³  μ˜ˆμ•½ν•˜λŠ” κ²½ν—˜ 곡유 μ„œλΉ„μŠ€ λ…Έλ§ˆλ””μ•„μž…λ‹ˆλ‹€.',
21+
metadataBase: new URL('https://nomadia-two.vercel.app'),
22+
alternates: {
23+
canonical: '/',
24+
},
25+
openGraph: {
26+
title: 'Nomadia - λ…Έλ§ˆλ“œλ₯Ό μœ„ν•œ μ•‘ν‹°λΉ„ν‹° μ˜ˆμ•½ ν”Œλž«νΌ',
27+
description:
28+
'μ–΄λ””μ„œλ“  λ‚˜λ‹΅κ²Œ λ¨Έλ¬΄λŠ” κ²½ν—˜μ„ μ‹œμž‘ν•˜μ„Έμš”. λ…Έλ§ˆλ“œλ“€μ΄ 직접 μ²΄ν—˜μ„ λ“±λ‘ν•˜κ³  μ˜ˆμ•½ν•˜λŠ” κ²½ν—˜ 곡유 μ„œλΉ„μŠ€',
29+
url: 'https://nomadia-two.vercel.app',
30+
siteName: 'Nomadia',
31+
locale: 'ko_KR',
32+
type: 'website',
33+
images: [
34+
{
35+
url: '/images/og-image.png',
36+
width: 1200,
37+
height: 630,
38+
alt: 'Nomadia - λ…Έλ§ˆλ“œλ₯Ό μœ„ν•œ μ•‘ν‹°λΉ„ν‹° μ˜ˆμ•½ ν”Œλž«νΌ',
39+
},
40+
],
41+
},
42+
twitter: {
43+
card: 'summary_large_image',
44+
title: 'Nomadia - λ…Έλ§ˆλ“œλ₯Ό μœ„ν•œ μ•‘ν‹°λΉ„ν‹° μ˜ˆμ•½ ν”Œλž«νΌ',
45+
description: 'μ–΄λ””μ„œλ“  λ‚˜λ‹΅κ²Œ λ¨Έλ¬΄λŠ” κ²½ν—˜μ„ μ‹œμž‘ν•˜μ„Έμš”',
46+
images: ['/images/og-image.png'],
47+
},
48+
robots: {
49+
index: true,
50+
follow: true,
51+
},
2052
};
2153

2254
export default function RootLayout({

β€Žsrc/app/my/my-activities/page.tsxβ€Ž

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ const MyActivityPage = () => {
1313
{/* νŽ˜μ΄μ§€ 헀더 */}
1414
<div className="mb-[2rem] flex items-start justify-between py-[1rem] md:mb-[2.4rem]">
1515
<header className="flex flex-col gap-[0.4rem]">
16-
<h1 className="text-[1.8rem] font-bold text-gray-950">λ‚΄ μ²΄ν—˜κ΄€λ¦¬</h1>
16+
<h1 className="text-[1.8rem] font-bold text-gray-950">
17+
λ‚΄ μ²΄ν—˜ 관리
18+
</h1>
1719
<span className="text-[1.4rem] font-medium text-gray-500">
1820
μ²΄ν—˜μ„ λ“±λ‘ν•˜κ±°λ‚˜ μˆ˜μ • 및 μ‚­μ œκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
1921
</span>
2022
</header>
2123
<Link
2224
href="/my/my-activities/activity-registration"
23-
className="md:bg-main flex cursor-pointer items-center justify-center rounded-[1.4rem] text-[1.2rem] font-bold text-white transition-colors md:h-[4.8rem] md:w-[13.8rem] md:text-[1.6rem] md:hover:bg-blue-500"
25+
className="md:bg-main btn-action-blue flex cursor-pointer items-center justify-center rounded-[1.4rem] text-[1.2rem] font-bold text-white transition-colors md:h-[4.8rem] md:w-[13.8rem] md:text-[1.6rem]"
2426
>
2527
<span className="block md:hidden">
2628
<Image

β€Žsrc/app/my/reservation/page.tsxβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ const ReservationPage = () => {
44
return (
55
<main>
66
<div className="mb-[2.4rem] py-[1rem]">
7-
<p className="text-[1.8rem] font-bold text-gray-950">μ˜ˆμ•½ λ‚΄μ—­</p>
7+
<h1 className="mb-[0.4rem] text-[1.8rem] font-bold text-gray-950">
8+
μ˜ˆμ•½ λ‚΄μ—­
9+
</h1>
810
<span className="text-[1.4rem] font-medium text-gray-500">
911
μ˜ˆμ•½λ‚΄μ—­ λ³€κ²½ 및 μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
1012
</span>

β€Žsrc/app/my/reserve-calendar/page.tsxβ€Ž

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import { useQuery } from '@tanstack/react-query';
44
import { ChevronDown } from 'lucide-react';
5-
import Image from 'next/image';
65
import React, { useEffect, useRef, useState } from 'react';
76

87
import { getActListApi } from '@/features/activities/libs/api/getActListApi';
@@ -18,6 +17,7 @@ import { MonthReservations } from '@/shared/components/calendar/libs/types/data'
1817
import Dropdown from '@/shared/components/dropdown/dropdown';
1918
import AdaptiveModal from '@/shared/components/modal/components/adaptive-modal/adaptive-modal';
2019
import { useModalStore } from '@/shared/components/modal/libs/stores/useModalStore';
20+
import NoData from '@/shared/components/no-data/no-data';
2121
import useWindowSize from '@/shared/libs/hooks/useWindowSize';
2222
import { Activity } from '@/shared/types/activity';
2323

@@ -199,9 +199,9 @@ const ReserveCalendarPage = () => {
199199
}, [selectedDate, reservationArray]);
200200

201201
return (
202-
<div className="flex flex-col items-start py-[1rem]">
202+
<div className="flex flex-col py-[1rem]">
203203
<div className="mb-[2.4rem] w-full">
204-
<h2 className="txt-18-bold text-gray-950">μ˜ˆμ•½ ν˜„ν™©</h2>
204+
<h1 className="txt-18-bold mb-[0.4rem] text-gray-950">μ˜ˆμ•½ ν˜„ν™©</h1>
205205
<p className="txt-14-medium mt-1 text-gray-500">
206206
λ‚΄ μ²΄ν—˜μ˜ 내역듀을 ν•œ λˆˆμ— 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
207207
</p>
@@ -279,17 +279,7 @@ const ReserveCalendarPage = () => {
279279
</div>
280280
</CalendarWithReservations>
281281
) : (
282-
<div className="mt-24 flex flex-col items-center justify-center">
283-
<Image
284-
src="/images/sad-laptop.svg"
285-
alt="Sad laptop"
286-
width={246}
287-
height={200}
288-
/>
289-
<p className="mt-14 text-[1.8rem] font-medium text-gray-600">
290-
λ“±λ‘ν•œ μ²΄ν—˜μ„ μ„ νƒν•΄μ£Όμ„Έμš”.
291-
</p>
292-
</div>
282+
<NoData message="λ“±λ‘ν•œ μ²΄ν—˜μ„ μ„ νƒν•΄μ£Όμ„Έμš”." />
293283
)}
294284
</div>
295285
</div>

0 commit comments

Comments
Β (0)