프로젝트 소개는 아래 포스팅에서 확인하실 수 있습니다.
따꼼 | 헬스케어 및 건강관리 서비스 프로젝트 소개
1. 프로젝트 소개프로젝트 "따꼼"은 어린이 필수 예방접종 정보를 제공하고, 체크리스트와 캘린더를 통해 예방접종 진행 상황을 확인할 수 있는 웹 플랫폼을 만드는 프로젝트로, 예방접종 관련
seheej.tistory.com
이 포스팅에서는 이번 프로젝트에서 제가 맡은 기능과 계획을 나누어 설명하겠습니다.
1. 사용자가 입력한 아이의 생년월일을 기반으로 이번달 접종 리스트 보여주기
- 접종 데이터 로드: 연령별 접종 스케줄 데이터를 불러와야 함. 사용자로 부터 생년월일을 입력받으면, 현재 날짜와 생년월일을 기준으로 아이가 맞아야 하는 백신 리스트를 필터링해서 보여줄 수 있음
- 백엔드 로직: 생년월일로 아이의 나이를 계산하고, 나이에 맞는 접종 리스트를 DB에서 가져오기
- 프론트엔드: 이번 달 접종 리스트를 컴포넌트로 만들어서 아이 카드 페이지에 표시
2. 이전달/다음달 보기 버튼 구현
- 이전달/다음달 기능: 이전달 보기와 다음달 보기 버튼을 클릭하면, 해당 달의 접종 리스트로 변경되야함
- 버튼 클릭 시 달(month)을 기준으로 계산해서 요청을 보내면 해당 달의 접종 리스트를 다시 불러올 수 있음
- 예를 들어, 현재 달이 10월이면 버튼 클릭 시 9월이나 11월 접종 리스트로 이동
3. 전체 접종 체크리스트 페이지로 이동 버튼
- 페이지 전환: 전체 접종 체크리스트로 이동하는 버튼을 아이 카드 페이지에 추가해야 함
- 전체 접종 체크리스트 페이지로 이동하도록 라우팅 설정
4. 전체 접종 체크리스트 페이지
- 접종 완료 표시: 사용자가 백신을 맞았다고 표시할 수 있는 체크박스를 제공. 해당 항목을 체크하면 접종 완료 상태가 저장됨
- 프론트엔드: 체크박스 UI를 만들어서 클릭 시 접종 완료 상태를 업데이트
- 백엔드 연동: 접종 완료 여부를 서버에 저장하는 API 요청을 만들어야 함
- 아이 카드 페이지와 체크리스트 페이지 상태 연동: 아이 카드 페이지에서 접종 리스트에 있는 항목들이 접종 완료 상태인지 확인할 수 있어야 함
- 상태 공유: 전체 체크리스트에서 접종 완료된 항목은 Zustand 같은 상태 관리 라이브러리를 사용해서 아이 카드 페이지에서도 상태를 유지하도록 할 수 있음
- 상태 업데이트: Zustand나 useState로 상태를 공유하여 두 페이지 간에 접종 완료 여부가 실시간으로 반영되게 할 수 있음
서비스기획 (디자인은 변경될 수 있음)



1. 아이 카드 페이지 기능
우리아이등록하기 버튼
- 페이지 상단에 "우리아이등록하기" 버튼을 생성합니다.
- 버튼 클릭 시 아이등록하기 페이지로 이동이 되며, 두 단계로 정보를 입력받습니다.
- 1단계: 사용자의 아이 정보 (이름, 생년월일, 특이사항)를 입력합니다.
- 2단계: 접종 완료 내역을 선택합니다. 왼쪽에는 예방접종명, 오른쪽에는 몇 회차 접종을 했는지 선택할 수 있는 리스트가 표시됩니다. 완료 버튼 클릭 시 정보가 등록됩니다.
등록된 아이의 정보 카드
- 버튼 아래에는 등록된 아이의 정보가 카드 형태로 표시됩니다.
- 카드 왼쪽: 아이의 프로필 이미지, 이름, 생년월일, 특이사항, 수정하기 버튼
- 카드 오른쪽: 생년월일에 기반하여 이번 달 (10월)에 맞아야 하는 접종 리스트 및 전체 접종 체크리스트 페이지로 이동할 수 있는 버튼.
- 이전 달/다음 달 보기 버튼을 통해 다른 달의 접종 리스트도 볼 수 있습니다.
전체 접종 체크리스트
- 전체 접종 체크리스트 페이지에서 접종 완료 항목을 표시할 수 있으며, 이 정보를 아이 카드 페이지의 접종 리스트와 연동해 완료 여부를 구분할 수 있도록 해야 합니다.
작업순서
1) 프로젝트 초기 설정
- TypeScript 환경 설정: TypeScript를 사용하기 위해 필요한 설정을 진행합니다.
- 모듈 설치: 필요한 패키지 (React, Supabase 등)를 설치합니다.
- 파일 구조 설정를 다음과 같이 생성 예정입니다.
src/
├── components/
│ └── child/
│ ├── ChildCard.tsx # 등록된 아이 정보 표시 컴포넌트
│ ├── RegisterButton.tsx # 등록하기 버튼 컴포넌트
│ ├── RegisterForm.tsx # 아이 등록 폼 (1단계 및 2단계 포함)
│ └── VaccinationList.tsx # 접종 리스트 컴포넌트
├── app/
│ └── child/
│ ├── [id]
│ │ ├── childinfo
│ │ │ ├── page.tsx
│ │ └── record
│ │ └── page.tsx
│ ├── page.tsx # 아이 카드 페이지 메인 엔트리
│ └── register/
│ ├── page.tsx # 아이 등록하기 페이지 메인 엔트리
│ └── steps/ # 단계별 컴포넌트를 포함하는 디렉토리
│ ├── RegisterChildInfo.tsx # 1단계: 아이 기본 정보 입력
│ └── RegisterChildRecord.tsx # 2단계: 접종 내역 선택
2)아이 카드 페이지 구현 ✅
- 파일 생성: src/app/child/page.tsx
- 기본 레이아웃 구성: 페이지 상단에 "우리아이 등록하기" 버튼과 카드 영역을 포함하는 레이아웃을 구현합니다.
- 컴포넌트 연결: 컴포넌트를 불러와 카드 레이아웃을 완성합니다.
- RegisterButton: 아이 등록하기 버튼 컴포넌트
- ChildCard: 등록된 아이 정보를 표시하는 카드 부분 (아이 기본정보와 접종리스트, 접종 내역을 포함함)
3) 아이 등록 페이지 구현 ✅
- 파일 생성: src/app/child/register/page.tsx
- 기본 레이아웃 구성: 페이지에서 RegisterForm 컴포넌트를 호출하여 아이 등록 절차를 관리
4) 우리아이 등록하기 버튼 컴포넌트 구현 ✅
- 파일 생성: src/_components/child/RegisterButton.tsx
- 버튼 구현: 클릭 시 등록 페이지로 이동하는 버튼을 구현
5) RegisterForm 컴포넌트 구현 ✅
- 파일 생성: src/_components/child/RegisterForm.tsx
- 단계별 렌더링: 1단계(기본 정보 입력)와 2단계(접종 내역 선택)를 관리하는 로직을 구현합니다.
- 상태 관리: 현재 단계 및 입력된 정보를 상태로 관리합니다.
6) 아이 카드 컴포넌트 구현 ✅
- 파일 생성: src/_components/child/ChildCard.tsx
- 등록된 아이 정보를 표시: 프로필 이미지, 이름, 생년월일, 특이사항을 표시하는 UI를 구현
- 수정 버튼: 수정하기 버튼을 클릭 시 수정 페이지로 이동할 수 있는 기능 추가
- 접종 리스트 표시: 생년월일을 기반으로 이번 달 접종 리스트와 이전/다음 달 보기 버튼 추가
7) 아이등록 1단계: 아이 기본 정보 입력 구현 ✅
- 파일 생성: src/_components/child/steps/RegisterChildInfo.tsx
- 폼 구성: 이름, 생년월일, 특이사항 입력 필드를 포함하는 폼을 구현합니다.
- 유효성 검사: 입력값에 대한 유효성 검사를 추가하여 오류 메시지를 표시합니다.
8) 아이등록 2단계: 접종 내역 선택 구현 ✅
- 파일 생성: src/_components/child/steps/RegisterChildRecord.tsx
- 접종 내역 표시: 사용자가 선택할 수 있는 접종 목록을 표시합니다.
- 상태 관리: 선택된 접종 내역을 부모 컴포넌트에 전달하여 상태를 업데이트합니다.
9) 접종 체크 리스트 컴포넌트 구현 ✅
- 파일 생성: src/_components/child/VaccinationList.tsx 파일을 생성합니다.
- 리스트 표시: 현재 아이가 맞아야 하는 접종 리스트와 전체 체크리스트 페이지로 이동하는 버튼을 구현합니다.
- 달 전환 기능: 이전달/다음달 보기 버튼을 추가하여 다른 달의 접종 리스트를 확인할 수 있도록 합니다.
10) 데이터 관리 및 API 연동 ✅
- Supabase 클라이언트 설정: client.ts 파일에서 Supabase 클라이언트를 설정하여 데이터베이스와 연결합니다.
- 데이터 가져오기 및 저장하기:
- 아이 등록 시 Supabase에 데이터를 저장하는 API 연동
- 카드 컴포넌트에서 등록된 아이 정보를 Supabase에서 가져오는 로직 추가
11) 상태 관리 및 라우팅 ✅
- 상태 관리: 각 컴포넌트에서 필요한 상태를 관리할 수 있도록 설정합니다 (예: Redux, Context API 등 사용).
- 라우팅 설정: 아이 카드 페이지와 등록 페이지 간의 라우팅을 설정하여 사용자가 쉽게 이동할 수 있도록 합니다.
12) 스타일링 및 마무리 ✅
- 스타일링: Shadcn의 Form 및 Tailwind CSS를 사용하여 모든 페이지와 컴포넌트를 스타일링합니다.
- 코드 주석 추가 및 문서화: 구현한 기능에 대한 주석과 문서를 작성합니다.
- 테스트: 각 기능이 정상적으로 작동하는지 확인하고, 사용자 경험을 개선할 수 있는 부분을 최종 점검합니다.
'🚀 프로젝트 > 따꼼' 카테고리의 다른 글
| 따꼼 트러블 슈팅 | 아이 접종 리스트 데이터 전송 오류 해결 과정 (0) | 2024.11.12 |
|---|---|
| 따꼼 트러블 슈팅 | React 프로젝트의 자녀 정보 조회 오류 해결 (0) | 2024.11.11 |
| 따꼼 트러블 슈팅 | Supabase 이미지 업로드 오류 수정 error 403 (0) | 2024.11.10 |
| 따꼼 트러블 슈팅 | 사용자 기본 정보 저장 오류 해결 과정 (0) | 2024.11.09 |
| 따꼼 | 헬스케어 및 건강관리 서비스 프로젝트 소개 (0) | 2024.10.23 |