당신의 관공서 메이트,
![](https://private-user-images.githubusercontent.com/79795053/397267629-c2f5524f-253e-4be5-b045-b970982959ce.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyNjc2MjktYzJmNTUyNGYtMjUzZS00YmU1LWIwNDUtYjk3MDk4Mjk1OWNlLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhYWNlZjg3Yzg4YTAzZjU3MzA2YmY1MzdiYjNiMWM0NGIxMTE5Yzg1MDIwNzczMWUzZjNkYTJiOGYzMjA3YWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.pEsPiVjNr2NZ59JnIjCjG9DDmBbRuDxZFxRLm-u8EdQ)
![](https://private-user-images.githubusercontent.com/79795053/397288716-ecc36a3e-5842-4037-aae3-8488166d071f.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyODg3MTYtZWNjMzZhM2UtNTg0Mi00MDM3LWFhZTMtODQ4ODE2NmQwNzFmLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlMTkzNjFmNGFjNmUxZWE0ZjY4NDZjNTI5MmVkY2FmMTRkMmE2MDZlN2ZiZDgxOGMwM2Y4ZGVjODdjOTVlMGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.psMcGISTTT-cL5dZCOe_21gv9Eya97kbFCCJWg4qosg)
PM | DE | FE | FE | BE | BE |
---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
조맑음 | 유은재 | 고석환 | 민지우 | 이현동 | 이유진 |
@tkfkdtkfkdgoyo | @Jay17-design | @kosssshhhh | @JIUUOO | @hyundong-L | @ReasOon |
![](https://private-user-images.githubusercontent.com/79795053/397274928-aa7629a6-dbce-4c76-8f1a-2532eaac5734.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyNzQ5MjgtYWE3NjI5YTYtZGJjZS00Yzc2LThmMWEtMjUzMmVhYWM1NzM0LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY1YWVlMzI0YTFjMTY5OWUyN2QzODY1NTcxNjg4ZGM5ZTk4NWZiNTY1Y2UyMzUyM2E4ZThiZmI1NGNmYTAwOWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.UUr4_gFq5ar69CmURDsgnCMkqhxYDKwkmZ3dRJcxo3I)
![](https://private-user-images.githubusercontent.com/79795053/397275465-8c047e21-1e8a-41cf-838e-24ef6a10d2e0.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyNzU0NjUtOGMwNDdlMjEtMWU4YS00MWNmLTgzOGUtMjRlZjZhMTBkMmUwLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiYmQwMDdlOTAzYjY2NGVmNDQ1OGE1MzgzZDBhMmE4NTlhMDMzMGFkYjU1ZjJjNjRiM2E2ODNhYjA2MDVmNTkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.tEpttfZB7zMS-IhZ_oyVa8rrHft-zpo3aJdzQjKNlP0)
![](https://private-user-images.githubusercontent.com/79795053/397275701-913affc3-3d96-4307-8b45-5ab7e0f2b63f.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyNzU3MDEtOTEzYWZmYzMtM2Q5Ni00MzA3LThiNDUtNWFiN2UwZjJiNjNmLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA0MjlkMDg5ZGYxYTFlMGI3OGE1ODA4N2E3ZTM5YjAyNTI3MGNkYjBkZjM2YzYzM2U5NTFlOTBiYjFjY2EwMmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.rk_FrjeuZKhkHFzAMaCMq9FRLfHVwnsOC4dtkvEmFwo)
![](https://private-user-images.githubusercontent.com/79795053/397284001-7932f3c2-154c-40fd-adc1-9fb179b6c83c.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyODQwMDEtNzkzMmYzYzItMTU0Yy00MGZkLWFkYzEtOWZiMTc5YjZjODNjLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYwNGMxMjQ2ZGQ3ZmFlMGEzN2M1N2FhNmVkY2RkZWYyZDQ0YjQ3NGJjMzIxZTUwOWQwYzI2ZmM0ZDM3Zjc1ZDcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.qfqIPTnAz27_BbxsjFLvEkeFDdlRmO9BXGK_6DVPg4w)
![](https://private-user-images.githubusercontent.com/79795053/397284160-68024a07-bd11-4049-8d08-9032a52b0c63.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyODQxNjAtNjgwMjRhMDctYmQxMS00MDQ5LThkMDgtOTAzMmE1MmIwYzYzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNiZDk5MTY2YjI5ZTM5NjBhMjhlM2ExZmU0MWQ0M2I3OWQ0Y2FiNDNiYTdmMTZjNTFjOWI0MzRkMTkzMzI4YmEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zhwlhWLXE2xVYj8fCRF0cgvhno5NiITj1PmsaCyzdhA)
![](https://private-user-images.githubusercontent.com/79795053/397284285-5abe2924-7d01-4971-836d-52171befa397.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyODQyODUtNWFiZTI5MjQtN2QwMS00OTcxLTgzNmQtNTIxNzFiZWZhMzk3LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA3OTNhMWVjNTM3NzQ4YzEwYWRhMGIzYTU5N2Q3ODUxOGNiMTdlZDc0YWE2Y2YzNDM5YzE3NjU0ZTU1ZmY0YWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.el6WVPMRUps7ph_nIvPtekfpnAPJDSBV68yZ7Nb-5Vs)
🔗 https://www.youtube.com/watch?v=csPvDX7mj1g
![](https://private-user-images.githubusercontent.com/79795053/397284927-9ecf2483-401b-4e9e-881a-d2c137d3f6c4.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyODQ5MjctOWVjZjI0ODMtNDAxYi00ZTllLTg4MWEtZDJjMTM3ZDNmNmM0LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkyNjMwNjMyYzMwM2QwZjM4ZDIwMjQwN2U5OGViNjgwMjIwYjk0NjMwZWE5ZTgwZDkwOTMzZWQ1MjQxZDg4YjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.dPyy-_F0R2ldt7eBlEJRag3BPPWljq2yJ8mtCgsmwj4)
![](https://private-user-images.githubusercontent.com/79795053/397284980-7deb9464-7a6d-4d32-93b6-9ae0d397c7bf.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyODQ5ODAtN2RlYjk0NjQtN2E2ZC00ZDMyLTkzYjYtOWFlMGQzOTdjN2JmLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThlMDZmNTQwZWQ4YzUyMmE1ZDI3ZjY5YjcwYmNlODUwYTE3MmUxOTNhNDAwZmM4ZDE1ODhhMTIzZDBmZTFmODQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.EdOpfkIfZVAh8TtSwrMYpwXdQuL4uhi75CRtBS20OaA)
![](https://private-user-images.githubusercontent.com/79795053/397285043-c0aea999-78e1-4a64-bcb5-e873b545c847.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg4NTQ3MzUsIm5iZiI6MTczODg1NDQzNSwicGF0aCI6Ii83OTc5NTA1My8zOTcyODUwNDMtYzBhZWE5OTktNzhlMS00YTY0LWJjYjUtZTg3M2I1NDVjODQ3LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA2VDE1MDcxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlYzllN2QyZjBmOGZiYjFmOGYwZTRmZWM1M2IxMTlkODE5YmM5NDRhMWNkZWE4ZTkyZjA2MWJiNDNmYTZkZjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jaTz6esN14RsKYzizhaI9c9mOwzRIyEyf9Z4YHAnU6s)
![]() |
![]() |
![]() |
---|---|---|
기획 배경 |
문제 제시 |
솔루션 |
📦 프로젝트 루트
├── public # 정적 파일 디렉토리
│ └── ... # 서비스 워커, 이미지 등 정적 자원
├── src # 소스 코드 디렉토리
│ ├── api # API 호출 및 클라이언트 설정 관련 코드
│ │ ├── http # ky HTTP 클라이언트 모듈화
│ │ ├── queryClient # React Query 클라이언트 설정
│ │ └── ...
│ ├── assets # 이미지, 폰트, SVG 등 정적 자산
│ │ └── ...
│ ├── components # 재사용 가능한 UI 컴포넌트
│ │ ├── Header.tsx # 헤더 컴포넌트
│ │ ├── Footer.tsx # 푸터 컴포넌트
│ │ └── ...
│ ├── hooks # 커스텀 훅 정의
│ │ └── useExample.ts # 예제 커스텀 훅
│ ├── layout # 레이아웃 관련 컴포넌트
│ │ ├── MainLayout.tsx # 메인 레이아웃
│ │ └── ...
│ ├── mocks # MSW를 사용한 목킹 데이터 및 설정
│ │ ├── browser.ts # MSW 브라우저 설정
│ │ └── handlers.ts # API 목킹 핸들러
│ ├── pages # 라우트에 매핑되는 페이지 컴포넌트
│ │ ├── Home.tsx # 홈 페이지
│ │ └── ...
│ ├── routes # 라우터 설정 파일
│ │ └── mainRoutes.tsx# 라우트 정의
│ ├── store # 전역 상태 관리 관련 코드
│ │ └── useStore.ts # Zustand 기반 상태 관리 훅
│ ├── types # TypeScript 타입 정의
│ │ └── common.ts # 공통 타입
│ ├── utils # 유틸리티 함수 모음
│ │ └── helpers.ts # 헬퍼 함수
│ └── main.tsx # 애플리케이션 진입점
├── package.json # 프로젝트 설정 및 종속성 관리 파일
├── vite.config.ts # Vite 설정 파일
├── tsconfig.json # TypeScript 설정 파일
└── README.md # 프로젝트 설명서
라이브러리 | 버전 | 설명 |
---|---|---|
react | 18.3.1 | 인터페이스를 구축하기 위한 라이브러리 |
react-dom | 18.3.1 | React 컴포넌트의 DOM 렌더링 도구 |
react-router-dom | 6.28.0 | React 기반의 라우팅 라이브러리 |
@tanstack/react-query | 5.60.5 | 서버 상태 관리를 위한 라이브러리 |
zustand | 5.0.1 | 간단하고 빠른 전역 상태 관리 라이브러리 |
ky | 1.7.2 | HTTP 요청을 간결하게 처리하는 클라이언트 |
lodash | 4.17.21 | 데이터 조작을 위한 유틸리티 라이브러리 |
tailwindcss | 3.4.15 | 유틸리티 기반의 CSS 프레임워크 |
msw | 2.6.5 | API Mocking 라이브러리 |
vite | 5.4.10 | 빠르고 가벼운 빌드 도구 |
typescript | 5.6.2 | 정적 타입 체크 및 향상된 코드 품질 제공 |
@vitejs/plugin-react-swc | 3.5.0 | Vite에서 React를 SWC로 빌드하기 위한 플러그인 |