환경과 함께하는 똑똑한 한 끼
🌳RE:FOOD🌳
가게에서 버려지는 식품들 너무 아까운데... 내가 싸게 살 수는 없을까?
리푸드는 남는 식품 거래 플랫폼 서비스로, 합리적 소비와 환경보호를 모두 얻는 똑똑한 푸드 픽업 서비스입니다.
이를 통해 합리적이고 환경친화적인 식문화에 기여하자! 라는 서비스 목표를 갖고 있습니다.
- 경제적 가치 - 소비자 : 소비자는 근처 마감 할인을 통한 이득을 얻는 동시에, 환경 포인트 및 쿠폰 리워드를 통해 서비스 이용 동기를 얻습니다.
- 경제적 가치 - 판매자 : 판매자는 재고에 대한 원가를 회수하고, 빠른 가게 노출을 통한 추가 매출 기회를 얻습니다.
- 환경 보호: 음식물 쓰레기 감소를 통한 탄소 배출량 감축
Redis를 활용하여 장바구니를 빠르고 안정적으로 관리할 수 있습니다.
카드, 간편 결제, 포인트 결제를 지원합니다.
주문 건당 20포인트가 적립됩니다.
|
|
|
|
사용자 위치를 기반으로 5Km 반경에 있는 가게를 검색할 수 있습니다.
사용자와 가게 간 거리를 자동으로 계산합니다.
|
FCM 푸시 알림으로 실시간 주문 상태를 확인할 수 있습니다.
환경 레벨 업 알림으로 포인트 적립 시 레벨 상승 소식을 받을 수 있습니다.
가게별 알림으로 관심 가게의 신메뉴와 할인 정보를 확인할 수 있습니다.
|
사업자 등록 및 승인 기능을 통해 자격을 검증할 수 있습니다.
가게 관리 기능을 통해 메뉴, 영업시간, 위치 등 다양한 정보를 관리할 수 있습니다.
매출 정보 관리 기능을 통해 일별·월별 매출 현황을 확인할 수 있습니다.
|
|
|
|
- React 18
- React Native 0.74 (모바일 앱 개발)
- Zustand: 가벼운 전역 상태 관리
- React Query (TanStack Query): 서버 상태 관리 및 캐싱
- Async Storage: 로컬 스토리지
- Encrypted Storage: 민감 데이터 보안 저장
- Axios: HTTP 클라이언트
- React Native WebView: 외부 웹 뷰 연동
- Geolocation (위치 서비스)
- Permissions (권한 관리)
- Image Picker (사진 업로드)
- Fast Image (고성능 이미지 로딩)
- Date Picker (날짜 선택)
- Naver Map SDK (지도 서비스)
- Kakao Login (소셜 로그인)
- Toss Payments SDK (결제 모듈)
- React Navigation (Stack, Bottom Tabs): 화면 전환/탭 네비게이션
- Gesture Handler & Reanimated: 제스처, 애니메이션
- Safe Area Context & Screens: 안전 영역, 네이티브 화면 관리
- Vector Icons & Evil Icons: 아이콘 세트
- Linear Gradient: 그라데이션 효과
- Shadow-2: 그림자 효과
- SVG + Transformer: SVG 렌더링
- Lottie: 애니메이션
- Toast Message: 알림 메시지
- Bootsplash: 앱 시작 로딩 화면
- Gifted Charts: 차트 시각화
- Firebase App & Messaging: 푸시 알림
- Notifee: 로컬 알림 확장
- TypeScript 5.0: 정적 타입
- ESLint + Prettier: 코드 품질 및 포맷팅
- Husky + Lint-staged: Git Hook 기반 코드 검사 자동화
- Jest + React Test Renderer: 테스트 프레임워크
- Metro Bundler (React Native 기본)
- Babel (Module Resolver 포함)
- Node.js 18+
📦src
┣ 📂api
┃ ┣ 📜auth.ts
┃ ┣ 📜axios.ts
┃ ┣ 📜cart.ts
┃ ┣ 📜environment.ts
┃ ┣ 📜history.ts
┃ ┣ 📜image.ts
┃ ┣ 📜like.ts
┃ ┣ 📜location.ts
┃ ┣ 📜map.ts
┃ ┣ 📜member.ts
┃ ┣ 📜mypage.ts
┃ ┣ 📜notification.ts
┃ ┣ 📜order.ts
┃ ┣ 📜queryClient.ts
┃ ┣ 📜review.ts
┃ ┣ 📜seller.ts
┃ ┗ 📜store.ts
┣ 📂assets
┃ ┣ 📂dummy
┃ ┃ ┗ 📜dummy.webp
┃ ┣ 📂fonts
┃ ┃ ┣ 📜Pretendard-Black.ttf
┃ ┃ ┣ 📜Pretendard-Bold.ttf
┃ ┃ ┣ 📜Pretendard-ExtraBold.ttf
┃ ┃ ┣ 📜Pretendard-ExtraLight.ttf
┃ ┃ ┣ 📜Pretendard-Light.ttf
┃ ┃ ┣ 📜Pretendard-Medium.ttf
┃ ┃ ┣ 📜Pretendard-Regular.ttf
┃ ┃ ┣ 📜Pretendard-SemiBold.ttf
┃ ┃ ┗ 📜Pretendard-Thin.ttf
┃ ┣ 📂icons
┃ ┃ ┣ 📜accept-active.svg
┃ ┃ ┣ 📜accept.svg
┃ ┃ ┣ 📜alert-off.svg
┃ ┃ ┣ 📜alert-on.svg
┃ ┃ ┣ 📜arrow-down-line.svg
┃ ┃ ┣ 📜arrow-down.svg
┃ ┃ ┣ 📜arrow-right-light.svg
┃ ┃ ┣ 📜arrow-right.svg
┃ ┃ ┣ 📜arrow.svg
┃ ┃ ┣ 📜back.svg
┃ ┃ ┣ 📜bin.svg
┃ ┃ ┣ 📜cancle.svg
┃ ┃ ┣ 📜cart.svg
┃ ┃ ┣ 📜check-black.svg
┃ ┃ ┣ 📜check.svg
┃ ┃ ┣ 📜clock.svg
┃ ┃ ┣ 📜delete.svg
┃ ┃ ┣ 📜eco.svg
┃ ┃ ┣ 📜favorite-active.svg
┃ ┃ ┣ 📜favorite.svg
┃ ┃ ┣ 📜home-active.svg
┃ ┃ ┣ 📜home.svg
┃ ┃ ┣ 📜kakao.svg
┃ ┃ ┣ 📜levelup.svg
┃ ┃ ┣ 📜like.svg
┃ ┃ ┣ 📜list.svg
┃ ┃ ┣ 📜map-active.svg
┃ ┃ ┣ 📜map.svg
┃ ┃ ┣ 📜menu-active.svg
┃ ┃ ┣ 📜menu.svg
┃ ┃ ┣ 📜minus.svg
┃ ┃ ┣ 📜modal-check.svg
┃ ┃ ┣ 📜modal-warn.svg
┃ ┃ ┣ 📜msg-check.svg
┃ ┃ ┣ 📜msg-error.svg
┃ ┃ ┣ 📜my-active.svg
┃ ┃ ┣ 📜my.svg
┃ ┃ ┣ 📜order-active.svg
┃ ┃ ┣ 📜order.svg
┃ ┃ ┣ 📜Pencil.svg
┃ ┃ ┣ 📜plus.svg
┃ ┃ ┣ 📜region-gray.svg
┃ ┃ ┣ 📜region.svg
┃ ┃ ┣ 📜search-gray.svg
┃ ┃ ┣ 📜search.svg
┃ ┃ ┣ 📜star-gray.svg
┃ ┃ ┣ 📜star.svg
┃ ┃ ┣ 📜trash.svg
┃ ┃ ┗ 📜unlike.svg
┃ ┣ 📂images
┃ ┃ ┣ 📜chinese.webp
┃ ┃ ┣ 📜closedPin.png
┃ ┃ ┣ 📜dessert.webp
┃ ┃ ┣ 📜donuts.webp
┃ ┃ ┣ 📜empty-cart.webp
┃ ┃ ┣ 📜goroke.webp
┃ ┃ ┣ 📜gorokeone.webp
┃ ┃ ┣ 📜gwabegi.webp
┃ ┃ ┣ 📜gwabegione.webp
┃ ┃ ┣ 📜japanese.webp
┃ ┃ ┣ 📜korean.webp
┃ ┃ ┣ 📜level1.webp
┃ ┃ ┣ 📜level2.webp
┃ ┃ ┣ 📜level3.webp
┃ ┃ ┣ 📜level4.webp
┃ ┃ ┣ 📜login-img.webp
┃ ┃ ┣ 📜order-success.webp
┃ ┃ ┣ 📜pin.png
┃ ┃ ┣ 📜refood.webp
┃ ┃ ┣ 📜splash.png
┃ ┃ ┣ 📜street.webp
┃ ┃ ┗ 📜western.webp
┃ ┗ 📂lottie
┃ ┃ ┣ 📜earth.json
┃ ┃ ┣ 📜levelup.json
┃ ┃ ┗ 📜trees.json
┣ 📂components
┃ ┣ 📂cart
┃ ┃ ┣ 📜CartFooter.tsx
┃ ┃ ┣ 📜CartMenuItem.tsx
┃ ┃ ┗ 📜CartStoreHeader.tsx
┃ ┣ 📂environment
┃ ┃ ┣ 📜CountUp.tsx
┃ ┃ ┣ 📜KakaoButton.tsx
┃ ┃ ┗ 📜MetricBox.tsx
┃ ┣ 📂location
┃ ┃ ┗ 📜LocationItem.tsx
┃ ┣ 📂map
┃ ┃ ┗ 📜HearIcon.tsx
┃ ┣ 📂mypage
┃ ┃ ┗ 📜LevelProgress.tsx
┃ ┣ 📂order
┃ ┃ ┣ 📜LevelUpPopup.tsx
┃ ┃ ┣ 📜MenuItem.tsx
┃ ┃ ┣ 📜ReuseOption.tsx
┃ ┃ ┗ 📜RippleCircle.tsx
┃ ┣ 📂seller
┃ ┃ ┗ 📜MonthlySalesChart.tsx
┃ ┣ 📂signup
┃ ┃ ┣ 📜BusinessNumberInput.tsx
┃ ┃ ┣ 📜NicknameInput.tsx
┃ ┃ ┣ 📜PhoneNumberInput.tsx
┃ ┃ ┣ 📜PhonePrefixDropdown.tsx
┃ ┃ ┣ 📜RegionSelector.tsx
┃ ┃ ┗ 📜ValidationMessage.tsx
┃ ┣ 📂store
┃ ┃ ┣ 📜CategoryCarousel.tsx
┃ ┃ ┣ 📜CategoryHeader.tsx
┃ ┃ ┣ 📜HorizontalSnapList.tsx
┃ ┃ ┣ 📜LoadingFooter.tsx
┃ ┃ ┣ 📜ReviewItem.tsx
┃ ┃ ┣ 📜SearchSection.tsx
┃ ┃ ┣ 📜StarRating.tsx
┃ ┃ ┣ 📜StickyControls.tsx
┃ ┃ ┣ 📜StoreCard.tsx
┃ ┃ ┣ 📜StoreHeader.tsx
┃ ┃ ┣ 📜StoreListCard.tsx
┃ ┃ ┣ 📜StoreMap.tsx
┃ ┃ ┣ 📜StoreMenuItem.tsx
┃ ┃ ┗ 📜TopBar.tsx
┃ ┣ 📂_common
┃ ┃ ┣ 📜BackButton.tsx
┃ ┃ ┣ 📜CartButton.tsx
┃ ┃ ┣ 📜EmptyState.tsx
┃ ┃ ┣ 📜ItemSeparator.tsx
┃ ┃ ┣ 📜RestaurantList.tsx
┃ ┃ ┗ 📜Sort.tsx
┃ ┗ 📂_modal
┃ ┃ ┗ 📜CustomModal.tsx
┣ 📂constants
┃ ┣ 📜categoryImages.ts
┃ ┣ 📜colors.ts
┃ ┣ 📜environmentLevel.ts
┃ ┣ 📜keys.ts
┃ ┣ 📜messages.ts
┃ ┣ 📜modalStates.ts
┃ ┣ 📜navigations.ts
┃ ┗ 📜numbers.ts
┣ 📂hooks
┃ ┣ 📂queries
┃ ┃ ┣ 📜useAuth.ts
┃ ┃ ┣ 📜useCart.ts
┃ ┃ ┣ 📜useEnvironment.ts
┃ ┃ ┣ 📜useHistory.ts
┃ ┃ ┣ 📜useImage.ts
┃ ┃ ┣ 📜useLike.ts
┃ ┃ ┣ 📜useLocation.ts
┃ ┃ ┣ 📜useMap.ts
┃ ┃ ┣ 📜useMember.ts
┃ ┃ ┣ 📜useMyPage.ts
┃ ┃ ┣ 📜useNotification.ts
┃ ┃ ┣ 📜useOrder.ts
┃ ┃ ┣ 📜useReview.ts
┃ ┃ ┣ 📜useSeller.ts
┃ ┃ ┗ 📜useStore.ts
┃ ┣ 📂useAnimation
┃ ┃ ┗ 📜useRippleAnimation.ts
┃ ┗ 📂useNotification
┃ ┃ ┣ 📜index.ts
┃ ┃ ┗ 📜NotificationProvider.tsx
┣ 📂navigations
┃ ┣ 📂bottomTabs
┃ ┃ ┣ 📜SellerBottomTabsNavigator.tsx
┃ ┃ ┗ 📜UserBottomTabsNavigator.tsx
┃ ┣ 📂root
┃ ┃ ┗ 📜RootNavigator.tsx
┃ ┗ 📂stack
┃ ┃ ┣ 📜LoggedOutStackNavigator.tsx
┃ ┃ ┣ 📜SellerStackNavigator.tsx
┃ ┃ ┗ 📜UserStackNavigator.tsx
┣ 📂screens
┃ ┣ 📂auth
┃ ┃ ┗ 📜LoginScreen.tsx
┃ ┣ 📂cart
┃ ┃ ┗ 📜CartScreen.tsx
┃ ┣ 📂history
┃ ┃ ┣ 📜HistoryDetailScreen.tsx
┃ ┃ ┣ 📜HistoryHomeScreen.tsx
┃ ┃ ┗ 📜ReviewWriteScreen.tsx
┃ ┣ 📂like
┃ ┃ ┗ 📜LikeHomeScreen.tsx
┃ ┣ 📂location
┃ ┃ ┣ 📜LocationPostcodeScreen.tsx
┃ ┃ ┗ 📜LocationScreen.tsx
┃ ┣ 📂map
┃ ┃ ┣ 📜MapHomeScreen.tsx
┃ ┃ ┗ 📜NearStoreListScreen.tsx
┃ ┣ 📂mypage
┃ ┃ ┣ 📜GreenReportScreen.tsx
┃ ┃ ┣ 📜MypageHomeScreen.tsx
┃ ┃ ┣ 📜NicknameChangeScreen.tsx
┃ ┃ ┣ 📜PrivateScreen.tsx
┃ ┃ ┣ 📜ReviewScreen.tsx
┃ ┃ ┗ 📜RuleScreen.tsx
┃ ┣ 📂notification
┃ ┃ ┣ 📜InAppNotification.tsx
┃ ┃ ┗ 📜NotificationScreen.tsx
┃ ┣ 📂order
┃ ┃ ┣ 📜CouponBoxScreen.tsx
┃ ┃ ┣ 📜OrderScreen.tsx
┃ ┃ ┣ 📜OrderSuccessScreen.tsx
┃ ┃ ┣ 📜ProgressIndicator.tsx
┃ ┃ ┗ 📜TossPaymentScreen.tsx
┃ ┣ 📂seller
┃ ┃ ┣ 📜SellerCreateScreen.tsx
┃ ┃ ┣ 📜SellerMenuModifyScreen.tsx
┃ ┃ ┣ 📜SellerMenuRegisterScreen.tsx
┃ ┃ ┣ 📜SellerMenuScreen.tsx
┃ ┃ ┣ 📜SellerMypageScreen.tsx
┃ ┃ ┣ 📜SellerOrderScreen.tsx
┃ ┃ ┗ 📜SellerStoreReigster.tsx
┃ ┣ 📂signup
┃ ┃ ┣ 📜DaumPostcodeScreen.tsx
┃ ┃ ┣ 📜SellerSignupScreen.tsx
┃ ┃ ┣ 📜SignupTypeScreen.tsx
┃ ┃ ┗ 📜UserSignupScreen.tsx
┃ ┣ 📂store
┃ ┃ ┣ 📜CategoryListScreen.tsx
┃ ┃ ┣ 📜MenuDetailScreen.tsx
┃ ┃ ┣ 📜SearchResultScreen.tsx
┃ ┃ ┣ 📜StoreDetailScreen.tsx
┃ ┃ ┣ 📜StoreHomeScreen.tsx
┃ ┃ ┣ 📜StoreInfoScreen.tsx
┃ ┃ ┗ 📜StoreReviewScreen.tsx
┃ ┗ 📂_common
┃ ┃ ┣ 📜EmptyStateScreen.tsx
┃ ┃ ┗ 📜LoadingScreen.tsx
┣ 📂types
┃ ┣ 📜api.ts
┃ ┣ 📜domain.ts
┃ ┗ 📜postcode.ts
┣ 📂utils
┃ ┣ 📜address.ts
┃ ┣ 📜asyncStorage.ts
┃ ┣ 📜date.ts
┃ ┣ 📜encryptStorage.ts
┃ ┣ 📜format.ts
┃ ┣ 📜header.ts
┃ ┣ 📜level.ts
┃ ┣ 📜navigation.tsx
┃ ┣ 📜notification.tsx
┃ ┣ 📜pushNoti.js
┃ ┗ 📜toast.ts
┣ 📂zustand
┃ ┣ 📜useAuthStore.ts
┃ ┣ 📜useListScrollStore.ts
┃ ┗ 📜useSignupStore.ts
┗ 📜declarations.d.ts









