PayCheck ์น ํ๋ก์ ํธ(payCheck-frontend)๋ฅผ React Native(Expo)๋ก ๋ชจ๋ฐ์ผ ๋ณํํ๋ ํ๋ก์ ํธ
- ํ๋ ์์ํฌ: Expo ~54.0.33
- ์ธ์ด: TypeScript ~5.9.2
- React: 19.1.0
- React Native: 0.81.5
- ๋ค๋น๊ฒ์ด์ : React Navigation
- ์ํ๊ด๋ฆฌ: Zustand + persist ๋ฏธ๋ค์จ์ด
- HTTP ํด๋ผ์ด์ธํธ: Axios + ์ธํฐ์ ํฐ
src/
โโโ api/ # API ์ฐ๋ (๋๋ฉ์ธ๋ณ ํด๋ ๊ตฌ์กฐ)
โ โโโ axios.ts # Axios ์ธ์คํด์ค + ์ธํฐ์
ํฐ
โ โโโ auth/ # ์ธ์ฆ API (๋ก๊ทธ์ธ, ํ์๊ฐ์
, ๋ก๊ทธ์์)
โ โโโ user/ # ์ฌ์ฉ์ API (ํ๋กํ ์กฐํ/์์ )
โ โโโ worker/ # ๊ทผ๋ก์ API (๊ณ์ฝ, ๊ทผ๋ฌด๊ธฐ๋ก, ์ ์ ์์ฒญ, ๊ธ์ฌ, ์ก๊ธ)
โ โโโ employer/ # ๊ณ ์ฉ์ฃผ API (๊ทผ๋ฌด์ง CRUD, ๊ณ์ฝ CRUD, ์ ์ ์์ฒญ ์น์ธ/๊ฑฐ์ )
โ โโโ notice/ # ๊ณต์ง API (๊ณต์ง CRUD)
โ โโโ notification/ # ์๋ฆผ API (์ธ์ฑ ์๋ฆผ CRUD, FCM ํ ํฐ ๋ฑ๋ก/์ญ์ )
โ โโโ kakao/ # ์นด์นด์ค API (์ฃผ์ ๊ฒ์)
โโโ assets/ # ํฐํธ, ์ด๋ฏธ์ง
โโโ components/
โ โโโ common/ # Text, PrimaryButton, BottomSheetModal, WheelPicker, MonthlyCalendar, Pagination, NoticeBoard ๋ฑ
โ โ โโโ notice/ # ๊ณต์ง ์ปดํฌ๋ํธ (์์ฑ/์์ /์์ธ ๋ชจ๋ฌ, ์นดํ
๊ณ ๋ฆฌ ์ ํ)
โ โ โโโ notification/ # ์๋ฆผ ์ปดํฌ๋ํธ (NotificationPopup ๋๋กญ๋ค์ด)
โ โโโ employer/ # ๊ณ ์ฉ์ฃผ ์ ์ฉ (ํ, ์ง์๊ด๋ฆฌ, ์ก๊ธ๊ด๋ฆฌ, ๋ง์ดํ์ด์ง)
โ โโโ layout/ # Header
โ โโโ mypage/ # ๊ณตํต ๋ง์ดํ์ด์ง (Drawer, ProfileCard, SentRequestCard ๋ฑ)
โ โโโ signup/ # ํ์๊ฐ์
โ โโโ skeleton/ # ๋ก๋ฉ ์ค์ผ๋ ํค
โ โโโ worker/ # ๊ทผ๋ก์ ์ ์ฉ (์ฃผ๊ฐ/์๊ฐ ์บ๋ฆฐ๋, ๊ธ์ฌ๋ช
์ธ์)
โโโ hooks/
โ โโโ common/ # useOnboardingStatus, useLogoutHandler, useNotices, useNotifications, useNotificationStream, useFcmToken, useNotificationNavigation
โ โโโ employer/ # useWorkplaceManagement, useWorkplaceContracts, useAddWorker, useReceivedRequests, useEmployerDailyWorkRecords
โ โโโ worker/ # useWorkRecords, useCorrectionRequest, useUserData, useSalaryStatement ๋ฑ
โโโ navigation/ # RootNavigator, WorkerStack, EmployerStack, SignUpNavigator, OnboardingStack
โโโ screens/
โ โโโ auth/ # ํ์๊ฐ์
(Step1~5)
โ โโโ common/ # ๊ณตํต ํ๋ฉด (NotificationScreen, NotificationSettingsScreen)
โ โโโ employer/ # ๊ณ ์ฉ์ฃผ ํ๋ฉด (ํ, ์ง์๊ด๋ฆฌ, ์ก๊ธ๊ด๋ฆฌ, ๋ง์ดํ์ด์ง)
โ โโโ onboarding/ # ์จ๋ณด๋ฉ, ๋ก๊ทธ์ธ
โ โโโ worker/ # ๊ทผ๋ก์ ํ๋ฉด (์ฃผ๊ฐ/์๊ฐ ์บ๋ฆฐ๋, ๋ง์ดํ์ด์ง)
โโโ stores/ # Zustand ์ ์ญ ์ํ (authStore, onboardingStore, signUpStore, notificationStore)
โโโ types/ # TypeScript ํ์
(๊ณตํต API ํ์
, UI ๋๋ฉ์ธ ํ์
)
โโโ constants/ # ์์ (colors, bank, pickerItems, wage)
โโโ utils/ # ์ ํธ๋ฆฌํฐ ํจ์ (alert, date, format, image, notification, employerSchedule, sse, pushToken)
- ์ฃผ๊ฐ ์บ๋ฆฐ๋: ๊ทผ๋ฌด ๊ธฐ๋ก ์กฐํ, ๊ทผ๋ฌด ์ถ๊ฐ/์ ์ ์์ฒญ, ๊ณผ๊ฑฐ/๋ฏธ๋ ๊ทผ๋ฌด ์นด๋ ์์ ๊ตฌ๋ถ
- ์๊ฐ ์บ๋ฆฐ๋: ์๋ณ ๊ทผ๋ฌด ๊ธฐ๋ก ์กฐํ, ๋ ์ง๋ณ ๊ทผ๋ฌด ์์ธ, ๊ทผ๋ฌด์ง๋ณ ๊ธ์ฌ/์ก๊ธ ํํฉ
- ๊ธ์ฌ๋ช ์ธ์: ๊ทผ๋ฌด์ง๋ณ ๊ธ์ฌ ์์ธ (์ง๊ธ/๊ณต์ ํญ๋ชฉ), 4๋๋ณดํ/์๋์ธ ํ ๊ธ ํ์
- ๋ง์ดํ์ด์ง: Drawer ๋ฉ๋ด, ํ๋กํ ์์ , ๊ทผ๋ฌด์ง ๊ด๋ฆฌ, ๋ณด๋ธ ์์ฒญ, ํ์ํํด
- ํ: ์ผ๊ฐ ์บ๋ฆฐ๋, ๊ทผ๋ฌด ์ถ๊ฐ/์์ ๋ชจ๋ฌ
- ์ง์๊ด๋ฆฌ: ๊ทผ๋ฌด์ง๋ณ ๊ทผ๋ฌด์ ๋ชฉ๋ก ์กฐํ, Accordion ์นด๋ (์๊ธ/๊ธ์ฌ์ง๊ธ์ผ/๊ทผ๋ฌด์๊ฐ ํธ์ง), ํด์ฌ์ฒ๋ฆฌ
- ๊ทผ๋ฌด์ ์ถ๊ฐ: 2๋จ๊ณ ํ๋ก์ฐ (๊ทผ๋ฌด์ ์ฝ๋ ๊ฒ์ โ ๊ทผ๋ฌด์๊ฐ ์ค์ ), ๊ทผ๋ฌด ์ค์ผ์ค ํ์๋ผ์ธ ์ฐจํธ ํ๋ฆฌ๋ทฐ
- ์ก๊ธ๊ด๋ฆฌ: ๊ทผ๋ฌด์ง๋ณ ๊ทผ๋ฌด์ ๊ธ์ฌ ์กฐํ, ์ก๊ธ ์ฒ๋ฆฌ
- ๊ทผ๋ฌด์ง ๊ด๋ฆฌ: ๊ทผ๋ฌด์ง CRUD, ์นด์นด์ค ์ฃผ์ ๊ฒ์ ์ฐ๋
- ๋ง์ดํ์ด์ง: ํ๋กํ ์์ , ๋ฐ์ ๊ทผ๋ฌด์์ฒญ ๋ณด๊ธฐ (์ฌ์ ์ฅ๋ณ ํญ, ์ํ ํํฐ, ํ์ด์ง๋ค์ด์ , ์น์ธ/๊ฑฐ์ )
- ๊ณต์ง ๊ฒ์ํ: ๊ณต์ง ์์ฑ/์์ /์ญ์ , ์นดํ ๊ณ ๋ฆฌ ํํฐ, ์์ธ ๋ณด๊ธฐ ๋ฐํ ์ํธ (๊ณ ์ฉ์ฃผ/๊ทผ๋ก์ ๊ณต์ฉ)
- ์๋ฆผ: ์ธ์ฑ ์๋ฆผ ํ์ (Header ๋ฒจ ์์ด์ฝ), ์๋ฆผ ์์ธ ํ๋ฉด (ํํฐ/ํ์ด์ง๋ค์ด์ ), SSE ์ค์๊ฐ ๊ตฌ๋ , ์ซ์ ๋ฑ์ง
- ํธ์ ์๋ฆผ: FCM ํ ํฐ ๋ฑ๋ก/์ญ์ , ๋ฅ๋งํฌ ๋ค๋น๊ฒ์ด์ (์๋ฆผ ํญ ์ ํด๋น ํ๋ฉด ์ด๋), ์๋ฆผ ์ค์ ํ๋ฉด
- ์นด์นด์ค ๋ค์ดํฐ๋ธ SDK ๋ก๊ทธ์ธ (
@react-native-seoul/kakao-login) - JWT ํ ํฐ (AccessToken + RefreshToken)
- ํ ํฐ ์๋ ๊ฐฑ์ ๋ก์ง (Axios ์ธํฐ์ ํฐ)
- ์ฑ ์์ ์ ํ ํฐ ์ ํจ์ฑ ๊ฒ์ฆ
Onboarding (3ํ์ด์ง ์ค์์ดํ)
โ
Welcome (์นด์นด์ค ๋ก๊ทธ์ธ)
โโ ๊ธฐ์กด ํ์ โ EmployerHome / WorkerHome
โโ ์ ๊ท ํ์ โ SignUp (5๋จ๊ณ)
โโ WORKER โ WorkerHome
โโ EMPLOYER โ WorkplaceManage
- authStore: accessToken, userInfo, isLoggedIn (AsyncStorage ์๋ persist)
- onboardingStore: isOnboardingCompleted (AsyncStorage ์๋ persist)
- signUpStore: ํ์๊ฐ์ ์์ ๋ฐ์ดํฐ (persist ์์, ์ฑ ์ข ๋ฃ ์ ์๋ ์ด๊ธฐํ)
- notificationStore: unreadCount (์ ์ญ ์๋ฆผ ๋ฑ์ง ์ํ, persist ์์)
npx expo start # ๊ฐ๋ฐ ์๋ฒ ์์
npx expo start --ios # iOS ์๋ฎฌ๋ ์ดํฐ
npx expo start --android # Android ์๋ฎฌ๋ ์ดํฐ
eas build --platform ios # iOS ๋น๋
eas build --platform android # Android ๋น๋app.config.ts์ extra ์น์
์์ ์ค์ :
backendApiUrl: ๋ฐฑ์๋ API URLkakaoAppKey: ์นด์นด์ค ๋ค์ดํฐ๋ธ ์ฑ ํคkakaoRestApiKey: ์นด์นด์ค REST API ํค (์ฃผ์ ๊ฒ์์ฉ)